相关概念:
CPU使用率:使CPU尽可能的忙,即忙的时间/CPU运行时间;
吞吐量:单位时间内完成的进程数;
周转时间:从进程提交到进程完成的时间。包括所有时间段之和,包括进入内存、在就绪队列中等待、在CPU上执行和I/O上执行;
等待时间:就绪队列中等待所花时间之和。
响应时间:提交请求到产生第一响应的时间。
CPU调度方法:
1、先到先服务(FCFS):即先请求的进程先获得CPU。是非抢占的调度算法,若先到的进程占用时间多(用CPU区间段表示),则效率会很低,后面的进程会等很久。
2、最短作业优先调度SJF:当CPU空闲时,它会赋给具有最短CPU区间段的进程。若两个进程有相同的COU区间段,则按照FCFS来分配。但CPU区间段不容易获取,所以常用于长期调度,因为长期调度的进程,用户可以为该进程指定CPU区间段。它可以是抢占也可以是非抢占的,若为抢占,则发现进程中有比当前运行进程的CPU区间段小的,则抢占CPU。抢占SJF又称为:最短剩余时间优先调度
3、优先级调度:每个进程都有一个优先级,具有最高优先级的进程会分配CPU。具有相同优先级的按FCFS分配CPU。也可有抢占和非抢占区分,如果是非抢占,则优先级高的就先排到就绪队列里面。存在一个主要问题:饥饿(无穷阻塞),即进程可以运行但没有分配到CPU,低优先级的进程会出现饥饿状态,解决办法就是老化:即随着等待的时间增加,低优先级的进程的优先级增加,这样就能被执行。
4、轮转法调度(RR):类似FCFS,但是一种抢占式调度,为CPU分一个小的时间片,时间片一到,CPU就从就绪队列中选择第一个进程进行分配,把执行过的进程放到就绪队列的尾端。
5、多级队列调度:在进程可以分成不同组的情况下,将就绪队列分成多个独立队列, 例如根据进程的属性,进程类型等等。一个进程被永久的分配到一个队列里面,每个队列有自己的调度算法。调度算法就用上面的4种。但这种方法不够灵活。
6**、多级反馈队列调度**:允许进程在队列之间移动。如果进程使用过多的CPU时间,那么就会被转移到更低优先级队列。这样,较低优先级队列等待时间过长的进程就会被转移到更高优先级队列中,这样形式的老化避免饥饿发生。