王嘉贝

导航

操作系统学习笔记02 - 进程调度算法1

进程调度的学习

  1. CPU的利用率
  2. 系统的吞吐量

CPU 利用率

CPU运行处理事务的时间/总时间的占比
某进程cpu使用率 = 该进程cpu时间 / 总cpu时间

系统吞吐量

系统吞吐量 = 完成的作业数量/总共花费的时间
例如一个分成5个阶段的流水线指令 t,3t,t,2t,t , 执行N次,计算系统的吞吐量

吞吐量 = N/{(1+3+1+2+1)t + (N-1)3t}

周转与时间

周转时间 : 某一个作业完成的时间 - 作业提交时间 ;

平均周转时间 =各作业的周转时间总和/作业数;

带权周转时间=周转时间/作业实际运行时间;

平均带权周转时间 = 各个带权周转时间总和/作业数;

进程等待时间: 等待被服务的时间,等待IO设备的时间不属于进程的等待时间 ;
作业等待时间: 进程等待时间 + 在外存后备队列中等待的时间;

响应时间: 用户从提交请求到首次产生响应的时间;


调度计算的算法

  1. FCFS 先来先服务
  2. SJF 短作业优先
  3. HRRN 高响应比优先
先来先服务

使用一个队列来储存作业。 按照作业到达的先后顺序来决定执行顺序;
作业调度: 考虑那个作业到达后备队列
进程调度: 那个进程到达就绪队列

非抢占式算法

examp:

进程ID 到达时间 实际用时 完成时间 周转时间 带权周转时间
P1 0 7 7 7 1
P2 2 3 10 8 8/3
P3 4 12 22 18 3/2
P4 8 8 30 22 11/4

比较带权周转时间可以知道
整体而言 对长作业有利对于短作业不利

短作业优先算法

追求最小的平均周转时间
SJF/SPF 是非抢占式的算法,SRTN shortest remain Time Next 抢占式的算法

同样的上述的例子再次并不是按照P1- P2 - P3 - P4 的顺序完成
P1 在执行结束前, P2,P3都在等待队列里面因为P2用时比较少所以P2 优先P3
在P2的执行时间中, P4 到达了队列,由于P4所需时间小于P3 所以优于P3 处理

进程ID 到达时间 实际用时 完成时间 周转时间 带权周转时间
P1 0 7 7 7 1
P2 2 3 10 8 8/3
P4 8 8 18 10 5/4
P3 4 12 30 26 13/6

相比于先来先服务的算法,平均的带权周转时间更短
抢占式的会当P2 到达的时候挂起P1 优先完成P2 之后在激活P1 继续运行

特点:

  1. 对短作业更加的有利,不利于长作业
  2. 可能产生饥饿现象
高响应比优先算法(Highest Response Ratio Next)

每次调度之前计算每个作业的响应比 :
(等待时间 + 要求服务时间)/要求服务时间

非抢占式的算法:

综合考虑了等待时间和运行时间(要求服务时间)
等待时间相同时,要求服务时间短的优先(SJF 的优点)
要求服务时间相同时,等待时间长的优先(FCFS 的优点)
对于长作业来说,随着等待时间越来越久,其响应比也会越来越大,从而避免了长作业饥饿的问题

posted on 2021-06-10 16:17  toBeGeek  阅读(222)  评论(0编辑  收藏  举报