处理机调度:多道程序环境下,动态的把处理机分配给就绪队列中的一个进程使之执行;
作业进入系统驻留在外存的后备队列上,再至调入内存运行完毕,可能要经历下述三级调度 |
高级调度 |
中级调度 |
低级调度 |
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队列的队尾。