操作系统单处理机进程调度
基本概念
在没有进行进程调度之前,一个进程始终允许以最大化CPU利用率运行。这种想法比较简单。也存在时间浪费的问题。比如一个进程如果要等待I/O请求,那么此时的CPU资源处于空闲状态,如果没有抢占或者调度,其他程序就算是计算密集型也要一直等待这个进程请求I/O完成并运行结束才可以占用CPU资源。因此,进程调度是操作系统设计的一个重要部分,它允许一个进程等待时,另一个进程接管CPU使用权。
调度算法
先到先服务调度(First-Come First-Served FCFS)
先来先服务是CPU调度算法中最简单的一种方案。它要求先请求CPU的进程首先分配CPU。这个策略可以通过FIFO队列很容易实现。当一个新的进程就绪时,它的PCB就会被链接到队列的尾部。当CPU空闲时,它就会分配资源给队列头部的进程,并且将该进程从队列中移除。FCFS的缺点是平均等待时间往往比较长。可能会发生一种情况是:CPU密集型的进程在I/O密集型的前边运行,那么所有的I/O密集进程都要等待这个CPU密集进程执行完毕,但是众所周知CPU密集进程又需要占用CPU很长一段时间,而I/O密集的却占用很短时间。这就造成了很多时间短的进程等待一个时间十分长的进程,这个线程被戏称为护航效果
举个例子:如果有3个进程按照P1、P2、P3进入就绪队列,他们的运行时间如下:
进程 | 执行时间 |
---|---|
p1 | 24 |
p2 | 3 |