1.处理机调度的层次:
- 高级调度,又叫长程/作业/宏观调度,他的调度对象是作业,不涉及CPU,外存后备队列中选择作业进入内存就绪队列。为他们创建进程分配资源。
- 低级调度又称为进程调度或者短程调度,其送调度的对象是进程或者内核线程,他主要是分配CPU,从就绪队列中选择一个进程来执行并由分派程序(Dispatcher)分配处理机。
- 中级调度又称为内存调度,目的是提高内存利用率和系统吞吐量。他会把暂时不能运行的进程调至外存等待,此时进程的状态称为挂起状态。当他具备运行的条件且内存又有空闲的时候,就会把他重新调入内存变为就绪状态。
图示:
处理机调度算法的共同目标
1.努力提高CPU的利用率,尽可能使处理机和资源都保持忙碌的状态
2公平性:使诸进程都获得合理的CPU时间,不会发生进程饥饿现象
3.平衡性:因为系统可能有具有多种类型的进程,调度算法要尽可能保持系统资源的平衡性。
4.策略强制执行(抢占):比如制定的一些安全策略,只要需要求必须强制执行
批处理系统的目标:
- 平均周转时间短(所谓周转时间就是从作业被提交给系统开始,到作业完成为止的这段时间间隔)
周转时间= 结束时间 -到达时间
平均周转时间:
2.系统吞吐量高
3.处理机利用率高
作业与作业调度:
作业:程序+作业说明书,系统是根据说明书来对程序的运行进行控制,在批处理系统中是以作业为基本单位从外存调入内存的。
作业调度的主要任务,根据JCB(作业控制块)中的信息,检查系统中的资源能否满足作业对资源的需求,以及按照一定的调度算法,从外存的后被队列中选取某些作业调入内存,并为他们创建进程,分配资源,然后将新创建的进程排在就绪队列上等待调度。
调度算法:
- 先来先服务(FCFS)
按照作业到达的先后顺序来进行调度,或者说他是优先考虑在系统中等待时间最长的作业。
2. 短作业优先算法(SJF)
作业越短优先级越高,可提高系统的吞吐量,但是对长作业不利
3.高相应比优先调度算法
既考虑作业的等待时间,又考虑作业运行时间的调度算法。
优先权=(等待时间+要求服务时间)/要求服务时间
响应比R=1+(等待时间/服务时间)
看个例子:
作业 | 到达时间 | 处理时间 | 完成时间 |
A | 0 | 3 |
|
B | 2 | 6 |
|
C | 4 | 4 |
|
D | 6 | 5 |
|
E | 8 | 2 |
|
先来第一种FCFS算法:
作业的次序就是:A=>B=>C=>D=>E 完成时间就是3,9,13,18,20
第二种SJF算法: A=>B=>E=>C=>D
完成时间: 3,4,8,10,15,20
第三种:高响应比优先:根据到达的时间分析A先执行,A执行完了以后只有B到达,所以执行B,B执行完了以后C,D,E都到达了。此时就需要计算一波响应比了
RC=1+5/4,RD=1+3/5,RE=1+1/2 所以RC最大,在B后执行的就为C,之后继续计算响应比,RD=1+7/5,RE=1+5/2,所以C执行完了就执行E,然后执行D
接下来可能计算平均周转时间和带权周转时间:
以FCFS算法为例子周转的时间(提交任务到完成该任务的时间)为
A, B, C, D, E
3, 9-2=7,13-4=9,18-6=12 20-8=12
平均周转时间=(3+7+9+12+12)/5
带权周转时间=周转时间/系统为他提供服务的时间
所以FCFS算法的带权周转时间为:3/3,7/6,9/4,12/5,12/2
参考博客
https://blog.csdn.net/qq_28602957/article/details/53365757