随笔分类 -  操作系统

操作系统 | 上下文切换
摘要:原创:享学课堂讲师Peter 转载请声明出处! 什么是上下文切换? 其实在单个处理器的时期,操作系统就能处理多线程并发任务。处理器给每个线程分配 CPU 时间片(Time Slice),线程在分配获得的时间片内执行任务。 CPU 时间片是 CPU 分配给每个线程执行的时间段,一般为几十毫秒。在这么短 阅读全文
posted @ 2019-12-13 09:00 淡然~~浅笑
CPU | 物理 CPU vs 逻辑 CPU vs 核心 vs 线程 vs Socket
摘要:当我们试着通过 Linux 命令 nproc 和 lscpu 了解一台计算机 CPU 级的架构和性能时,我们总会发现无法正确地理解相应的结果,因为我们会被好几个术语搞混淆:物理 CPU、逻辑 CPU、虚拟 CPU、核心、线程和 Socket 等等。如果我们又增加了超线程(不同于多线程),我们就会开始 阅读全文
posted @ 2019-09-04 22:47 淡然~~浅笑
进程 | 线程 | 当Linux多线程遭遇Linux多进程
摘要:背景 本文并不是介绍Linux多进程多线程编程的科普文,如果希望系统学习Linux编程,可以看[《Unix环境高级编程》第3版] 本文是描述多进程多线程编程中遇到过的一个坑,并从内核角度分析其原理。这里说的多进程多线程并不是单一的多进程或多线程,而是多进程和多线程,往往会在写一个大型应用时才会用到多 阅读全文
posted @ 2019-09-04 22:39 淡然~~浅笑
IO调度 | Linux块设备中的IO路径及调度策略
摘要:当文件系统通过submit_bio提交IO之后,请求就进入了通用块层。通用块层会对IO进行一些预处理的动作,其目的是为了保证请求能够更加合理的发送到底层的磁盘设备,尽量保证性能最佳。这里面比较重要的就是IO调度模块。大家可能都听说过CFQ,除此之前还有DeadLine和Noop等,这些都是磁盘的调度 阅读全文
posted @ 2019-09-04 22:28 淡然~~浅笑
进程| 线程 | 阻塞 | 阻塞&非阻塞 和 同步&异步
摘要:阻塞&非阻塞 阻塞IO 调用之后一定要等到系统内核完成所有的操作之后才结束,因此它的缺点:CPU等待IO,处理能力得不到充分利用。 非阻塞IO 为了解决阻塞IO带来的一些问题,内核提供了非阻塞IO,非阻塞IO的差别是调用之后会立即返回。缺点:非阻塞IO立即返回并不是业务层期望的数据,而仅仅是 阅读全文
posted @ 2019-09-04 22:20 淡然~~浅笑
性能测试 | 进程线程解说
摘要:进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。 最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂。 1. 计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。 2. 假定工厂的电力有限,一次只能供给一个车间使 阅读全文
posted @ 2019-09-03 10:42 淡然~~浅笑
操作系统 | 结合 CPU 理解一行 Java 代码是怎么执行的
摘要:根据冯·诺依曼思想,计算机采用二进制作为数制基础,必须包含:运算器、控制器、存储设备,以及输入输出设备,如下图所示。 我们先来分析 CPU 的工作原理,现代 CPU 芯片中大都集成了,控制单元,运算单元,存储单元。控制单元是 CPU 的控制中心, CPU 需要通过它才知道下一步做什么, 阅读全文
posted @ 2019-09-03 09:33 淡然~~浅笑