操作系统教程OS 孙忠秀操作系统

6、处理器调度1(操作系统笔记)

2016-12-29  本文已影响129人  yjaal

一、CPU调度的相关概念

1.1 cpu调度

其任务是控制、协调进程对cpu的竞争,即按一定的调度算法从就绪队列中选择一个进程,把cpu的使用权交给被选中的进程。如果没有就绪进程,系统会安排一个系统空闲进程或idle进程进入cpu运行。

1.2 系统场景

1.3 cpu调度要解决的三个问题

1.3.1 调度的时机

cpu在运行时会发生很多事件:

这些事件发生后-->当前运行的进程暂停执行-->硬件机制响应后-->进入操作系统,处理相应的事件-->结束处理后:某些进程的状态会发生变化,也可能又创建了一些新的进程-->就绪队列改变了-->需要进程调度根据预设的调度算法从就绪队列选择一个进程

进程调度的时机有四个:

总的来说调度的时机一般就是内核对中断、异常、系统调用处理后返回到用户态时。

1.3.2 调度过程(进程切换)

进程切换一般有两部分工作:

总的来说,切换进程包括了对原来运行进程各种状态的保存和对新的进程各种状态的恢复。

上下文切换具体步骤:
场景:进程Acpu,进程Bcpu

上下文切换的开销:

1.3.3 cpu调度算法的设计

什么情况下需要仔细斟酌调度算法?

调度算法的衡量指标

二、设计调度算法前的要点

2.1 进程优先级(数)

优先级和优先数是不同的,优先级表现了进程的重要性和紧迫性,优先数实际上是一个数值,反映了某个优先级。

2.2 进程就绪队列组织

2.3 占用cpu的方式

通常有两种方式,即抢占式和非抢占式。

2.4 I/O密集型与cpu密集型进程

按进程执行过程中的行为划分:

2.5 时间片(Time slice或quantum)

一个时间段,分配给调度上cpu的进程,确定了允许该进程运行的时间长度。那么如何选择时间片?有一下需要考虑的因素:

三、批处理系统中常用的调度算法

在批处理系统中调度算法主要考虑的是吞吐量、周转时间、cpu、公平/平衡。

3.1 先来先服务算法

4

那能否改变调度顺序来提供效率呢?


5

3.2 短作业优先SJF和最短剩余时间优先

如果我们将短作业优先进行改进,改进为抢占式,这就是最短剩余时间优先算法了,即一个新就绪的进程比当前运行进程具有更短的完成时间,系统抢占当前进程,选择新就绪的进程执行。例如:


6

优缺点:

3.3 最高响应比优先

四、交互式系统的调度算法

4.1 时间片轮转调度算法

7
说明:首先当前进程是B,当B的时间片用完后就被放在队列的尾部,此时当前进程就是F

如何选择合适的时间片?

优缺点:

小结:此算法往往不区分是I/O密集型还是cpu密集型,所以会给I/O```密集型进程带来一下不公平,下面看虚拟轮转算法。

虚拟轮转法:

11
说明:按照之前的时间片算法,对于I/O型进程时是不公平的,因为它总是用不完时间片,但是调度之后都要重新进入就绪队列进行排队,这样显然不公平。于是就设计了上图的调度算法。为I/O型进程专门设计了一个辅助队列,当一个I/O进程运行完之后不进入就绪队列,而是进入辅助队列,同时cpu也优先去调度辅助队列中的进程,知道辅助队列中为空,才去就绪队列中选择进程。

4.2 最高优先级调度算法

优先级反转问题:
主要出现在基于优先级的抢占式调度算法中。表现为,一个低优先级进程持有一个高优先级进程所需要的资源,使得高优先级进程等待低优先级进程运行。例如:

12
上一篇 下一篇

猜你喜欢

热点阅读