处理机调度与常见算法

处理机调度:多道程序环境下,动态的把处理机分配给就绪队列中的一个进程使之执行;

作业进入系统驻留在外存的后备队列上,再至调入内存运行完毕,可能要经历下述三级调度
高级调度
中级调度
低级调度
1、高级调度(High Scheduling)

又称作业调度长程调度(Long-Term Scheduling),接纳调度(Admission Scheduling)

  主要在早期批处理阶段,处理在外存上的作业
1.决定外存后备队列中的哪些作业调入内存;
2.为它们创建进程、分配必要的资源;
3.将新创建的进程排在就绪队列上,准备执行。
2、低级调度(Low Level Scheduling)
 

也称为进程调度、微观调度短程调度Short-Term Scheduling

决定内存就绪队列中的哪个进程获得处理机,进行分配工作。是最基本的一种调度,在三种基本OS中都有。
 

3、中级调度(Intermediate-Level Scheduling)

又称交换调度中程调度(Medium-Term Scheduling)

引入目的:提高内存利用率和系统吞吐量。根据条件将一些进程调出或再调入内存
 
进程调度方式调度的时机

1)非抢占方式(Non-preemptive Mode)

一旦处理机分配给某进程,该进程一直执行。决不允许其他进程抢占已分配运行进程的处理机

程序完成;

发生某事件阻塞

2)抢占方式(Preemptive Mode)

允许调度程序根据某种原则,暂停某个正在执行的进程,将处理机重新分配给另一进程

程序完成;

发生某事件阻塞;新进程就绪

几种调度算法

先来先服务调度算法FCFS
一种最简单的调度算法,按先后顺序进行调度。既可用于作业调度,也可用于进程调度
不利于短作业
有利于CPU繁忙型的作业,而不利于I/O繁忙的作业(进程)
 短作业(进程)优先调度算法SJF/SPF
优点:
通过上表可见采用SJF/SPF算法,平均周转时间、平均带权周转时间都有明显改善。SJF/SPF调度算法能有效的降低作业的平均等待时间,提高系统吞吐量。
方式:
分抢占和非抢占两种方式,上例为简单的非抢占式
SJF/SPF的不足:
    1. 对短作业有利,但同时造成了对长作业的不利。
     2.由于作业(进程)的长短含主观因素,不一定能真正做到短作业优先。
     3.未考虑作业的紧迫程度,因而不能保证紧迫性作业(进程)的及时处理。
高优先权优先调度算法HPF/  Highest Priority First
照顾紧迫性作业,使其获得优先处理而引入调度算法。常用于批处理系统中的作业调度算法,以及多种操作系统中的进程调度算法
分两种方式:
非抢占式优先权算法
抢占式优先权算法 关键点:新作业产生时

 

高响应比优先调度算法HRRN Highest Response Raito Next

短作业优先算法是一种比较好的算法(相当于根据作业长度设定的静态优先权算法),适用于短作业较多的批处理系统中,其主要不足是长作业的运行得不到保证。

HRRN为每个作业引入动态优先权,使作业的优先级随着等待时间的增加而以速率a提高

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

     = 响应时间 / 要求服务时间

 

基于时间片的轮转调度算法RR

分时系统新需求:及时响应用户的请求;采用基于时间片的轮转式进程调度算法。

1.将系统中所有的就绪进程按照FCFS原则,排成一个队列

2.每次调度时将CPU分派给队首进程,让其执行一个时间片。时间片的长度从几个ms到几百ms。

3.在一个时间片结束时,发生时钟中断

4.调度程序据此暂停当前进程的执行,将其送到就绪队列的末尾,并通过上下文切换执行当前就绪的队首进程

进程阻塞情况发生时,未用完时间片也要出让CPU

能够及时响应,但没有考虑作业长短等问题。

影响时间片长度的主要因素:系统的处理能力和系统的负载状态。

 

多级反馈队列算法FB

(Multiple-level Feed Back Queue)

特点:多个就绪队列,循环反馈

    动态优先级、时间片轮转

1)设置多个就绪队列,各队列有不同的优先级,优先级从第一个队列依次降低。

2) 赋予各队列进程执行时间片大小不同, 优先权越高,时间片越短

3)当一个新进程进入内存,引发的调度过程

1.准备调度:先将它放入第一个队列的末尾,按FCFS原则排队等待调度。

2.IF时间片内完成,便可准备撤离系统;

3.IF时间片内未能完成,调度程序便将该进程转入第二队列的末尾等待再次被调度执行。

4.当第一队列中的进程都执行完,系统再按FCFS原则调度第二队列。在第二队列的稍放长些的时间片内仍未完成,再依次将它放入第三队列。

5.依次降到第n队列后,在第n队列中便采取按时间片轮转的方式运行。

 

算法名称

特点

方式

FCFS

最简单

不利于短作业

非抢占

SJF/SPF

照顾平均周转时间

不适于长作业

非抢占/抢占

HPF/HRRN

优先权考虑全面

非抢占/抢占

RR

及时响应

简单

时间片抢占

FB

最综合的一种算法

时间片抢占/

立即抢占

 

实时调度

什么是实时系统?

1.指系统能够在限定的响应时间内提供所需水平的服务。

2.指计算的正确性不仅取决于程序的逻辑正确性,也取决于结果产生的时间,如果系统的时间约束条件得不到满足,将会发生系统出错。

实时任务:具有明确时间约束的计算任务,有软/硬,随机/周期性之分。

 

 实现实时调度的基本条件

1)提供必要的信息

   为了实现实时调度,系统应向调度程序提供有关任务的下述信息:

就绪时间。该任务成为就绪状态的时间。

开始截止时间、完成截止时间

处理时间。从开始执行到完成所需时间。

资源要求。任务执行时所需的一组资源。

优先级。根据任务性质赋予不同优先级。

2)系统处理能力足够强

处理能力不足可能会出现某些实时任务不能得到及时处理,导致难以预料的后果。

如:

  系统中有M个周期性的硬实时任务,处理时间为Ci,周期时间表示为Pi,

单机系统中必须满足条件

M

( Ci / Pi )≤1

i=1

3)采用抢占式调度机制

 

硬实时任务:广泛采用抢占机制。

 

小的实时系统:如能预知任务的开始截止时间,为简化调度程序和对任务调度时所花费的系统开销,可采用非抢占调度机制

4)具有快速切换机制

1.对外部中断的快速响应能力。

利用快速硬件中断机构,可在紧迫的外部事件请求中及时响应。

2.快速的任务分派能力。

使系统中的运行功能单位适当的小,提高切换速度。类如线程的思想

实时调度算法的分类

根据实时任务的性质:

硬实时调度算法

软实时调度算法

根据调度时间不同:

静态调度算法

动态调度算法

按调度方式:

非抢占调度算法

抢占调度算法;

多处理机环境下:

集中式调度

分布式调度

 

一、FCFS——先来先服务和短作业(进程)优先调度算法

1. 先来先服务调度算法。

先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度, 也可用于进程调度。FCFS算法比较有利于长作业(进程),而不利于短作业(进程)。由此可知,本算法适合于CPU繁忙型作业, 而不利于I/O繁忙型的作业(进程)。

2. 短作业(进程)优先调度算法。

短作业(进程)优先调度算法(SJ/PF)是指对短作业或短进程优先调度的算法,该算法既可用于作业调度, 也可用于进程调度。但其对长作业不利;不能保证紧迫性作业(进程)被及时处理;作业的长短只是被估算出来的。

二、FPF高优先权优先调度算法

1. 优先权调度算法的类型。

为了照顾紧迫性作业,使之进入系统后便获得优先处理,引入了最高优先权优先(FPF)调度算法。 此算法常被用在批处理系统中,作为作业调度算法,也作为多种操作系统中的进程调度,还可以用于实时系统中。当其用于作业调度, 将后备队列中若干个优先权最高的作业装入内存。当其用于进程调度时,把处理机分配给就绪队列中优先权最高的进程,此时, 又可以进一步把该算法分成以下两种:

1)非抢占式优先权算法

2)抢占式优先权调度算法(高性能计算机操作系统)

2. 优先权类型 。

对于最高优先权优先调度算法,其核心在于:它是使用静态优先权还是动态优先权, 以及如何确定进程的优先权。

3.动态优先权

高响应比优先调度算法为了弥补短作业优先算法的不足,我们引入动态优先权,使作业的优先等级随着等待时间的增加而以速率a提高。 该优先权变化规律可描述为:优先权=(等待时间+要求服务时间)/要求服务时间;即 =(响应时间)/要求服务时间

三、基于时间片的轮转调度算法

1.时间片轮转法。

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

2. 多级反馈队列调度算法

多级反馈队列调度算法多级反馈队列调度算法,不必事先知道各种进程所需要执行的时间,它是目前被公认的一种较好的进程调度算法。 其实施过程如下:

1) 设置多个就绪队列,并为各个队列赋予不同的优先级。在优先权越高的队列中, 为每个进程所规定的执行时间片就越小。

2) 当一个新进程进入内存后,首先放入第一队列的末尾,按FCFS原则排队等候调度。 如果他能在一个时间片中完成,便可撤离;如果未完成,就转入第二队列的末尾,在同样等待调度…… 如此下去,当一个长作业(进程)从第一队列依次将到第n队列(最后队列)后,便按第n队列时间片轮转运行。

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

仅当第1到第( i-1 )队列空时, 才会调度第i队列中的进程运行,并执行相应的时间片轮转。

4) 如果处理机正在处理第i队列中某进程,又有新进程进入优先权较高的队列, 则此新队列抢占正在运行的处理机,并把正在运行的进程放在第i队列的队尾。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值