3. 处理机调度
3.1 处理机调度的层次和目标
层次
- 高级调度(High Level Scheduling):调度对象是作业。根据某种算法,决定将外存处于后备队列中的哪几个作业调入内存。只用于多道批处理系统中。
- 中级调度(Intermediate Scheduling):将那些暂时不能允许的进程,调至外存等待;当它们具备运行条件且内存又稍有空闲时,由中级调度来讲外存上的那些具备允许条件的就绪进程重新调入内存。
- 低级调度(Low Level Scheduling):调度对象是进程(或内核级线程)。根据某种算法,决定就绪队列中的哪个进程获得处理机,并由分派程序将处理及分配给选中的进程。
目标
- 资源利用率( Utilization )
- 公平性(Fairness)
- 资源的平衡利用(Balance)
- 策略的强制执行
3.2 作业调度
一些基本概念
周转时间 = 作业完成时刻 - 作业到达时刻
带权周转时间 = 周转时间 / 服务时间;
平均周转时间 = 作业周转总时间 / 作业个数;
平均带权周转时间 = 带权周转总时间 / 作业个数;
先来先服务(First-come First-Served,FCFS)调度算法
该算法既可用于作业调度,也可以用于进程调度。系统按照作业到达的先后次序来进行调度
短作业优先(Shortest Job First,SJF)调度算法
该算法既可以用于作业调度,又可以用于进程调度。 在作业调度中,该算法每次从后备作业队列中挑选估计服务时间最短的一个或几个作业,将他们调入内存,分配必要的资源,创建进程并放入就绪队列。
最短剩余时间优先(Shortest Remaining Time,SRT)调度算法
抢占式算法,最短剩余时间优先,总是选择剩余时间最短的进程。
优先级调度算法(Priority-Scheduling Algorithm,PSA)
由外部赋予作业相应的优先级,系统从后备队列中选择若干个优先级最高的作业装入内存。
高响应比优先级调度算法(Highest Response Ratio Next,HRRN)
高响应比优先调度算法既考虑作业的执行时间也考虑作业的等待时间,综合了先来先服务和最短作业优先两种算法的特点。
该算法中的响应比是指作业等待时间与运行比值,响应比公式定义如下:
响应比 =(等待时间+要求服务时间)/ 要求服务时间,即 RR =(w+s)/ s= 1 + w / s,因此响应比一定是大于 1 的。
系统把处理机分配给就绪队列中响应比最高的进程。
例子
分别算出用 FCFS、SJF、HRRN 调度的周转时间、带权周转时间、平均周转时间、平均带权周转时间。
作业名 | 到达时间 | 处理时间 |
---|---|---|
A | 0 | 3 |
B | 2 | 6 |
C | 4 | 4 |
D | 6 | 5 |
E | 8 | 2 |
FCFS:
作业名 | 开始时间 | 结束时间 | 周转时间 | 带权周转时间 |
---|---|---|---|---|
A | 0 | 3 | 3 | 1 |
B | 3 | 9 | 7 | 1.5 |
C | 9 | 13 | 9 | 2.25 |
D | 13 | 18 | 12 | 2.4 |
E | 18 | 20 | 12 | 6 |
总周转时间:43
总带权周转时间:13.15
SJF:
作业名 | 开始时间 | 结束时间 | 周转时间 | 带权周转时间 |
---|---|---|---|---|
A | 0 | 3 | 3 | 1 |
B | 3 | 9 | 7 | 1.5 |
C | 11 | 15 | 11 | 2.75 |
D | 15 | 20 | 14 | 2.8 |
E | 9 | 11 | 3 | 1.5 |
总周转时间:38
总带权周转时间:9.95
HRRN:
作业名 | 开始时间 | 结束时间 | 周转时间 | 带权周转时间 |
---|---|---|---|---|
A | 0 | 3 | 3 | 1 |
B | 3 | 9 | 7 | 1.5 |
C | 9 | 13 | 9 | 2.25 |
D | 15 | 20 | 14 | 2.8 |
E | 13 | 15 | 7 | 3.5 |
总周转时间:40
总带权周转时间:11.05
所以
算法 | 平均周转时间 | 平均带权周转时间 |
---|---|---|
FCFS | 8.6 | 2.63 |
SJF | 7.6 | 1.99 |
HRRN | 8 | 2.21 |
3.3 进程调度
任务
- 保存处理机的现场信息
- 按某种算法选取进程
- 把处理机分配给进程
方式
- 非抢占式(Nonp