进程调度及其算法

来源:互联网 发布:程序员的数学3 编辑:程序博客网 时间:2024/06/09 19:09

1、进程调度用来做什么?

(1)进程调度记录者系统中所有进程的有关情况和状态特征

(2)进程调度负责从就绪队列中选取一个就绪进程、分配给CPU并决定它运行多长时间。

(3)在进程的开始和结速阶段,进程调度实施处理机的分配与回收、修改PCB表项等。

2、什么时候发生进程调度?

(1)当新进程建立时,调度算法可以合理地选择运行父进程或者子进程。

(2)在有进程退出时,必须从就绪队列中引入新进程,如果就绪队列为空,通常运行系统提供的空闲进程。

(3)当一个进程因为I/O阻塞或其他原因阻塞时,必须选择另一个进程。

(4)在分时系统中,如果时间片用完,也要进行调度。

3、进程调度方式

(1)抢占式调度。指的是当一个进程进行时,系统可以根据规定的原则剥夺它的CPU并分配给新进程。常用的原则有1、高优先级进程剥夺低优先级进程;2、CPPU时间片用完后CPU被剥夺;3、当有更短的进程或线程就绪时,CPU被剥夺;4、强制性剥夺原则。

(2)非抢占式调度。

4、进程调度算法

(1)先到先服务(FCFS)算法。FCFS算法就是每次从就绪队列中选择一个最先进入该队列的进程,把CPU分配给它。

(2)时间片轮转(TRR)算法。TRR算法主要用于分时系统中的进程调度。每当执行进程调度时,总是从就绪队列队首选出进程,让它在CPU上运行一个时间片的时间,当进程用完它的时间片之后,系统计时器发出时钟中断,该进程停止并被放到就绪队列的队尾,然后CPU分配给下一个进程,重复以上过程。就像我们打牌一样,轮到你,你才能出牌,然后下手的人依次出牌,转一圈后,又回到你出牌,如此往复。

(3)高优先级优先调度算法。该算法的原则是“重要的事先办”,利用优先级调度算法时,给每一个进程确定一个优先级,调度时,从就绪队列中选出优先级最该的进程,把CPU分配给它。但这有一个问题,如果在进程运行过程中出现比当前进程优先级更高的进程怎么办?这就涉及到‘抢占式优先级’和‘非抢占式优先级’。非抢占式优先级类似于“你打完电话,他再打电话”,当前进程会一执行下去,直到任务完成后再让出CPU。抢占式优先级类似于“不等你说完,他就抢过电话”。当前进程遇到更高优先级的进程时,CPU被强行剥夺分配给给高优先级的进程。

你可能会问,进程的优先级是分配完就不再改变还是一直动态改变?其实这两种情况都有。静态优先级是在创建进程时就确定的,并不再改变。动态优先级则是随着进程的推进而不断改变的。比如,进程由已占有CPU时间的长短决定,一个进程已占有CPU时间越长,优先级越低;另外,进程还可以由等待CPU的时间来决定,等待时间决定,等待越久,优先级越高。

5、进程调度过程

1、“下降”进程。在进程重新调度时,当前进程被中断(“下降”进程),并把进程的现场信息发送到“下降”进程的PCB中。

2、“上升”进程。按照处理机的调度算法从就绪队列中选择一个进程,准备让它运行。

3、恢复“上升”进程。由于进程下降时已将现场信息保存到响应的PCB中,进程上升时则应由其PCB中的信息来恢复现场。

0 0
原创粉丝点击