CPU调度算法 读操作系统概念第六版

来源:互联网 发布:2016年淘宝双十一活动 编辑:程序博客网 时间:2024/05/13 07:52

 先到先服务调度,FCFS调度算法(非抢占式)

当一个进程进入到就绪队列,其PCB被链接到队列的尾部。当CPU空闲时,CPU被分配给位于队列头的进程。接着,该运行进程从队列中被删除。FCFS调度的代码编写简单且容易理解。

 

最短作业优先调度算法,SJF调度算法(抢占式或非抢占式)

当CPU为可用时,它会赋给具有最短后续CPU区间的进程。如果两个进程具有同样长度的CPU区间,那么可以使用FCFS调度来处理。

SJF算法可能是抢占的或非抢占的。当一个新进程到达就绪队列而以前进程正在执行时,就需要选择。新进程,与当前运行进程所产生的CPU区间相比,可能有一个更短的下一个CPU区间。可抢占SJF算法可能会抢占当前运行进程,而非抢占SJF算法会允许当前运行进程完成其CPU区间。可抢占SJF调度有时称为最短剩余时间优先调度

 

优先权调度算法

每个进程都由一个优先权与其关联,具有最高优先权的进程会被分配到CPU。具有相同优先权的进程按FCFS顺序调度。

 

轮转法(round-robin,RR)调度算法

 轮转法调度算法是专门为分时系统而设计的。它类似于FCFS调度,但是增加了抢占以在进程间切换。定义一个较小时间单元,称为时间量或时间片。时间片通常为10ms到100ms。就绪队列作为循环队列处理。CPU调度程序循环就绪队列,为每个进程分配不超过一个时间片间隔的CPU。

为了实现RR调度,将就绪队列实现为进程的FIFO队列。新进程增加到就绪队列的尾部。CPU调度程序从就绪队列中选择第一个进程,设置定时器在一个时间片之后中断,最后分派该进程。接着,有两种情况可能发生。进程可能只需要小于一个时间片的CPU区间。对于这种情况,进程本身会自动释放CPU。调度程序接着会处理就绪队列的下一个进程。另一种情况是,当前运行进程的CPU区间比一个时间片要长,定时器会中断并产生操作系统中断。进行上下文切换,该进程会被加入到就绪队列的尾部。接着,CPU调度程序会选择就绪队列中的下一个进程。

多级队列调度

 

原创粉丝点击