进程调度
多任务操作系统
1、多任务的特点
多任务操作系统能同时并发的交互执行多个进程的操作系统。多任务操作系统中会有多个进程出于阻塞或者睡眠状态。
2、多任务操作系统的分类
(1)非抢占式多任务。在此模式下,除非进程主动停止运行,否则它会一直执行。
(2)抢占式多任务。在此模式下,调度程序可以决定什么时候停止一个进程的运行,以便其他进程能能够得到执行机会。
3、进程的分类
(1)IO密集型:进程大部分时间用来提交或者用来等待I/O请求。
(2)CPU密集型:大部分时间用来执行代码。
4、进程的调度策略
(1)尽量缩短进程的响应时间
(2)提高吞吐量
调度算法
1、先来先服务(FCFS)调度算法:即可用于作业调度,也可用于进程调度。用于作业调度时,每次调度都是从后备作业队列中选取一个或者多个最先进入该队列的作业,将它们调入内存,为它们分配资源,创建进程,然后放入就绪队列。在进程调度中采用FCFS时,每次调度是从就绪队列中选择也给最先进入该队列的进程,为之分配处理机,使之投入运行。
2、短作业优先调度算法:指对短作业或者短进程调度的算法。即可用于作业调度,也可用于进程调度。短作业优先调度算法是从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。短进程优先算法是从就绪队列中选出一个估计运行时间最短的进程,将处理机分配给它,使它一直执行到完成或者因某个时间而阻塞放弃处理机再重新调度。
3、时间片轮转法:时间片表示进程被抢占前所能持续运行的时间。系统将所有的就绪进程按照先来先服务的顺序排成一个都列,每次调度都会把处理机分配给队首进程,并令其执行一个时间片。当时间片用完时,由一个计时器发出时钟中断请求,调度程序中断当前进程的运行,并将它放入就绪队列的尾部。然后,再把处理机分配给就绪队列中的队首进程,让它执行一个时间片。
4、多级反馈队列调度算法:前面几种调度算法都有局限性,如短作业优先只考虑了短进程而忽略了长进程,多级反馈队列调度算法是一种比较平均的算法。
(1)设置多个就绪队列,为每个队列设置不同的优先级,第一个队列的优先级最高,第二个次之,其次各个队列的优先级逐渐降低。优先级越高的队列,每个进程执行的时间片就越小,
(2)当且仅当第一队列空闲时,调度程序才调度第二队列中的进程运行;如果处理机正在处理第i队列中某进程的任务时,又有新进程进入优先等级比i高的队列,那么此时新进程将抢占正在运行进程的处理机。即把调度程序正在运行的进程放回第i队列的末尾,把处理机分配给新到的高优先级进程。
(3)如果有新进程进入内存,则把该进程放到对应优先级第i队列的尾部,按照FCFS排队等待调度,如果处理机分配给该进程后,在时间片内任务完成,那么便可撤离系统;如果在一个时间片内没有完成,调度程序将该进程转入i+1队列的尾部,同样按照FCFS等待被调度。
5、高响应比优先调度算法:是一种非抢占式调度算法,在短作业调度算法的基础上,引入了作业的动态优先权,并使作业随着等待时间的增加,响应比越高,计算每个可用作业的响应比率,响应比率最高的作业优先被调度。
公式:响应比=(w+s)/s;
w是等待时间,s是要求服务时间。