cpu调度是多道程序设计的基础。本文是对操作系统概念(第七版)第五章——cpu调度的学习总结,不足之处欢迎各位博友提出,共同进步。
本文内容:
1、介绍cpu调度常见概念。
2、介绍cpu调度算法以及特点。
(1)cpu调度决策发生的情况:
a、当一个进程从运行态到等待状态。(I/O请求)
b、运行状态到就绪态(中断)
c、等待状态到运行态
d、一个进程终止
其中a,d是非抢占的,b,c是抢占的。
(2)调度准则
a、cpu使用率
b、吞吐量(单位时间内可以完成的进程数量)
c、周转时间(进程提交到完成所需要的总时间)
d、等待时间(进程在就绪队列中等待所花费的总时间)
e、响应时间(提交请求到第一响应的时间(开始响应))
(3)调度算法
a、先到先服务调度(FCFS)
缺点:平均等待时间通常比较长。
特点:非抢占的。
b、最短作业优先调度(SJF)
特点:最佳的,但困难在于无法确定下一个cpu区间的长度。可以是抢占和非抢占的。抢占SJF调度又称为最短剩余时间优先调度。
解决:近似SJF调度:t(n+1)=ax(n)+t(n),x(n)为第n个区间cpu的长度。
c、优先级调度
特点:可抢占,可非抢占。
问题:无穷阻塞/饥饿,即优先级低的可能一直得不到cpu
解决:老化技术,随着时间优先级提高。
d、轮转法调度(RR)
特点:分配时间片,是可抢占的(运行时间超过时间片,则被抢占)
缺点:平均等待时间较长。
e、多级队列调度
特点:多个队列,每个队列的优先级不同,并且在不同的队列可以采用不同的调度算法。
缺点:进程无法在不同的队列中进行移动。
f、多级反馈队列调度
特点:进程无法在不同的队列中进行移动,这是最通用的调度算法,但也最复杂。
(4)多处理器调度
a、非对称多处理,(由一个处理器处理所有的调度等)
b、对此多处理(smp),每个处理器自我调度。
(5)处理器亲和性
本质就是努力是一个进程在一个处理器中运行,而不在处理器之间进行移动。
原因:移动之后得重新建立缓存,时间开销大。
(6)负载平衡
目标:是cpu能够平衡利用,不会导致某个cpu负载过重,而另外的空闲。
两种方法:push migration和pull migration.
负载平衡和处理器亲和性是冲突的。
(7)对称多线程(超线程)
思路:将一个物理处理器分成多个逻辑处理器,超线程是基于硬件而不是软件的,每个逻辑处理器有自己的架构状态。