在现代计算机操作系统中,总是会保持多道程序环境。一个作业被提交后,通常经过作业调度和进程调度后,才能获得处理机。有时为提高内存利用率,还会设置中程调度。那我们先来了解一下处理机调度的层次吧。
高级调度,又称作业调度,它的调度对象是作业。主要是根据某种算法,决定使外存上的哪几个作业调入内存,然后创建进程、分配资源,等待处理机。高级调度一般不放入分时系统和实时系统。
低级调度,又称进程调度,主要对象是进程。根据某种算法,决定就绪队列上的哪个进程获得处理机。低级调度是最基本的一种调度,批处理系统、实时、分时系统中都必须配置。
中级调度,又称内存调度。主要是将暂时不能运行的进程调至外存等待,等他们举办运行条件时在决定是否调入内存。这里主要介绍处理机调度,中级调度会在后续介绍存储器时详细讲解。
这三种调度中,进程的运行频率最高,所以低级调度运行最多、占时最少的。作业调度周期最长,基本上好几分钟一次。中程调度介于上述两者之间。
操作系统的设计中,是要有明确的目标,而它们的目的也不一样,处理机调度算法是为了提高资源利用率、保证各进程之间的公平性和平衡性,还有必要时的策略强制执行。批处理系统追求的是平均最低周转时间、系统吞吐量、处理机利用率高。分时系统的首要目的是响应时间快,用户请求服务与系统响应时间相适应。实时系统的目标是,保证任务开始执行的最短时间和完成的最迟时间,系统中的进程的可预测性。
接下来就详细说明一下作业调度和进程调度。
作业作为一个比程序更大的概念,不仅包含了通常的程序和数据,还应配有一份作业说明书。在批处理系统中,作业是基本单位。而我们为了管理和调度作业,就设置了一个作业控制块,作为作业在系统中存在的标志,保存有系统对作业进行管理和调度所需的全部信息。
作业运行也分为三个阶段和三种状态,通常需要经历收容、运行和完成三个阶段,所以也有后备状态、运行状态、完成状态。
作业调度的主要工作其实很简单,判断并决定从后备队列中选取多少作业进入内存,并根据系统的多道程序度进行抉择。还需要选择接纳哪些作业,这取决于所采用的调度算法,比如常用的短作业优先算法,还有响应比高者优先算法等,小编会在后续文章中详细介绍。
进程调度,它的主要任务有三个:保存处理机的现场信息、按某种算法选取进程、把处理器分配给进程。为了实现进程调度,在进程调度机制中,具备了三个基本部分:排队器、分配器、上下文切换器。而关于进程调度的方式,也引入了抢占方式和非抢占方式加强控制。非抢占方式,把处理机分配给进程后就只能等待进程完成,及其不利于分时方式和实时方式,所以就引入了抢占方式,根据它的主要原则分为:优先权、短进程优先和时间片原则。
这些大概就是操作系统调度的大体框架了,下一篇文章会详细介绍调度算法的内容。