操作系统(三)CPU调度

处理器调度类型

长程调度

创建新进程时,执行长程调度,它决定是否把进程添加到当前活跃的进程集合中。

长程调度程序决定了哪一个程序可以进入到系统中处理,因此,它控制系统中的并发,一旦允许进入,一个作业或用户程序就可以成为一个进程,并可以有机会进入短程调度和中程调度。策略可以是先来先服务,优先级,期待执行时间和I/O需求

中程调度

这个是交换功能的一部分,它决定是否把进程添加到那些至少部分在内存中并且可以被执行的进程集合中。

中程调度是交换功能的一部分,在典型情况下,换入决定取决于管理系统并发度需求,在不使用虚拟内存的系统,存储管理也是一个问题,因此,换入决定将考虑换出进程的存储需求

短程调度

短程调度真正决定下一次执行哪一个就绪进程。



调度算法

先来先服务(FCFS)策略  非抢占形

当在作业调度中采用该算法时,每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创建进程,然后放入就绪队列。在进程调度中采用FCFS算法时,则每次调度是从就绪对垒中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行。该进程一直运行到完成或发生某事件而阻塞后才放弃处理机。

FCFS是非抢占式的调度算法。

缺点:对处理器密集进程友好,如果是I/O密集型进程那么CPU使用将不够充分,因为大量的等待I/O操作,CPU闲置时间比较多

时间片轮转    抢占形

算法思想:

系统将所有的就绪进程按先来先服务的原则排成一个队列,每次调度时,把CPU分配给队首进程,并令其执行一个时间片。


多级反馈队列调度算法


算法思想:

       设置多个就绪队列,并为各个队列赋予不同的优先级。第一个队列的优先级最高,第二个队列次之。

       当一个新进程进入内存后,首先将它放入第一个队列的末尾,按FCFS原则排队等待调度。如果一个时间片后进程尚未完成,调度程序便将该进程转入第二个队列的末尾,再同样地按FCFS原则等待调度执行。当一个长作业从第一个队列一次降到第n个队列后,在第n队列中便采取按时间片轮转的方式运行。

       仅当第一队列空闲时,调度程序才调度第二队列中的进程运行。

缺点:处理器密集型进程不公平地大量使用大部分处理器时间,从而导致I/O密集型的进程性能降低,使用I/O设备低效响应时间变大。


最短进程优先

算法思想:

短作业优先(SJF)的调度算法是从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。而短进程优先(SPF)调度算法则是从就绪队列中选择一个估计运行时间最短的进程,将处理机分配给它,使它立即执行并一直执行到完成,或发生某事件而被阻塞放弃处理机时再重新调度。

短作业调度算法是非抢占式的调度算法。


非抢占式优先权调度算法和抢占式优先权调度算法


算法思想:

非抢占式优先权调度算法:系统一旦把处理机分配给就绪队列中优先权最高的进程后,该进程便一直执行下去,直至完成,或因发生某事件使该进程放弃处理机时,系统方可再将处理机重新分配给另一个优先权最高的进程。

抢占式优先权调度算法:系统同样是把处理机分配给优先权最高的进程,使之执行。但在其执行期间,只要又出现了另一个其优先权更高的进程,进程调度就立即停止当前进程的执行,重新将处理机分配给新到的优先权最高的进程。


静态优先权和动态优先权


算法思想:

静态优先权是在创建进程时确定的,且在进程的整个运行期间保持不变。动态优先权是指在创建进程时所赋予的优先权,是可以随进程的推进或随其等待时间的增加而改变的。


高响应比优先调度算法


算法思想:

为每个作业引入动态优先权,并使作业的优先级随着等待时间的增加而以速率a提高,则长作业在等待一定的时间后,必然后寄回分配到处理机。该优先权的变化规律可描述为:

优先权=(等待时间+要求服务时间)/ 要求服务事件






猜你喜欢

转载自blog.csdn.net/timeromantic/article/details/80240188