进程调度

来源:互联网 发布:网络运维方案 编辑:程序博客网 时间:2024/05/29 16:25

一、进程调度的基本状态:

1.等待态:等待某个事件的完成
2.就绪态:等待系统分配处理器以便运行
3.运行态:占有处理器正在运行
运行态→等待态: 往往是由于等待外设,等待主存等资源分配或等待人工干预而引起的。
等待态→就绪态 :则是等待的条件已满足,只需分配到处理器后就能运行。
运行态→就绪态 :不是由于自身原因,而是由外界原因使运行状态的进程让出处理器,这时候就变成就绪态。例如时间片用完,或有更高优先级的进程来抢占处理器等。
就绪态→运行态 :系统按某种策略选中就绪队列中的一个进程占用处理器,此时就变成了运行态。
二、进程调度的基本属性:
1.多态性 :从诞生、运行,直至消灭
2.多个不同的进程可以包括相同的程序
3.三种基本状态之间可进行转换
4.并发性 :并发执行的进程轮流占用处理器
三、进程调度的方式:
1.非剥夺方式
分派程序一旦把处理机分配给某进程后便让它一直运行下去,直到进程完成或发生某事件而阻塞时,才把处理机分配给另一个进程。
2.剥夺方式
当一个进程正在运行时,系统可以基于某种原则,剥夺已分配给它的处理机,将之分配给其它进程。剥夺原则有:优先权原则、短进程优先原则、时间片原则。
四、进程调度算法:

调度算法是指:根据系统的资源分配策略所规定的资源分配算法。

算法按照系统差异主要分为三大类:

1.批处理系统中的调度算法

代表调度算法有:先来先服务、短作业优先、最短剩余时间优先。

(1) 先来先服务(FCFS)

算法总是把处理机分配给最先进入就绪队列的进程,一个进程一旦分得处理机,便一直执行下去,直到该进程完成或阻塞时,才释放处理机。

(2) 短作业优先(SJF): 

该算法从就绪队列中选出下一个“CPU执行期最短”的进程,为之分配处理机。

2.交互式系统中的调度算法

代表调度算法有:轮转调度、优先级调度、多级队列、最短进程优先、保证调度、彩票调度、公平分享调度。

(1).轮转调度(RR):

a.时间片轮转法:

时间片轮转法一般用于进程调度,每次调度,把CPU分配队首进程,并令其执行一个时间片。 当执行的时间片用完时,由一个记时器发出一个时钟中断请求,该进程被停止,并被送往就绪队列末尾;依次循环。

b.多级反馈队列调度算法:

多级反馈队列调度算法,不必事先知道各种进程所需要执行的时间,它是目前被公认的一种较好的进程调度算法。 其实施过程如下:
    1) 设置多个就绪队列,并为各个队列赋予不同的优先级。在优先权越高的队列中, 为每个进程所规定的执行时间片就越小。
    2) 当一个新进程进入内存后,首先放入第一队列的末尾,按FCFS原则排队等候调度。 如果他能在一个时间片中完成,便可撤离;如果未完成,就转入第二队列的末尾,在同样等待调度…… 如此下去,当一个长作业(进程)从第一队列依次将到第n队列(最后队列)后,便按第n队列时间片轮转运行。
    3) 仅当第一队列空闲时,调度程序才调度第二队列中的进程运行;仅当第1到第(i-1)队列空时, 才会调度第i队列中的进程运行,并执行相应的时间片轮转。
    4) 如果处理机正在处理第i队列中某进程,又有新进程进入优先权较高的队列, 则此新队列抢占正在运行的处理机,并把正在运行的进程放在第i队列的队尾。

(2).优先级调度:

a.非抢占式优先级调度算法:

一旦把处理及分配给就绪队列中优先级最高的进程后,该进程便一直执行下去直至完成。或者因该进程发生某事件而放弃处理机时,系统方可将处理机重新分配给另一个优先级最高的进程。

b. 抢占式优先级调度算法:

把处理及分配给优先级最高的进程,使之执行。但在其执行期间,只要出现了另一个其优先级跟高的进程,调度程序就将处理机分配给新的优先级更高的进程。因此,在采用这种调度算法时,每当系统中出现了一个新的就绪进程i时,就将其优先级pi与正在执行的进程j的优先级pj进行比较,如果pi<=pj,原进程pj便继续执行,但如果pi>pj,则立即停止pj的执行,进行进程切换,使i进程投入执行。

3.实时系统中的调度算法

代表调度算法有:单调速率调度、最早最终时限优先调度。


1 0
原创粉丝点击