《操作系统》第5章 作业调度
操作系统作业调度

增加上下文切换开销。
06
调度器设计与实现
调度器结构
调度器组成
调度器由调度队列和调度算法两 部分组成,其中调度队列用于存 储待调度的进程,调度算法用于 决定下一个要执行的进程。
调度器层次结构
现代操作系统通常采用多层调度 器结构,包括高级调度器(作业 调度器)、中级调度器(内存调 度器)和低级调度器(进程调度 器)。
状态转换
进程状态之间会根据特定的事件或条件进行转换,例如,当 进程等待的资源可用时,它会从阻塞状态转换为就绪状态。
进程控制块(PCB)
PCB定义
进程控制块是操作系统用于管理进程的重要数据结构,它包含了进程的各种属性 和信息,如进程标识符、状态、优先级、资源需求等。
PCB作用
PCB在进程调度中起着关键作用,调度器会根据PCB中的信息来决定下一个要执 行的进程。同时,PCB也是进程同步和通信的基础。
03
作业调度算法
先来先服务(FCFS)算法
算法原理
按照作业到达的先后顺序进行服务,先到达的作 业先得到处理。
优点
公平、简单,易于实现。
缺点
未考虑作业的长短和紧迫程度,可能导致长作业 等待时间过长,影响系统效率。
短作业优先(SJF)算法
1 2
算法原理
根据作业的长短进行调度,优先选择短作业进行 处理。
评估方法
采用基准测试程序(如Phoronix Test Suite)对Linux进程调度器进行压力测试,收集并分 析测试结果。
性能指标
重点关注周转时间、响应时间和CPU利用率等指标,以评估进程调度器的性能。
结果分析
通过对测试数据的统计和分析,可以发现进程调度器在不同负载下的性能表现,以及可能 存在的性能瓶颈。针对发现的问题,可以提出优化建议和改进措施,以提高Linux进程调 度器的整体性能。
操作系统的作业调度

操作系统的作业调度作业(job)是操作系统中⼀个常见的概念,所谓作业是指⽤户在⼀次计算过程或者事务处理过程中,要求计算机系统所作⼯作的集合。
所谓作业调度是指按照某种原则,从后备作业队列中选取作业进⼊内存,并为作业做好运⾏前的准备⼯作以及作业完成后的善后处理⼯作。
设计作业调度算法时应达到如下⽬标:• (1) 某段时间内尽可能运⾏更多的作业,应该优先考虑短作业。
• (2) 使处理机保持繁忙,应该优先考虑计算量⼤的作业,即计算型作业。
• (3) 使I/O设备保持繁忙,应该优先考虑I/O繁忙的作业,即I/O型作业。
• (4) 对所有的作业尽可能公平合理的。
这就要求对每个作业尽可能公平对待,不⽆故地或⽆限期地拖延⼀个作业的执⾏。
作业调度离不开具体调度算法,常⽤的作业调度算法有五种,下⾯我们作简单的介绍,并以单道批处理系统为例来具体分析每种算法的优劣。
先来先服务调度算法先来先服务调度算法(first come first service,FCFS)按作业到达系统的先后次序进⾏调度。
该算法优先考虑在系统中等待时间最长的作业,⽽不考虑作业运⾏时间的长短。
例如,有4个作业组成的⼀个作业流,如表2-1所⽰,在给出了作业的提交时间、运⾏时间后,经计算给出了作业的开始时间、完成时间、周转时间和带权周转时间。
由于单道批处理系统处理作业是⼀个接着⼀个的进⾏,所以第⼀个作业的结束时间就是第⼆个作业的开始时间,第⼆个作业的结束时间就是第三个作业的开始时间,等等。
所以,作业运⾏的次序为:1,2,3,4。
此作业流的平均周转时间为W =(1.0+3.0+6.0+3.75)/4=3.4375h注:通过以上分析,显然,这种算法容易实现,但效率很低。
短作业优先调度算法短作业优先调度算法(shortest job first,SJF)总是从作业的后备队列中挑选运⾏时间最短的作业,作为下—个调度运⾏的对象。
仍然采⽤上⾯的4个作业组成的⼀个作业流,计算其调度性能,如表2-2所⽰,经计算给出了作业的开始时间、完成时间、周转时间和带权周转时间。
操作系统——作业调度

操作系统——作业调度实验⼆作业调度模拟程序⼀、⽬的和要求 1. 实验⽬的 (1)加深对作业调度算法的理解; (2)进⾏程序设计的训练。
2.实验要求 ⽤⾼级语⾔编写⼀个或多个作业调度的模拟程序。
单道批处理系统的作业调度程序。
作业⼀投⼊运⾏,它就占有计算机的⼀切资源直到作业完成为⽌,因此调度作业时不必考虑它所需要的资源是否得到满⾜,它所运⾏的时间等因素。
作业调度算法: 1) 采⽤先来先服务(FCFS)调度算法,即按作业到达的先后次序进⾏调度。
总是⾸先调度在系统中等待时间最长的作业。
2) 短作业优先 (SJF) 调度算法,优先调度要求运⾏时间最短的作业。
3) 响应⽐⾼者优先(HRRN)调度算法,为每个作业设置⼀个优先权(响应⽐),调度之前先计算各作业的优先权,优先数⾼者优先调度。
RP (响应⽐)=作业周转时间 / 作业运⾏时间=1+作业等待时间/作业运⾏时间每个作业由⼀个作业控制块JCB表⽰,JCB可以包含以下信息:作业名、提交(到达)时间、所需的运⾏时间、所需的资源、作业状态、链指针等等。
作业的状态可以是等待W(Wait)、运⾏R(Run)和完成F(Finish)三种之⼀。
每个作业的最初状态都是等待W。
⼀、模拟数据的⽣成 1.允许⽤户指定作业的个数(2-24),默认值为5。
2. 允许⽤户选择输⼊每个作业的到达时间和所需运⾏时间。
3.(**)从⽂件中读⼊以上数据。
4.(**)也允许⽤户选择通过伪随机数指定每个作业的到达时间(0-30)和所需运⾏时间(1-8)。
⼆、模拟程序的功能 1.按照模拟数据的到达时间和所需运⾏时间,执⾏FCFS, SJF和HRRN调度算法,程序计算各作业的开始执⾏时间,各作业的完成时间,周转时间和带权周转时间(周转系数)。
2. 动态演⽰每调度⼀次,更新现在系统时刻,处于运⾏状态和等待各作业的相应信息(作业名、到达时间、所需的运⾏时间等)对于HRRN算法,能在每次调度时显⽰各作业的响应⽐R情况。
操作系统-第五章-进程调度

操作系统-第五章-进程调度⼀、CPU调度概述1.长程调度⼜称作业调度或⾼级调度处于新建状态的进程⼀般⾸先被放到外存的进程池中,当内存进程的数量没有达到最多进程数时,操作系统的调度程序才从新建状态选择⼀个进⼊内存并转换为就绪状态“新建”状态转换到“就绪”状态由调度程序选择控制多道程序的“道/度”2.短程调度⼜称为CPU调度或低级调度在就绪队列中可能存在不⽌⼀个进程,当CPU空闲时,操作系统就需要从就绪队列中挑选⼀个进程让它运⾏3.长程调度与短程调度的⽐较4.中程调度⼜称为交换从本质上讲,中程调度不属于进程管理的内容,⽽应该属于内存管理⼀个进程在内存和外存间的换进换出,最⼤的⽬的是节省内存当⼀个进程在内存中长期不运⾏时,会造成内存浪费,为此,操作系统把这些进程从内存换道外存,从⽽腾出内存空间供运⾏进程使⽤当⼀个在外存的进程接下来需要运⾏时,操作系统则执⾏还如操作,把这个进程从外存换⼊内存5.进程调度队列为了⽅便进⾏CPU调度,操作系统需要对不同状态的进程进⾏组织和管理。
为此操作系统为某些特定的状态设⽴了⼀个或多个进程队列,⽤于管理这些进程作业队列:在系统中的所有进程的集合就绪队列:在主存中的,就绪并等待执⾏的所有进程的集合,不必是先进先出队列,队列中的记录通常是进程控制块(PCB)设备队列:等待某⼀I/O设备的进程队列进程的执⾏过程实际上就是进程在各种队列之间的迁移6.CPU调度过程调度程序根据某种策略选择内存中的⼀个就绪进程⼀个CPU同时只能运⾏⼀个进程做选择分派程序负责把CPU的控制权转交CPU调度程序切换上下⽂切换到⽤户态跳转到⽤户程序的适当位置并重新运⾏之分派延迟:分派程序终⽌⼀个进程的运⾏并启动另⼀个进程运⾏所花的时间7.调度⽅式⾮抢占式调度⼀旦把CPU分配给某个进程后,系统不可以抢占已分配的CPU并分配给其他进程只有进程⾃愿释放CPU,才可以把CPU分配给其他进程优点:容易实现,调度开销⼩,适合批处理系统缺点:响应时间长,不合适交互系统抢占式调度调度程序可以根据某种原则暂停某个正在执⾏的进程,将已分配给它的CPU重新分配给另⼀个进程当多个进程共享数据时,抢占调度可能导致竞争情况抢占也影响操作系统的内核设计可防⽌单⼀进程长时间独占CPU系统开销⼤受中断影响的代码应加以保护,从⽽避免同时使⽤,为了这些代码段不被多个进程同时访问,在进⼊时禁⽌中断⽽退出时启⽤中断抢占式与⾮抢占式的区分运⾏进程是否是⾃愿放弃CPU8.CPU调度时机CPU调度可能发⽣在当⼀个进程从运⾏转到等待(⾮抢占式)从运⾏转到就绪(抢占式)从等待转到就绪(抢占式)终⽌运⾏(⾮抢占式)⼆、调度准则CPU利⽤率:固定时间内CPU运⾏时间的⽐例吞吐量:单位时间内运⾏完的进程数周转时间:进程从提交到运⾏结束的全部时间等待时间:进程等待调度(不在运⾏)的时间⽚总和响应时间:从进程提出请求到⾸次被响应(⽽不是输出结果)的时间段(在分时系统环境下),也就是第⼀段的等待时间周转时间=等待时间+运⾏时间带权周转时间:周转时间/运⾏时间三、调度算法1.先来先服务调度算法(FCFS)调度策略:按照进程请求CPU的先后顺序来使⽤CPU调度依据:进⼊就绪队列的时间调度⽅法:先进⼊就绪队列的进程被优先选中运⾏使⽤FIFO队列实现特点:实现简单,可使⽤FIFO队列实现⾮抢占式调度公平,每个进程都有被调度的机会适⽤于长程调度,后台批处理系统的短程调度对长CPU脉冲的进程有利,对短CPU脉冲的进程不利护航效果:当⼀个长进程后⾯的多个短进程,让长进程先执⾏,会让后⾯的短进程等待较长时间,从⽽导致CPU和设备利⽤率降低例:2.短作业优先调度算法(SJF)调度策略:关联到每个进程下次运⾏的CPU脉冲长度,调度最短的进程调度依据:每个进程下次运⾏的CPU脉冲长度调度⽅法:调度最短的进程运⾏两种模式:⾮抢占式调度:⼀旦进程拥有CPU,它可在该CPU脉冲结束后让出CPU抢占式调度:有⽐当前进程剩余时间更短的进程到达时,新来的进程抢占当前运⾏进程的CPU,也称为最短剩余时间优先调度SJF最优:对⼀组的进程⽽⾔,它给出了最短的平均等待时间SJF算法困难:如何知道下⼀个CPU区间的长度SJF通常⽤于长程调度指数估算法:通过先前的CPU区间长度及其指数平均进⾏预测饥饿:长进程可能长时间等待,知道进程会运⾏但不知道什么时候运⾏死锁:进程长时间等待,不会运⾏例:3.优先级调度算法⽬前主流的操作系统调度算法调度依据:优先级就绪队列中的排列⽅式:优先级⾼的在前,优先级低的在后调度⽅法:调度优先级最⾼进程运⾏优先数:表⽰优先级的整数可以参考不同的因素来设置(时间极限,内存要求,进程的重要性)优先数可⽤某⼀范围的整数来表⽰静态优先级:进程创建时确定,在运⾏期间不变简单易⾏,系统开销⼩不够精确,可能会出现饥饿问题动态优先级:进程创建时的优先级随进程推进或等待时间增加⽽改变调度模式:抢占式调度⾮抢占式调度特点:实现简单,考虑了进程的紧迫程度策略灵活,可模拟其他算法存在问题:饥饿(低优先级的进程可能永远得不到运⾏)解决问题:视进程等待时间的延长提⾼其优先级例:4.时间⽚轮转(RR)为分时系统设计算法原理:把⼀段时间分割成若⼲个⼩碎⽚,每个需要运⾏的进程获得⼀个碎⽚运⾏,即在这段时间内,每个进程都得到运⾏时间⽚:较⼩单位的CPU时间,通常为10-100毫秒RR算法的性能很⼤程度上取决于时间⽚的⼤⼩时间⽚⼤->FCFS时间⽚⼩->系统开销⼤⼀般准则:时间⽚/10>进程上下⽂切换时间周转时间也依赖时间⽚的⼤⼩调度依据:进⼊就绪队列的时间调度⽅法:每个进程运⾏时间长度为⼀个时间⽚,时间⽚⽤完后,该进程被抢占并插⼊就绪队列末尾假定就绪队列中有n个进程、时间⽚q则每个进程每次得到不超过q单位的成块CPU时间没有⼀个进程的等待时间会超过(n-1)q在不超过nq时间内,n个进程都运⾏⼀次例:5.多级队列调度(MLQ)以上算法存在局限性,不能适应各种不同类型的进程SJF算法有利于短进程,⽽不利于长进程RR算法系统开销⼤优先级算法存在饥饿问题等所有进程采⽤同⼀策略,不合理不同类型的进程需要不同策略交互进程需要较短的响应时间批处理进程需要较短的等待时间通常,交互进程较批处理进程的优先级⾼多级队列调度允许系统中存在多个就绪队列,每个就绪队列有⾃⼰的调度算法根据进程属性,如内存⼤⼩、进程优先级、进程类型等,⼀个进程永远分到⼀个队列,每个队列有⾃⼰的调度算法队列之间应有调度通常采⽤固定优先级抢占调度,可能产⽣饥饿另⼀种⽅法是在队列之间划分时间⽚,每个队列都有⼀定⽐例的CPU时间,可⽤于调度队列内的进程关键:需要确定就绪队列的数量需要确定新进程进⼊那个队列需要确定每⼀个队列的调度算法例:就绪队列:前台(交互式)后台(批处理)每个队列有⾃⼰的调度算法前台:RR后台:FCFS队列间的调度⽅法固定优先级调度,即前台运⾏完后再运⾏后台。
操作系统:作业调度和进程调度的理解

操作系统:作业调度和进程调度的理解操作系统:作业调度和进程调度的理解含义:作业调度:是指作业从外存调⼊到内存的过程进程调度:是指进程从内存到分配cpu执⾏的过程理解:当我们打开两个程序,不妨设为程序A和程序B,⾸先这两个程序都是在外存(硬盘)上存储的,想要打开并运⾏这两个程序就必须加载到内存上,但这两个程序加载到内存上的顺序是什么呢?是先加载A呢还是先加载B呢?这个时候就涉及到作业调度了,作业调度第⼀种就是先来先服务(FCFS),即先打开的哪个程序,就先在内存上加载哪个程序;第⼆种就是短作业优先调度,即如果程序A⽐较⼤,可能是某个⼤型游戏,但是程序B⽐较⼩,可能只是打开个图⽚,假设必须要等这个⼤型游戏打开了才能打开这个图⽚,这显然图⽚等待的时间太长了,这时就涉及到了短作业优先调度,即系统会先打开图⽚,再打开游戏;第三种就是作业优先权调度,系统为作业分配优先权,优先等级⾼的就先调⼊内存,低的则等待;第四种就是⾼响应⽐调度,假设还有⼀个程序C,⽽且程序C还要在A之前打开,但是C的优先级低于A和B,如果按照优先级调度,那么C就会等很长⼀段时间,这显然对C是不公平的,所以这时就涉及到了⾼响应⽐优先,响应⽐=1+作业等待时间/执⾏时间,即:等待的时间越长,响应⽐就越⾼,就会提前执⾏。
当通过作业调度进⼊到内存后,这些作业就变成了⼀个个进程,但是要想分得CPU进⾏执⾏,还需进程调度算法,即还需要再分配⼀个顺序,来确定到底谁先分得CPU,进程调度算法有:优先权调度、短作业优先等,即通过每个进程的优先权或者作业的长短来确定分得CPU 的执⾏顺序,顺序分好以后,就该真正的执⾏了,这时采⽤时间⽚原则,即:所有的进程都分⼀个相同的时间⽚,执⾏完时间⽚后,如果没有运⾏完,到队尾等待,不断重复,直到所有程序都执⾏完;当然,这种执⾏⽅式有缺点,就是轮换的次数太多了,费时间,所以有了反馈排队调度,这种算法是先分了好⼏个等级队列,最⾼等级的队列时间⽚最短,最低等级的时间⽚最长,假设有1、2、3、4四个队列,有程序A、B、C需要被执⾏,那么A、B、C先分别执⾏⼀个时间⽚,假如C在这⼀个时间⽚内执⾏完了,那就可以直接⾛了,⽽A和B就换到第2个队列中继续执⾏⼀个第2个队列的时间⽚,就此类推,直到全部执⾏完。
操作系统-作业调度7页word

一.各作业情况如下:优先级为小值优先,求平均周转时间和带权平均周转时间?1.先来先服务2.短作业优先3.静态优先答:时刻作业3和作业4都到达,3先所以执行3,再执行4平均周转时间=[(2-0)+(7-1)+(15-2)+(18-3)]/4=9平均带权周转时间=[(2-0)/2+(7-1)/5+(15-2)/8+(18-3)/3]/40时刻只有作业1到达,所以先执行1;2时刻作业2和3都到达,2短所以先执行2;7时刻作业3和4都到达,4短所以执行4,最后执行3平均周转时间=[(2-0)+(7-1)+(18-2)+(10-3)]/4=7.75平均带权周转时间=[(2-0)/2+(7-1)/5+(18-2)/8+(10-3)/3]/40时刻只有作业1到达,所以先执行1;2时刻作业2和3都到达,3优先值小所以先执行3;10时刻作业2和4都到达,4优先值小所以执行4,最后执行2平均周转时间=[(2-0)+(18-1)+(10-2)+(13-3)]/4=9.25平均带权周转时间=[(2-0)/2+(18-1)/5+(10-2)/8+(13-3)/3]/4二.各进程情况如下:求平均周转时间和带权平均周转时间?1.最高响应比优先2.时间片轮转(设时间片长为1)答:0时刻只有进程1到达,所以先执行1;3时刻只有进程2到达,所以执行2;9时刻进程3、4、5都到达, 进程3此时响应比是1+(9-4)/4=2.25, 进程4此时响应比是1+(9-6)/5=1.6, 进程5此时响应比是1+(9-8)/2=1.5,所以执行进程3;13时刻还剩进程4和5,进程4此时响应比是1+(13-6)/5=2.4, 进程5此时响应比是1+(13-8)/2=3.5,所以执行进程5,然后再进程4 平均周转时间=[(3-0)+(9-2)+(13-4)+(20-6)+(15-8)]/5=8平均带权周转时间=[(3-0)/3+(9-2)/6+(13-4)/4+(20-6)/5+(15-8)/2]/5求平均周转时间和带权平均周转时间平均周转时间=[(4-0)+(18-2)+(17-4)+(20-6)+(15-8)]/5=10.8平均带权周转时间=[(4-0)/3+(18-2)/6+(17-4)/4+(20-6)/5+(15-8)/2]/53.(6分)假设有四个作业,它们的提交时间和需要的计算时间如表2所示。
作业调度程序

作业调度程序作业调度程序是操作系统中的一个重要组件,它负责将作业从提交状态转换为运行状态,并决定哪些作业在什么时候运行以及在哪个处理器上运行。
作业调度程序的目标是实现资源的有效利用,包括处理器、内存、磁盘等,以提高系统的整体性能。
一、作业调度程序的基本概念作业调度程序的主要任务是将作业放入等待队列,并根据一定的调度算法从等待队列中选取作业进行处理。
在操作系统中,作业是一个程序或一个程序的一个执行实例。
当用户提交一个作业时,操作系统会为该作业分配必要的资源,并将其放入等待队列中。
等待队列按照先进先出(FIFO)的原则对作业进行排序。
当一个处理器空闲时,作业调度程序会从等待队列中选取一个作业进行处理。
在选择作业时,需要考虑许多因素,如作业的优先级、作业的类型(批处理、交互式、实时等)、作业的性质(CPU密集型、I/O密集型)等。
二、常见的作业调度算法1.先来先服务(FCFS)算法:按照作业到达的顺序进行调度,优先级相同的情况下最先到达的作业将优先获得处理器。
这种算法简单易行,但无法充分利用系统资源。
2.最短作业优先(SJF)算法:优先调度预计运行时间最短的作业。
这种算法可以减少平均等待时间和平均周转时间,但可能造成短作业长时间等待。
3.优先级调度算法:为不同类型的作业分配不同的优先级,优先级高的作业将优先获得处理器。
这种算法可以实现资源的有效利用,但实现起来比较复杂。
4.轮转法(Round Robin):按照固定的时间片将处理器分配给等待队列中的作业,时间片用完后该作业被放到队尾重新排队。
这种算法可以实现资源的平均分配,但可能导致某些作业等待时间过长。
5.多级反馈队列算法:将等待队列分为多个级别,不同级别的队列采用不同的调度算法。
这种算法可以灵活地适应不同类型和不同性质的作业,但实现起来比较复杂。
三、作业调度程序的实现作业调度程序的实现需要依赖于操作系统的内核和处理器。
在内核中,需要实现等待队列的管理、进程状态的管理以及处理器上下文的保存和恢复等功能。
《计算机操作系统》第5章 处理机调度

♦ 是指单位时间内系统完成作业的个数。 ♦ 显然,若处理的长作业多,则系统吞吐率低;若处理的短作业多,则系
统吞吐率高。 ♦ 系统吞吐率是评价批处理系统性能的重要指标。 3.分时系统调度算法常用评价准则 ►响应时间 ♦ 是指用户提交一个请求到系统响应(通常是系统有一个输出)的时间间
►FCFS调度算法是一种非抢占式调度算法。
5.2.1 先来先服务调度算法
►以低级调度为例,讨论FCFS调度算法的性能。各进程的调度顺序及详细 执行情况如图5-3所示。表5-2列出了各进程的周转时间、带权周转时间等 调度性能指标值。
5.2.1 先来先服务调度算法
►优点:FCFS调度算法简单、易于实现。
5.2.1 先来先服务调度算法
►先来先服务(First Come First Served,FCFS)调度算法是一种最简单 的调度算法。
►既可以用于高级调度,又可以用于低级调度。
►按照作业或进程到达系统的先后次序进行调度的。 ♦ 用于高级调度时,每次从后备队列中选择一个或多个最先进入该队列的 作业,将它们调入内存,为它们分配资源、创建进程,然后将进程链接 到就绪队列。 ♦ 用于低级调度时,每次从就绪队列中选择一个最先就绪的进程,把CPU 分派给它,使之投入运行,一直到该进程运行完毕或阻塞后,才让出 CPU。
5.2.2 短进程(作业)优先调度算法
►Shortest Process First,SPF 或 Shortest Job First,SJF ►该 算 法 优 先 选 择 短 进 程 ( 作 业 ) 投 入 运 行 , 可 分 别 用 于 高 级 调 度 和 低 级 调
5.2 常用调度算法
5.2.1 先来先服务调度算法 5.2.2 短进程(作业)优先调度算法 5.2.3 轮转调度算法 5.2.4 优先级调度算法 5.2.4 最高响应比优先调度算法 5.2.4 多级队列调度算法 5.2.4 多级反馈队列调度算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(4) 构造和填写作业运行时所需的有关表格。(如作业表)
(5) 作业结束时完成该作业的善后处理工作,如收回资 源,输出必要的信息,撤消该作业的全部进程 (PCB) 和作业控制块 JCB。
§5.3 进程调度
作业调度程序在挑选作业进入主存运行时, 要为该作业建立相应的进程。在作业完成后要撤 消该作业的全部进程。因此作业调度程序要调用 操作系统内核所提供的有关的进程管理原语。由 于进程只能由其父进程建立,所以在一般系统中, 作业调度程序都以进程的形式在系统中存在和活 动,称为作业调度进程。作业调度进程可以说是 系统中的祖先进程,由它完成作业调度的诸多功 能。
核的主要部分。
低级调度 高 级 执行 内存 调 度 RUN 作 业 调 时间片到 进程调度 I/O请求 度
( )
ห้องสมุดไป่ตู้
后备
作业后备状态
readya
挂 起 解 挂
I/O完成
blockeda
挂 起 解 挂
完成
readys
blokeds
中级调度
§5.1 作业的状态与处理流程
一、 作业状态
提交
收容
执行
完成
提交状态
作业
提交时间
运行时间
开始时间
完成时间
周转时间 带权周 转时间 ti(时) 2.00 2.00 1.60 1.30 6.90 Wi(Z) 1.00 4.00 16.00 6.50 27.50
ts(时) 1 2 3 4 8.00 8.50 9.00 9.50
tR(时) 2.00 0.50 0.10 0.20
(2) 资源利用率:在考虑设计目标的前提下应充分 发挥各种资源的效能,最大限度地使它们忙碌。科学 计算型作业和数据处理型作业搭配运行就是一种方法。 (3) 均衡地处理系统和用户的要求:例如个别用户 可能要求使用系统中的几乎全部外设,却只要求很少 的主存。系统若满足这类用户的愿望,势必影响主存 利用率,从而降低系统效率,所以一般都不得不推迟 这种作业的运行时间,等到有要求内存多而外设少的 作业与之搭配运行。但是我们选择的算法也不应使一 个作业的运行被无限制地推迟。
一个进程被建立后,系统为了便于对进程的管理, 将系统中的所有进程按其状态,将其组织成不同的进程 队列。于是系统中有运行进程队列、就绪进程队列和各 种事件的进程等待队列。 进程调度的功能是从就绪队列中挑选一个进程到处 理机上运行。负责进程调度功能的内核程序称为进程序 调度程序。
所谓作业调度程序挑选作业进主存运行是个宏 观的概念,实际上被选进主存运行的作业只是具有 了竞争处理机的机会(将来真正在处理机上运行的 是该作业的一个进程)。而进程调度程序才是真正 让某个就绪进程到处理机上运行。
优先级调度方法又可分为: 非抢占的优先级调度法:即一旦某个高优先级的进 程占有了处理机,就一直运行下去,直到由于其自 身的原因而主动让出处理机时(任务完成或等待事 件)才让另一高优先级进程运行。
可抢占的优先级调度法:任何时刻都严格按照高优
先级进程在处理机上运行的原则进行进程的调度。
例:某些I/O繁忙型的进程,它们大部分时间是在等
设计时应将那些对系统运行影响较大的关键因素 作为调度算法考虑的主要依据。 (1) 设计目标:目标不同,系统的设计要求自然 不同。如批处理系统所追求的是充分发挥和提高计算 机的效率;实时系统所关心的是不要丢失实时信息并 及时给以处理;而分时系统则侧重于保证用户的请示 及时给予响应;计算中心要求系统吞吐量在大等等。
(4) 执行P操作而信号量不足,而被阻塞
(5) 来了更高优先权 (可被剥夺) (6) 进程运行完了
3. 单道批处理作业调度算法及衡量 (1) FCFS 先来先服务 先来先服务算法是最简单的调度方法。 其基本原则是按照作业到达系统或进程进
入就绪队列的先后次序来选择。FCFS 策略
是属于不可抢占策略。
若时间片为100毫秒,进程上次在CPU上的实际运行 时间为2毫秒,则它的优称级为50;若它上次实际运 行时间为50毫秒,则它的优级为2。由于I/O繁忙型的 进程每次在CPU上运行的时间很短,依此算法,它们
的优先级将较高,从而优先得到服务。
(3) 时间片轮转法 轮转法是最简单又最公平的进程调度算法,因此 也是使用得最多的算法之一。 轮转法分配给每一进程在CPU上运行的时间长度, 称之为时间片。诸进程以此时间片为限制,轮流使用 CPU。如果时间片到期时,进程尚未完成运行,调度 程序将剥夺它正在使用的CPU,转让给另一进程使用; 如果进程在使用完它的某一时间片之前已经完成运行 或已阻塞,CPU也立即转让给另一进程使用。
§5.2 作业的调度
系统中往往有成百个作业被收容在磁盘输 入井中,为了管理和调度作业,就必须记录已 进入系统的各作业的情况。因此同进程中的情 况类似,系统也为每个作业设置一个作业控制 块 (记为JCB),它记录了作业的有关信息。不同 系统的 JCB 所包含的信息有所不同,这取决系 统对作业调度的要求。
后备状态
运行状态
完成状态
作业从提交给系统直到它完成后离开系统前的整 个活动常划分为若干阶段。作业在每一阶段中所处的
状况称为作业的状态。系统中的作业通常分为四种状
态:
(1) 提交状态:一个作业被提交给机房后或用户通过
终端键盘向计算机中键入其作业时所
处的状态为提交状态。
(2) 后备状态:作业的全部信息都已通过输入机输入, 并由操作系统将其存放在磁盘的某些 盘区中等待运行,则称为后备状态。 (3) 运行状态:作业一旦被作业调度程序先中而被送入 主存中投入运行,称之为运行状态。 (4) 完成状态:作业完成其全部运行,释放出其所占用 的全部资源,准备退出系统的作业状 况称为完成状态。
JCB结构 见书P122 图6.8
JCB 是在作业进入系统时由 SPOOL 系统为其建立 的。其内容由作业控制卡中得到。同样 JCB 也是作业 存在于系统的标志,作业进入系统时,则为之建立 JCB。当作业退出系统时,则其 JCB 也被撤消。
在磁盘输入井中的所有后备作业按作业类型将它 们组成一个或多个后备作业队列。所谓后备作业队列 是由作业控制块 JCB 用表格或链指针组成的队列。作 业队列可按优先数大小和作业到达系统的时间顺序排 列。
Ti= tci- tsi 其中 tsi —— 作业i提交时间 tci —— 作业i完成时间
(2) 平均带权周转时间:
w
( wi )
i 1
n
n
Ti ( ) i 1t Ri
n
n
其中: tRi —— 作业i的实际运行时间
wi —— 作业i的带权周转时间
补充: 一、引起进程调度的原因 (1) 时间片到 (按时间片运行) (2) 进程提出I/O请求 ––– 阻塞,调新进程 (3) 进程挂起
§5.4 选择调度算法时应考虑的问题
目前比较普遍使用的几种调度算法,
对于作业调度和进程调度大致上都是适
用的。
在设计系统的调度程序时,首先要决定选择何种
调度算法,依据此算法来编制相应的调度程序。而调
度算法实际上就是系统所采取的调度策略,选择时所
要考虑的因素很多。如系统各类资源的均衡使用;对
用户公平并使用户满意;用户作业到达系统的时间; 作业的优先数;对主存和外设的要求;以及整个系统 的效率等。
计算机操作系统
第5章 处理机调度
主讲:房道伟 Daowei_fang@
主要内容
作业的状态与处理流程 作业的调度 进程的调度 选择调度算法时应考虑的问题 调度算法
在大型通用系统中,可能有数百个批处理作 业存放在磁盘的作业队列中,有数百个终端同主 机相联接。因此如何从这些作业中挑选作业进入 主存运行、如何在作业或进程间分配处理等,问
(2) 优先级调度算法 按照进程的优先级大小来调度,使高优先级 进程得到优先的处理的高度策略称为优先级调度 算法。 但在许多采用优先级调度的系统中,通常采 用动态优先数策略。进程的优先级不是固定的, 往往随许多因素的变化而变化。尤其随作业(进 程)的等待时间、已使用的处理机时间或其它资 源的使用情况而定。
待I/O操作完成,对于这一类进程,当它们要求
CPU运行时,应立即给予满足,以便让它们开始
下一个I/O操作和其它计算型的进程并行工作。
否则,这些I/O繁忙型的进程将长时间占据存储 器,降低系统并行度。
一个行之有效的算法是在进程每次获取CPU运行 后,重新指定该进程的优先级为 1/f。这里的f表示进
程上次在CPU上实际运行时间与时间片之比。例如,
一、 作业调度: (JCB作业控制块) 根据系统内所有资源的使用情况, 按照 某种调度算法选择一个后备作业进入系统, 并为其创造一个进程。 为此,作业调度还要为选中的作业分配
资源,作好作业支行前的准备。完成作业调度
功能的程序称为作业调度程序。
作业调度程序要完成以下工作: (1) 按照某种调度算法从后备作业队列中挑选作业。 (2) 为选中的作业分配主存和外设资源。 (3) 为选中的作业建立相应的进程。
轮转法在实现上也很容易,调度程序只要维护
一个先进先出的队列数据结构,将就绪进程排队, 每当一个进程的时间片运行完后,便把它从原来的 队头位置移到队尾,然后把现在处于队头位置的进 程调度到CPU上运行。时间片的计数则可通过定时 中断实现。
轮转法的性能取决于时间片长度的选择,进程间的 CPU上的切换需要时间。若一次切换时间为5毫秒,时间 片长度选择为20毫秒,则20%的CPU时间花费于进程调 度程序。为了改善CPU的利用率,可以增大时间片,比 如说为500毫秒,此时CPU利用率达99%之多,但每一进 程的响应时间也因之增大。若就绪队列中共有10个进程, 则每一进程需要等待5秒钟,才能在CPU上服务一次。
整系统负荷的作用,以平顺系统的操
作。其所使用的方法是通过“ 和“ 挂起 ” 解除挂起 ” 一些进程,来达到