操作系统--第三章处理机调度与死锁_1

处理机调度定义:

在多道程序环境下,动态的将处理机分配给处于就绪状态的一个进程使之执行.
对于大型系统运行时的性能,很大程度上取决于处理机调度性能的好坏.

处理机调度的层次:

  1. 高级调度:
    又称为长程调度或作业调度,他的调度对象是外村上处于后备队列中的作业.高级调度主要用于多道批处理系统中,而在分时和实时系统中不设置高级调度.
  2. 低级调度: 又称为短程调度或进程调度,其调度对象是进程.在多道批处理,分时和实时三种类型的OS中,都必须配置这级调度.
  3. 中级调度: 又称内存调度,引入它的主要目的是提高内存利用率和系统吞吐量,它将已具备运行条件且内存又稍有空闲时,把外存上的那些已经具备运行条件的就绪进程再重新调入内存,并将其挂在就绪队列上等待.

处理机调度算法的共同目标:

  • 资源利用率
  • 公平性
  • 平衡性
  • 策略强制执行

批处理系统的目标:

  • 平均周转时间短
  • 系统吞吐量高
  • 处理机利用率高

分时系统的目标:

  • 响应时间快
  • 均衡性

实时系统的目标:

  • 截止时间的保证
  • 可预测性

作业与作业调度

作业(Job)定义:作业是一个比程序更宽泛的概念,它不仅包含了通常的数据和程序,还有一份作业说明书,系统根据该说明书来对程序的运行进行控制.

同进程一样,作业也有与之对应的控制块:JCB 作业控制块.它是作业在系统中存在的标志,保存了系统的作业进行管理和调度所需要的全部信息.

作业调度的主要任务:根据JCB的信息,检查系统中的资源能否满足作业需求,按照一定的调度算法(下面介绍),从外存的后备队列选取某些作业调入内存,并创建进程,分配资源,再将创建的进程排在就绪队列上等待调度.每次进行作业调度时,都需要做两个决定:接纳多少个作业,接纳哪些作业.

调度算法:

  1. 先来先服务(FCFS)调度算法:
    它是最简单的调度算法,系统按照先来后到的顺序进行调度它是最简单的调度算法, 系统按照先来后到的顺序进行调度

  2. 短作业优先(SJF)调度算法:
    它以作业的长短来计算优先级,作业越短,其优先级越高,作业的长短是由作业所要求的运行时间来衡量的.
    该算法相较于FCFS有改进但还是有很大的缺陷:
    必须预知作业的运行时间/对长作业非常不利/
    人机无法实现交互/不能保证紧迫性作业及时处理.

  3. 优先级(PSA)调度算法:
    它以外部赋予作业相应的优先级,调度算法根据该优先级进行调度

  4. 高响应比优先(HRRN)调度算法:
    它以一个响应比Rp为基准调度作业
    Rp=(等待时间+要求服务时间)/要求服务时间=响应时间/要求服务时间
    由上式可以看出:
    ①. 如果作业等待时间相同,那么要求的服务时间越短优先级越高,有利于短作业
    ②. 如果作业要求服务时间相同时,作业的优先级又取决于等待时间

进程调度

进程调度的任务: 保存处理机现场信息//按某种算法选取进程//把处理机分配给进程.


进程调度方式:
1. 非抢占式: 一旦把处理机分配给某进程,除非进程执行完毕,或者阻塞,否则不会因为其他任何原因去抢占当前正在运行进程的处理机.
2. 抢占方式: 这种调度方式允许调度程序根据某种规则,去暂停某个正在执行的进程,将已分配给某进程的处理机重新分配给另一进程.其"抢占"主要原则有三:

①. 优先权原则(高优先权抢占低优先权进程)
②. 短进程优先原则(新到的短进程抢占当前长进程)
③. 时间片原则(时间片用完便重新调度)

调度算法:

  • 轮转调度(RR)算法: 将就绪进程排成一个队列,从队首开始分配时间片,用完但未执行完毕的移至队列尾等待下一次分配.在该算法中,当时间片未用完但进程执行完毕也会触发调度.
  • 优先级调度算法: 按类型分为两种:抢占式和非抢占式优先级调度算法.这里的调度规则便是"程序优先级".
    优先级的类型分为两种:
    ①.静态优先级:在创建进程时便决定了优先级,在运行期间不变.
    ②.动态优先级:在创建进程时先赋予一个优先级,随着进程的推进或等待时间的增加而改变,以获得更好的调度性能.
  • 多队列调度算法: 设置多个队列,每个队列采用一种调度算法(可以不同),固定某种类型的进程进入哪一个队列,以此获取更好的调度性能.
  • 多级反馈队列(MFQ)调度算法:设置多个队列,均采用FCFS算法,按优先级由高到低排列,S1队列优先级最高,时间片每次分配最短,当S1队列作业在分配的时间片内未做完时,将其移至S2队列尾,只有S1队列空时才会调度S2队列.在S2队列仍未完成的作业继续下调至S3队列尾,以此类推.

实时调度

实现实时调度的基本条件:
①提供必要的信息:包括(就绪时间,开始截止时间,完成截止时间,处理时间,资源要求和优先级).
②.系统处理能力能够在规定时间内完成全部的任务

实时调度的算法依然分为:非抢占式和抢占式.
抢占式中增加了一种调度算法:立即抢占.
立即抢占:它要求操作系统快速响应外部中断,一旦出现外部中断,只要当前任务未处于临界区,则立即剥夺当前任务的执行,将处理机分配给请求中断的紧迫任务.

调度算法:

  • 最早截止时间优先(EDF)算法:如字面意义,将任务按截止时间排序,截止时间越早,优先级就越高.
  • 最低松弛度优先(LLF)算法:
    松弛度:松弛度代表了该任务还可等待的最大时间,小于0时任务无法在截止时间前完成.
    松弛度=截止完成时刻–当前时刻–还需执行时间
    该算法根据任务的松弛程度,松弛程度越低,优先级就越高.

优先级倒置

何为优先级倒置?
即P2任务优先级低于P1任务却优先于P1执行的情况.

产生原因?
举例说明:有P1P2P3三个任务,优先级P1最高P3最低.当进入内存顺序为P3P2P1时,P3在调度之前申请了临界资源M,在P1开始执行之后想要申请M时便会被P3阻塞,此时低优先级的P2反而会比高优先级的P1先执行.

解决办法:
在动态优先级的基础上,当高优先级任务P1申请一个被低优先级任务P3占用的临界资源时,一方面阻塞P1,另一方面让P3继承P1的优先级,让P3继续执行直至P3退出临界区.

猜你喜欢

转载自blog.csdn.net/qq_39560579/article/details/83094807