进程调度算法
先来先服务调度算法FCFS
每次从就绪队列选择最先进入队列的进程,然后一直运行,直到进程退出或被阻塞,才会继续从队列中选择第一个进程接着运行。
对短作业不利。
适用于 CPU 繁忙型作业的系统,而不适用于 I/O 繁忙型作业的系统。
最短作业优先调度算法SJF
优先选择运行时间最短的进程来运行,这有助于提高系统的吞吐量。
对长作业不利,被推迟到很后面。
高响应比优先调度算法HRRN
进程调度先运行响应比优先级最高的。
$$
优先权= \frac { 等待时间+要求服务时间 }{ 要求服务时间 }
$$
兼顾长作业和短作业。
时间片轮转调度算法RR
使用最广

每个进程被分配一个时间段,称为时间片,即在该时间内可以为该进程运行。
- 如果时间片用完,进程还在运行,那么将会把此进程从 CPU 释放出来,并把 CPU 分配另外一个进程;
- 如果该进程在时间片结束前阻塞或结束,则 CPU 立即进行切换;
另外,时间片的长度就是一个很关键的点:
- 如果时间片设得太短会导致过多的进程上下文切换,降低了 CPU 效率;
- 如果设得太长又可能引起对短作业进程的响应时间变长。将
通常时间片设为 20ms~50ms 通常是一个比较合理的折中值。