0 24 27 30
平均等待时间:(0+24+27)÷3=17
平均周转时间:(24+27+30)÷3=27
如果按照 P2P3P1 顺序到达,
平均等待时间:(0+3+6)÷3=3
平均周转时间:(3+6+30)÷3=13
另外考虑在动态情况下的性能,假设有一个 CPU 约束进程和许多 I/O 约束进
程,CPU 约束进程会移回到就绪队列并被分配到 CPU。再次所有 I/O 进程会在就
绪队列中等待 CPU 进程的完成。由于所有其他进程都等待一个大进程释放 CPU,
这称之为护航效果(convoy effect)。与让较短进程最先执行相比,这样会导
致 CPU 和设备使用率变的很低。
FCFS 调度算法是非抢占的。对于分时系统(每个用户需要定时的等待一定
的 CPU 时间)是特别麻烦。允许一个进程保持 CPU 时间过长是个严重错误。
4.2 优先级调度(priority scheduling algorithm)
算法:每个进程有一个进程控制块( PCB)表示。
进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行时间、
已用 CPU 时间、进程状态等等。 进程的优先数及需要的运行时间可以事先人为
地指定(也可以由随机数产生)。进程的到达时间为进程输入的时间。进程的运
行时间以时间片为单位进行计算。每个进程的状态可以是就绪 W(Wait)、运行
R(Run )、或完成 F(Finish)三种状态之一。就绪进程获得 CPU 后都只能运行
一个时间片。用已占用 CPU 时间加 1 来表示。如果运行一个时间片后,进程的已
占用 CPU 时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片
后进程的已占用 CPU 时间还未达所需要的运行时间,也就是进程还需要继续运
P1 P2 P3