处理机调度

为什么要进行处理机调度

如果没有处理机调度,则意味着必须等待当前进程执行完毕后下一进程才能执行,而进程常需等待外设的输入,I/O的速度相比处理机是非常慢的,因此这会对处理机资源造成严重浪费。引入调度后,可在运行进程等待输入时把处理机调度给其他进程,从而提高处理机的利用率。

调度的层次

三级调度

  1. 作业调度(高级)
    在外存的作业中挑选一个或多个作业,给它们分配内存、I/O设备等资源,并建立相应的进程。
  2. 内存调度(中级)
    把暂时不能运行的进程调至外存等待(挂起态),当它们重新具备运行条件且内存空闲时,由中级调度来把这些就绪进程重新调入内存,并修改为就绪态,挂在就绪队列上等待。
  3. 进程调度(低级)
    从就绪队列选取一个进程把处理机分配给它。

三级调度的联系

  1. 作业调度从外存的后备队列选择一批作业进入内存,为它们建立进程,为进程活动做准备,频率最低。
  2. 进程调度从就绪队列选出一个进程把其改为运行态,分配给它CPU,频率最高。
  3. 中级调度为了提高内存的利用率和系统吞吐量,系统把暂时不能运行的进程挂起来,中级调度又选择具备条件的进程将其唤醒。

进程调度方式

  1. 非剥夺调度方式(非抢占式)
    一旦把一个CPU分配给一个进程,该进程就会保持CPU直到终止或转化为等待态。这种方式实现简单、系统开销小,适用于大多数批处理系统,但不能用于分时系统和实时系统。
  2. 剥夺调度方式(抢占式)
    若有优先级更高的进程需要使用处理机,则立即暂停正在执行的进程。这种方式对提高系统吞吐率和响应效率有明显的好处。

调度的评价准则

  1. CPU利用率
  2. 系统吞吐量:单位时间内CPU完成的任务数
  3. 周转时间 = 作业完成时间 - 作业提交时间
  4. 等待时间:等待处理机状态的时间之和
  5. 响应时间:用户提交请求到系统首次产生响应所用的时间

典型的调度算法

  1. 先来先服务调度算法(FCFS)
    既可用于作业调度,又可用于进程调度。非抢占式。算法简单,效率低,相比SJF和高响应比算法对于短作业不利,有利于CPU繁忙型作业,但不利于I/O繁忙型作业。
  2. 短作业优先调度算法(SJF)
    短作业优先(SJF)算法从后备队列选择一个或多个估计运行时间最短的作业,将它们调入内存;短进程优先(SPF)调度算法从就绪队列选择一个估计运行时间最短的进程,将处理机分配给它。非抢占式。该算法对长作业不利(饥饿现象),不能保证紧迫性作业会被及时处理,但是平均等待时间、平均周转时间最少。
  3. 高响应比优先调度算法(对FCFS和SJF算法的综合平衡)
    响 应 比 = 等 待 时 间 + 要 求 服 务 时 间 要 求 服 务 时 间 响应比=\frac{等待时间+要求服务时间}{要求服务时间} =+主要用于作业调度,每次调度前先计算每个作业的响应比,选出响应比最高的作业投入运行。根据公式可知
    ①作业等待时间相同,短作业的要求服务时间短,响应比更高,有利于短作业
    ②要求服务时间相同,等待时间越长,响应比越高,实现了先来先服务。
    ③对于长作业,等待时间越长,响应比越高,因此也可以获得处理机,解决了饥饿状态。
  4. 优先级调度算法
    既可用于作业调度,又可用于进程调度。根据优先级更高进程是否可抢占正在执行的进程,分为抢占式和非抢占式两种。根据进程创建后优先级是否可以改变分为静态优先级和动态优先级。一般优先级的设计遵守下列原则:
    ① 系统进程 > 用户进程
    ② 交互型进程 > 非交互型进程
    ③ I/O型进程 > 计算型进程
  5. 时间片轮转调度算法
    主要用于分时系统,先来先服务原则,但仅运行一个时间片,时间到后如果进程未完成,则重新返回就绪队列末尾排队。
  6. 多级反馈队列调度算法(融合了前几钟算法的优点)
    ①设置多个就绪队列,赋予各个队列不同的优先级,第1级队列优先级最高,随后依次递减。
    ②各个队列时间片大小不同,优先级越高,时间片越小
    ③一个进程进入内存后,首先都放入第1级的队列末尾,队列内部采用FCFS原则,一次调度未完成的进程转入下一级队列的末尾,直到第n级队列(无法再降,就一直留在最低优先级的队列直到运行结束)。
    ④抢占式调度,永远运行优先级更高的队列,直到该队列空才会运行下一级队列。
    优势:对于这种算法,短作业优先,周转时间短,长作业经过前面几个队列也得到部分执行,不会长期得不到处理。

调度的时机、切换和过程

不能进行调度的三种情况

  1. 在处理中断过程中
  2. 进程处于操作系统内核程序临界区
  3. 原子操作过程中

应该进行调度和切换的情况

  1. 当前进程无法继续运行
  2. 中断处理结束或自陷处理结束后
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值