Bootstrap

进程与线程笔记 -8

进程调度

非抢占式调度:执行一个进程直到这个进程被阻塞或者这个进程退出才会调用其他进程,不会处理时钟中断。
抢占式调度算法:挑选一个进程,进程执行一段时间,超过这段时间进程还在运行就会被挂起,接着挑选另外的进程。抢占式调度算法需要在时间间隔末端发生时钟中断,以便返回给调度程序进行调度。
调度原则
保证CPU的利用率,确保CPU始终处于忙碌状态。
提高系统进程吞吐量,尽量让更多的进程都能获得CPU的使用权。
减少周转时间,使进程运行和阻塞时间的和尽可能小。
减少进程等待的时间。
尽快让用户的进程得到响应。
先来先服务FCFS
是非抢占式的调度算法。
先来先得,每次从就绪队列选择最先进入队列的进程运行,直到进程结束或者阻塞,之后运行下一个进程。有利有弊,适用于CPU繁忙型作业的系统,不适用I/O繁忙型作业的系统。
最短作业优先SJF
顾名思义选择当前运行时间最短的进程执行,有助于提高系统的吞吐量。但弊端是对长作业不利。
高响应比优先调度HRRN
每次进行进程调度时先计算进程的响应比优先级,然后选择优先级高的执行。
优先级=(进程等待时间 + 要求服务时间)/ 要求服务时间
兼顾了短进程和长进程。
时间片轮转RR
最古老的、最简单、最公平的且使用最广泛的算法,每个进程被分配一个时间片,在时间片内运行,时间片用完、阻塞或结束就把CPU让出来。
时间片一般设置为20ms-50ms
太短频繁上下文切换影响CPU使用效率,太长让短作业响应时间过长。
最高优先级调度算法HPF
进程是有优先级的,每次从就绪队列中选择优先级最高的来运行。
静态优先级:进程创建设定优先级之后不变。
动态优先级:根据进程动态变化调整的优先级,根据时间、等待时间等。
缺点是低优先级可能永远不会运行。
多级反馈队列调度算法
有多个队列,每个队列优先级从高到低,优先级越高时间片越短。有新进程加入高优先级队列立即停止当前正在运行的进程,运行高优先级进程。从该队列中运行完没有运行结束就加入到低一级优先级的队列中。

;