批处理作业调度算法
根据操作系统的性质,作业调度算法可以分为以下两种类型:
单道批处理作业调度算法
- 定义: 在单道批处理系统中,一次只装入并运行一个作业,作业在执行期间独占所有系统资源。待该作业执行完毕后,系统才会调度下一个作业。
- 特点:
- 作业在执行期间独占所有计算机资源。
- 系统资源利用率较低,尤其在作业进行 I/O 操作时,CPU 会出现空闲等待。
- 通常用于早期的计算机系统或资源有限的环境。
常见算法:
先来先服务算法 (FCFS)
- 定义:每次调度按照作业进入“输入井”后备作业队列的先后次序来挑选作业,优先将最先进入队列的作业调入主存,分配资源,创建进程,放入进程就绪队列准备运行。
- 特点:FCFS是一种非剥夺式调度算法,容易实现,体现了公平,但效率不高,只考虑等候时间而不考虑作业服务时间长短。
- 优点:简单,易于实现,保证公平。
- 缺点:对短作业不利,有利于长作业和CPU繁忙型作业,不利于I/O繁忙型作业。因此,FCFS作为主调度算法不常用。
短作业优先算法 (SJF)
- 定义:调度时以作业运行时间长短作为标准,从后备作业队列中选取运行时间最短的作业装入主存运行。
- 特点:优先选择短作业,有助于提高系统整体响应效率。
响应比最高者优先算法 (HRRF)
- 定义:既考虑作业等待时间,又考虑作业运行时间,计算所有作业的响应比,选择响应比最高的作业优先装入主存运行。
- 响应比公式:响应比 = (作业等待时间 + 作业运行时间) / 作业运行时间
- 特点:综合考虑等待时间和运行时间,保证公平性和高效性。
优先数调度算法
- 定义:为每个作业确定一个优先数,根据优先数的不同将作业排成多个队列,优先选取优先数最高且资源能满足的作业装入主存运行。
- 优先数确定原则:
- 对于时间要求紧迫的作业赋予较高优先数。
- 对于I/O量大的作业给予较高优先数,CPU量大的作业给予较低优先数。
分类调度算法 (均衡调度算法)
- 定义:根据系统运行情况和作业对资源的需求,先将作业分类,然后调度程序轮流从不同的作业类中挑选作业,尽可能使不同资源的作业同时执行,保证资源均衡利用。
多道批处理作业调度算法
- 定义: 在多道批处理系统中,系统支持多道程序设计,允许多个作业同时装入内存,这样可以在一个作业等待 I/O 操作时,CPU 可以调度其他作业执行,从而提高系统的资源利用率。
-
特点:
- 通过多道程序设计,系统可以并发处理多个作业,提升资源利用率和系统吞吐量。
- 可以同时运行多个作业,每个作业分别使用 CPU 和 I/O 资源。
- 适用于现代多任务操作系统,能够显著提高系统性能。
-
常见算法:
- 高级调度(作业调度):
- 负责从后备作业队列中选择合适的作业装入内存,以提高系统吞吐量。
- 常用策略包括先来先服务、优先级调度、按作业大小调度等。
- 低级调度(进程调度):
- 负责在内存中的就绪进程队列中选择下一个执行的进程。
- 常见算法包括时间片轮转、最短剩余时间优先、优先级调度等。
- 中级调度(内存调度):
- 使用交换技术(Swapping),在内存空间不足时将部分作业移到外存,以释放内存空间。
- 负责动态调整内存中的作业数量,平衡系统负载。
两者的对比
特性 | 单道批处理作业调度算法 | 多道批处理作业调度算法 |
---|---|---|
并发性 | 不支持,单次只执行一个作业 | 支持,多个作业可并发执行 |
资源利用率 | 低,CPU 经常空闲等待 | 高,充分利用 CPU 和 I/O |
系统复杂度 | 简单,调度策略较少 | 复杂,需要高级、中级和低级调度 |
适用场景 | 资源有限、任务量少的场景 | 现代多任务、多用户系统 |
典型算法 | 先来先服务、短作业优先、响应比最高 | 时间片轮转、优先级调度、作业调度 |
总结
- 单道批处理作业调度算法 适合资源有限的环境,较为简单,但资源利用率低,不适用于现代多任务系统。
- 多道批处理作业调度算法 能充分利用系统资源,提高 CPU 和 I/O 设备的利用率,是现代操作系统的标准设计模式。