调度 ----操作系统的基本功能,几乎所有的计算机资源在使用前都要被调度。
任务调度主要是协调任务对计算机系统资源(如内存、I/O设备、CPU)的争夺使用。进程调度又称为CPU调度,其根本任务是按照某种原理为处于就绪状态的进程分配CPU。由于嵌入式系统中内存和I/O设备一般都和CPU同时归属于某进程,所以任务调度和进程调度概念相近,很多场合不加区分。
[ (桌面)win 的多任务,是指多进程。进程调度是由win系统实现的。到一个delphi的程序里,一个程序就是一个进程,一个进程里无非是多线程]
CPU调度----CPU是计算机最为重要的资源之一,CPU调度就是通过在进程之间切换CPU,提高计算机效率,是多道程序操作系统的基础。
进程执行由CPU执行和IO等待周期组成,在这两个状态之间切换,开始和结束都是CPU执行。----这些特征是实现CPU调度的重要参考。
抢占与非抢占调度
非抢占调度----一旦CPU杯分配给一个进程,那么该进程会一直拥有CPU直到进程终止或切换到等待状态。
可抢占调度有更大的调度权限,但要有一定硬件支持(如定时器),同时也是有代价的(如在多进程间共享数据的情况下的调度),内核设计亦有影响。
这些影响归结到一点就是抢占调度可能造成多进程之间(包括普通进程和内核之间)要处理的数据(普通数据,也可能是内核数据)出现了不一致的状态。
调度准则
CPU使用率
吞吐量----一个单元时间内完成的进程数量
周转时间----进程提交到进程完成的时间间隔
等待时间----进程在就绪队列中等待所花的时间总和。(调度并不影响进程运行和执行IO的时间量,相对影响的是等待时间)
响应时间----提交请求到第一响应时间的时间(不是输出该请求的时间,可以与周转时间比较),该指标对于交互式系统更重要。
好的调度是CPU使用率、吞吐量最大化,周转时间、等待时间和响应时间最小化。