Linux内核分析第四章 读书笔记
Linux内核分析第四章 读书笔记
第一部分--进程调度
进程调度:操作系统规定下的进程选取模式
面临问题:多任务选择问题
多任务操作系统就是能同时并发地交互执行多个进程的操作系统,在单处理器机器上这会产生多个进程在同时运行的幻觉,在多处理器机器上,这会使多个进程在不同的处理机上真正同时、并行地运行。无论在单处理器或者多处理器机器上,多任务操作系统都能使多个进程处于堵塞或者睡眠状态,也就是说,实际上不被投入执行,直到工作确实就绪。
多任务系统可以划分为两类:非抢占式多任务和抢占式多任务。Linux提供了抢占式的多任务。
策略选择:
一般选择任务方式可以分为:当一个进程正在运行时,系统可以基于某种原则,剥夺已分配给它的处理机,将之分配给其它进程。剥夺原则有:优先权原则、短进程优先原则、时间片原则。
优先级:每个任务进程都有自己的进入等级,高者先行进入
时间片:根据基本时间单位来选择进程
通常linux将他们进行结合运用
算法提供:
先进先出算法:算法总是把处理机分配给最先进入就绪队列的进程,一个进程一旦分得处理机,便一直执行下去,直到该进程完成或阻塞时,才释放处理机。
短进程优先:最短CPU运行期优先调度算法,该算法从就绪队列中选出下一个“CPU执行期最短”的进程,为之分配处理机。
轮转法:在分时系统中,都采用时间片轮转法。简单轮转法:系统将所有就绪进程按FIFO规则排队,按一定的时间间隔把处理机分配给队列中的进程。这样,就绪队列中所有进程均可获得一个时间片的处理机而运行。多级队列方法:将系统中所有进程分成若干类,每类为一级。
linux通常使用公平性算法:
CFS算法:需要选择下一个运行进程时,它会挑一个具有最小vruntime的进程,这其实就是CSF调度算法的核心:选择具有最小、vruntime的任务。那么剩下的内容我们就来讨论到底是如何实现选择具有最小、vruntime值的进程。Linux中,红黑树称为rbtree,它是一个自平衡二叉搜索树,红黑树是一种以树节点形式存储的数据,这些数据都会对应一个键值,我们可以通过这些键值来快速检索节点上的数据
选择结构为红黑树,节点为最小节点
第二部分--进程的上下文切换
总结:
对于我们关于进程调度,基本的思想就是怎么有限的资源尽最大能力利用,使用的手段有助于我们解决问题,进程调度的方式也是计算机操作系统不可避免的问题,我们可以假设CPU就是我们的日常生活中的资金,怎样更好的支出与收入直接影响到我们的日常生活,进程调度的方向我认为现在在于扩大CPU的总操作量的同时,引入一个审核机构,进行判断进程的需求度与可以利用资源的最小空间,把不需要恢复或者作用不大的部分给予上下文恢复与保存,或者对进程间相似部分进行替换即可,可以引入更小的操作单位,向线程,在进程共同应用的时候,将其保留一份提供给2个进程来达到共享的目的。