1 CPU调度
1.1 CPU调度基本概念
CPU调度:对于单核cpu,每个时刻最大可以处理一个进程。cpu作为计算机最重要的资源之一,cpu调度即采用多道程序,多个进程同时位于内存在,当某个进程需要等待时,此时cpu空闲,从内存中找到另外一个进程接管cpu。从而最大化cpu利用率。当一个进程需要等待时,另一个进程接管cpu。
CPU/IO执行周期:对于每个进程,都是周期性的执行cpu执行或是io等待。而cpu调度的成功取决于进程的CPU/IO执行周期。进程不断地在这两个状态之间交替。
CPU调度程序:当cpu空闲时,cpu调度程序从内存中选择一个进程,并为其分配CPU。进程选择采用短期调度程序或是cpu调度程序。就绪队列不是必须为FIFO的,可以是FIFO,优先队列,树等。就绪队列中的所有进程都需要排队以等待cpu空闲,队列内的记录通常为PCB。
1.2 抢占调度
1.2.1 调度机制
需要cpu调度的四种情况:
1.一个进程从运行状态->等待状态(执行IO请求或wait())
2.一个进程从运行状态->就绪状态(中断发生时,cpu将当前进程挂起,当前进程由运行状态转为就绪状态)
3.一个进程从等待状态->就绪状态(如IO请求完成)
4.一个进程终止
非抢占调度:对于第一种和第四种情况,必须选择一个新进程来执行,此时调度方案称为非抢占的(或协作的),即调度方案只有在第1和第4种情况出现时,才进行调度。在这种情况下,一旦某个进程被分配cpu,那么会一直执行,直到该进程终止或它切换到等待状态。
抢占调度:不只在第1和第4种情况下,也进行调度。称为抢占调度。比如某个某个进程并未切换到等待状态,或是终止,也被其他进程挂起,那么称之为抢占。
1.2.2 调度程序
cpu调度由调度程序来完成,其主要功能包括:1.切换上下文 2.切换到用户模式 3.跳转到用户程序的合适位置,以便重新启动程序。
调度延时:调度程序停止一个进程,并启动另一个进程所需要的时间称为调度延时。
1.2.3 调度准则
无论是何种cpu调度算法,都要以一些指标来进行,共同的指标或目标有:
cpu使用率:应尽可能让cpu忙碌
吞吐量:单位时间内进程完成的数量