进程调度知识

本文介绍了进程调度的不同算法,包括批处理系统的FCFS、SJF、SRTN,交互式系统的時間片轮转、优先级调度和多级反馈队列,以及实时系统的调度特点。同时阐述了进程调度的重要时机。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

进程调度


进程调度算法

批处理系统

批处理系统没有太多的用户操作,在该系统中,调度算法目标是保证吞吐量和周转时间(从提交到终止的时间)。

  • 先来先服务 first-come first-serverd(FCFS)
  • 非抢占式的调度算法,按照请求的顺序进行调度。
  • 有利于长作业,但不利于短作业,因为短作业必须一直等待前面的长作业执行完毕才能执行,而长作业又需要执行很长时间,造成了短作业等待时间过长。
  • 短作业优先 shortest job first(SJF)
  • 非抢占式的调度算法,按估计运行时间最短的顺序进行调度。
  • 长作业有可能会饿死,处于一直等待短作业执行完毕的状态。因为如果一直有短作业到来,那么长作业永远得不到调度。
  • 最短剩余时间优先 shortest remaining time next(SRTN)
  • 最短作业优先的抢占式版本,按剩余运行时间的顺序进行调度。
  • 当一个新的作业到达时,其整个运行时间与当前进程的剩余时间作比较。如果新的进程需要的时间更少,则挂起当前进程,运行新的进程。否则新的进程等待。

交互式系统

交互式系统有大量的用户交互操作,在该系统中调度算法的目标是快速地进行响应。

  • 时间片轮转
  • 将所有就绪进程按 FCFS 的原则排成一个队列,每次调度时,把 CPU 时间分配给队首进程,该进程可以执行一个时间片。
  • 当时间片用完时,由计时器发出时钟中断,调度程序便停止该进程的执行,并将它送往就绪队列的末尾,同时继续把 CPU 时间分配给队首的进程。
  • 优先级调度
  • 为每个进程分配一个优先级,按优先级进行调度。
  • 为了防止低优先级的进程永远等不到调度,可以随着时间的推移增加等待进程的优先级。
  • 多级反馈队列
  • 一个进程需要执行 100 个时间片,如果采用时间片轮转调度算法,那么需要交换 100 次。
  • 多级队列是为这种需要连续执行多个时间片的进程考虑,它设置了多个队列,每个队列时间片大小都不同,例如 1,2,4,8,…。进程在第一个队列没执行完,就会被移到下一个队列。这种方式下,之前的进程只需要交换 7 次。
  • 每个队列优先权也不同,最上面的优先权最高。因此只有上一个队列没有进程在排队,才能调度当前队列上的进程。
  • 可以将这种调度算法看成是时间片轮转调度算法和优先级调度算法的结合。

实时系统

  • 实时系统要求一个请求在一个确定时间内得到响应。
  • 分为硬实时和软实时,前者必须满足绝对的截止时间,后者可以容忍一定的超时。

进程调度时机

  • 进程状态转换的时刻:进程终止、进程睡眠;
  • 当前进程的时间片用完时(current->counter=0);
  • 设备驱动程序
  • 进程从中断、异常及系统调用返回到用户态时;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清梦旅人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值