操作系统笔记-进度调度算法篇

进程调度的时机

定义:操作系统按照某种算法从就绪队列中选择1个进程为其分配CPU
进程调度和切换的情况:
一、进程主动放弃:

  1. 进程正常终止
  2. 进程运行过程中发生异常
  3. 进程主动进入阻塞状态(等待I/O)

二、进程被动放弃

  1. 操作系统分给进程的时间片用完
  2. 有更高优先级的进程进入就绪队列
  3. CPU有更紧急的事情需要处理(中断处理)

我们理解的进程调度:包含了从就绪队列中选择一个进程来使用当前的CPU,同时需要进行进程切换:即一个进程让出CPU,让另一个进程来使用。
进程切换的过程包含了以下两个步骤:

  1. 对原来进程各自数据的保存(将数据保存在PCB控制块中)
  2. 对新的进程各自数据的恢复(将PCB中的数据重新恢复到相对应的寄存器中。)

进程调度的方式:

  1. 非抢占式调度:只允许进程主动放弃CPU,即使有更紧急的任务到达,当前进程依旧会使用CPU,直到该进程终止或者主动进入阻塞状态。
  2. 抢占式调度:当一个进程被分配给CPU之后,如果时间片用完,或者有更重要紧急的进程需要使用CPU,那么当前进程会被终止,CPU资源会被分配给更重要紧急的进程。

以上两者方式,后者的灵活性更高,适用于分时操作系统和实时操作系统,前者使用于早期的批处理系统。

进程不能调度的情况

  1. 在处理中断的过程中,是不能发生进程的切换和调度的。
  2. 进程处于操作系统内核程序的临界区中。
    临界区的定义:一段时间只允许一个进程访问该区域的资源,所以进程之间需要互斥的访问临界资源。
    临界资源:访问临界资源的那段代码
    内核程序临界区:访问内核的数据结构的,比如进程的就绪队列。
  3. 在原子操作的过程中,它是不可中断,一气呵成的。

评价进程调度算法常见的指标(有个了解即可)

  1. CPU资源利用率:CPU忙碌的时间占总时间的比例。
  2. CPU吞吐量:单位时间内完成了多少道作业,尽可能的希望吞吐量越大越好。
  3. 周转时间:任务从开始到结束完成的时间。
  4. 等待时间:进程处于等待CPU状态的时间之和,对于进程来说指的就是进程被建立之后等待CPU服务的时间之和。
  5. 响应时间:用户首次提出请求到被系统首次响应所用的时间。

常见的调度算法

早期的批处理系统

1.FCFS(First Come First Serve)算法:先来先服务算法
FCFS算法属于非抢占式算法
算法规则:按照进程/作业到达的先后顺序进行服务,等待时间越久的,优先被调用(排队的时候,第一个到的人等待的时间长一点)用于作业调度的时候:那个作业先到达后备队列,CPU先服务于该队列;用于进程调度的时候:考虑那个进程先到达就绪队列。
算法缺点:排在长作业之后的短作业需要等待非常长的时间,带权周转时间比较长,对短作业用户来说体验感不好。

2.SJF(short job first)和SPF(short process first)算法
SJF属于非抢占式算法
算法规则:运行时间最短的进程/作业优先得到服务。
算法思想追求最少的平均等待时间,最少的平均周转时间和平均带权周转时间。
算法优点:可以使得平均等待时间和平均周转时间最短。
算法缺点:对短作业有利,而对长作业不利。例如:有短进程一直到来,那么长进程可能长时间就得不到服务,就会产生饥饿现象,即长进程一直得不到服务。

3.SRTN(Shortest Remaining Time Next)算法
SRTN属于抢占式短作业优先算法,对比算法2,它可以使得以上指标的时间更低。
算法规则:如果有新进程加入到就绪队列中就需要进行进程调度,如果新到达的进程剩余时间比当前运行的进程的剩余时间短,那么新的进程就会剥夺当前运行进程的CPU,当前运行进程重新回到就绪队列中。此外,当一个进程完成时,也需要进行调度。

4.HRRN算法(Highest Response Ratio Next)算法,
由于FCFS算法:仅仅考虑到了选择等待时间更长的进程,但没有考虑到作业的运行时间,对短作业不利。SJF算法:仅仅考虑到了选择执行时间最短的进程,但没有考虑等待时间,对长作业不利。所以HRRN算法的提出就是为了兼容两者的优点,它又称高响应比优先算法。
算法思想:综合考虑作业|进程的等待时间和运行时间。
算法规则:每次调度之前计算作业|进程的响应比:选择响应比最高的作业进行服务。
响 应 比 = 等 待 时 间 + 要 求 服 务 时 间 要 求 服 务 时 间 响应比=\frac{等待时间+要求服务时间}{要求服务时间} =+
算法优点:综合考虑了进程等待时间和进程的要求服务时间,等待时间相同时,优先考虑运行时间。运行时间相同时,优先考虑等待时间长的进程。

交互式系统

在这里插入图片描述
算法3:多级反馈队列调度算法(UNIX系统所采用的),用于进程调度。
算法规则:

  1. 设置多级就绪队列,各队列优先级从高到低,时间片的大小从小到大。
  2. 新进程到达之后先进入第一级队列,按照FCFS原则排队等待被分配的时间片。如果时间片用完,进程运行时间还没有结束,那么进程进入下一级队列的队尾。如果已经在最底层的话,那么重新放回最下层队列队尾。针对被抢占的进程会重新放回原队列的队尾,不会进入下一层。
  3. 只有第k级队列为空的时候,才会为第k+1队列队头的进程分配时间片。

该进程属于抢占式算法:第二级队列中的进程正在运行,如果第一级队列出插入一个新进程,由于新进程的优先级高于当前运行进程的优先级,因此会被剥夺CPU的使用权,故当前运行的进程会被放回第二级队列的队尾。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值