目录
1. FCFS(First Come First Service)
多道批处理系统:
- 用户提交作业
- 操作员输入作业,存放在外存,作业存放在后备队列
- 由作业调度(长程调度)程序调入内存
3.2.1 批处理系统中的作业
1. 作业(Job)和作业步(Job Step)
1)作业不仅包含程序和数据,还应配有一份作业说明书,系统根据该说明书来对程序的运行进行控制。
2)作业步:是指作业中的每一个加工步骤。
2. 作业控制块(JCB)
JCB 是作业在系统中存在的标志,包含:作业标识、用户名称、用户账号、作业类型、作业状态、调度信息、资源需求、资源使用情况等。
3. 作业运行的三个阶段和三种状态
阶段 | 状态 |
---|---|
收容阶段 | 后备状态 |
运行阶段 | 运行状态 |
完成阶段 | 完成状态 |
1)收容阶段。操作员把用户提交的作业通过某种方式或 SPOOLing 系统输入到硬盘上,再为该作业创建 JCB,并把它放入作业后备队列中。
2)运行阶段。当作业被作业调度选中后,便为它创建进程和分配必要的资源,并将其放入就绪队列。运行阶段:作业第一次进入就绪状态到它运行结束为止。
3)完成阶段。当作业运行完成或因异常情况而提前结束时,作业进入完成阶段。
- 回收分配给该作业的 JCB 和所有资源
- 将作业运行结果信息形成输出文件后输出
3.2.2 作业调度的主要任务
作业调度的主要任务:
- 根据 JCB 信息,判断系统中的资源能否满足作业的需求
- 按照一定的调度算法,从外存的后备队列中选取某些作业调入内存
- 并为它们创建进程、分配必要的资源,安排在就绪队列中
作业调度需要做出以下决定:
- 接纳多少个作业:取决于多道程序度,即允许多少个作业同时在内存中运行
- 接纳哪些作业:取决于所采用的调度算法
3.2.3 FCFS 和 SJF 调度算法
1. FCFS(First Come First Service)
FCFS 算法又称先来先服务算法,比较有利于长作业(进程),而不利于短作业(进程)。
举例:下表列出了 A、B、C、D 四个作业分别到达系统的时间、要求服务的时间、开始执行的时间及各自的完成时间,并计算出各自的周转时间和带权周转时间。
进程名 | 到达时间 | 服务时间 | 开始执行时间 | 完成时间 | 周转时间 | 带权周转时间 |
---|---|---|---|---|---|---|
A | 0 | 1 | 0 | 1 | 1 | 1 |
B | 1 | 100 | 1 | 101 | 100 | 1 |
C | 2 | 1 | 101 | 102 | 100 | 100 |
D | 3 | 100 | 102 | 202 | 199 | 1.99 |
2. SJF(Short Job First)
SJF/SPF 算法又称短作业/短进程优先调度算法,是指对短作业或短进程优先调度的算法。
1)SJF 算法
是指从后备队列中选出若干个估计运行时间最短的作业,将它们调入内存运行。
SJF:外存后备队列 → 内存就绪队列
2)SPF 算法
是指从就绪队列中选出一个估计运行时间最短的进程,将处理机分配给它,使它立即执行并一直执行,直到完成或发生某事件而被阻塞,则放弃处理机再重新调度。
SPF:内存就绪队列 → 处理机执行
3)缺点
① 该算法对长作业不利。
② 该算法完全没考虑作业的紧迫程度,因而不能保证紧迫性作业/进程能及时得到处理。
③ 由于作业/进程的长短是根据用户所提供的估计执行时间而定的,而用户又可能会估计不准运行时间,致使该算法不一定能真正做到短作业优先调度。
OS 是不知道作业/进程的长短的,只有执行了才知道。
4)举例
进程名 | A | B | C | D | E | 平均 | |
到达时间 | 0 | 1 | 2 | 3 | 4 | ||
服务时间 | 4 | 3 | 5 | 2 | 4 | ||
FCFS | 完成时间 | 4 | 7 | 12 | 14 | 18 | |
周转时间 | 4 | 6 | 10 | 11 | 14 | 9 | |
带权周转时间 | 1 | 2 | 2 | 5.5 | 3.5 | 2.8 | |
SJF | 完成时间 | 4 | 9 | 18 | 6 | 13 | |
周转时间 | 4 | 8 | 16 | 3 | 9 | 8 | |
带权周转时间 | 1 | 2.67 | 3.2 | 1.5 | 2.25 | 2.1 |
3.2.4 优先级调度算法和高响应比调度算法
1. 优先级调度算法
在实际应用中,作业的性质可能是不同,运行的迫切性也有所不同。因此,可以为每个作业定义一个优先级,优先级越高的作业将优先获得调度:从外存后备队列进入到内存就绪队列中。
1)当应用于作业调度时,优先级调度算法是把具有最高优先级的作业调入到内存中。
2)当应用于进程调度时,优先级调度算法是调度就绪队列中具有最高优先级的进程获得处理机。
2. 高响应比优先调度算法
引入动态优先级,优先级随等待的时间延长而增加。计算公式如下:
1 + 等待时间/服务时间
优点:该算法既照顾了短作业,又考虑了作业到达的先后次序,不会使长作业长期得不到服务。
缺点:利用该算法时,每次调度之前,都须先做响应比的计算,会增加系统开销。
而且这个服务时间也是用户自己估计的吧。