进程调度算法
前言
进程调度算法,就是为进程分配cpu资源的资源分配算法。
一、先到先服务调度:
First Come,First Served(FCFS)
定义:先请求CPU的进程首先分配到CPU。FCFS策略可以通过FIFO队列轻松实现。
缺点:其他所有进程会等待一个大进程释放CPU
非抢占式:一旦CPU分配给了一个进程,该进程就会使用CPU知道释放CPU为止。
二、最短作业优先调度:
Short Job First (SJF)
定义:调度取决于进程的下次CPU执行长度,选择更短的作业优先执行。可以证明最短作业优先调度是最优的。
缺点:SJF算法也可能导致饥饿:长作业无限等待CPU
抢占/非抢占
三、优先级调度:
priority scheduling
定义:每个进程都有一个优先级与其关联,具有最高优先级的进程先分配CPU,具有相同优先级的进程按FCFS调度。
(SJF调度可以看做是以作业长度的大小为优先级的优先级调度)
抢占?:优先级调度可以是抢占的或者非抢占的。
问题:低优先级的进程可能会无限等待CPU,称之为无穷阻塞或饥饿。解决的办法是老化:逐渐增加等待很长时间的进程的优先级。
四、轮转调度:
Round Robin (RR算法)
定义:轮转调度算法是专门为分时系统设计的。在FCFS的基础上增加了时间片以抢占切换进程。
RR策略的平均等待时间比较长。
RR调度算法是抢占式的。
问题:RR算法的性能很大程度取决于时间片的大小。时间片过大,RR算法和FCFS算法一样;过小,则导致大量的上下文切换。
上下文切换时间一般少于10ms,时间片一般设置为10~100ms。
根据经验,80