作业是用户提交给操作系统完成的一个独立任务,是要求计算机所做工作的集合。每个作业必须经过若干相对独立,且相互关联的加工步骤才能得到结果,其中每个加工步骤称为作业步。例如,一个作业可分成编译、链接、装入和运行这4个作业步,上一个作业步的输出往往是下一个作业步的输入。作业由用户组织,作业步由用户指定,当一个作业被作业调度程序选中进入内存并且投入运行时,操作系统将为此用户作业生成相应的用户进程以便完成其任务。作业与进程的区别表现在以下4个方面。
(1)作业是用户向计算机提交任务的任务实体。在用户向计算机提交作业后,系统将该作业放入外存中的后备作业队列等待作业调度。而进程则是完成用户任务的执行实体,是向系统申请分配资源的基本单位。任何一个进程,只要它被创建,总是有相应的部分存在于内存中。
(2)一个作业可以由多个作业步组成,即同时对应多个进程,并且至少由一个进程组成;反之则不成立。
(3)作业的概念主要用在批处理系统中,如UNIX这样的分时系统中就没有作业的概念。而进程的概念则用在几乎所有的多道程序系统中,在现代操作系统中进程又被细化为线程,也就是一个进程下有多个能够独立运行的更小单位。
(4)作业调度的主要功能是检查系统是否满足作业的资源要求,以及按照一定的算法来把外存后备作业队列中的作业调入内存,为其创建进程并插入进程就绪队列等待进程调度。进程调度则是根据一定的算法把CPU分配给进程就绪队列中的某个进程并让其执行。
1.批处理作业与进程的关系
在批处理系统中,一个作业的完成要经过作业提交、作业后备(收容)、作业执行和作业完成4个阶段。用户可以通过磁带机或磁鼓提交批处理作业,多个批处理作业进入系统后被依次存放在外存上,由系统为各批处理作业创建作业控制块(JCB),并将各作业的JCB排成一个队列(称为后备作业队列)来等待作业调度程序的调度。在系统控制下,作业调度程序根据后备作业队列中的JCB信息,逐个调度作业到内存中执行。批处理系统最能体现出作业是进程的任务实体,进程是作业的执行实体。没有作业进程就无事可做,而没有进程则作业无法完成。图3-9给出了一个批处理作业从预输入缓输出需要经历的4种状态。
图3-9 作业的状态变迁(www.xing528.com)
(1)提交状态。此时作业的信息正在由输入设备预输入外存。
(2)后备状态。此时作业预输入结束且已放入外存,但尚未被作业调度程序选中调入内存执行。
(3)执行状态。作业已被选中进入内存,并生成进程参与进程的“就绪—运行—阻塞”的三态微观调度。
(4)完成状态。作业已运行结束,甚至已经撤离,但正在等待缓冲输出运行的结果。
在图3-9中,批处理作业由系统的SPOOLing输入进程将作业存入磁盘上的输入井中,形成后备作业队列并等待作业调度程序的调度。作业调度程序一般也作为独立的进程运行,在后备作业队列中的批处理作业通常称为后备作业。作业调度程序每调度一道后备作业时,就先为该作业创建一个根进程,并由根进程通过执行作业控制语言解释程序来解释该作业的作业说明书。根进程在执行过程中可以产生作业步子进程,子进程也可以创建自己的子孙进程,这些进程并发执行协调完成作业的具体任务。因此一个作业在执行过程就转换成了一组执行实体——进程簇。当根进程在执行过程遇到作业说明书中“撤除作业”语句时,则将该作业由执行状态改为完成状态,并将作业及其相关运行结果存入磁盘的输出井,最后由作业终止进程完成该作业执行结果的输出,并回收该作业所占用的系统资源,同时删除与该作业相关的数据结构,如作业控制块(JCB)和作业在输出井中的相关信息。此外,作业终止进程在撤除一道作业后,还可向作业调度程序请求新的作业调度。
2.分时系统中作业与进程的关系
在分时系统中,作业的提交方法、组织形式与批处理作业差别较大。系统启动时通过与系统链接的终端,为每个终端创建一个终端进程来接收终端用户的作业处理要求。终端进程执行命令解释程序,从终端设备读入用户提交的命令并解释执行。因此,在分时系统中用户可以通过命令解释程序来逐条输入命令,提交一个作业或作业步。分时系统的作业提交是一次用户上机交互的过程,因此可以把终端进程的创建看作一个交互作业的开始。分时系统通过命令解释程序应答式地逐条输入命令,对于每一条终端命令,系统为其创建一个子进程,如果当前提交的是一条后台命令,则可以与下一条中断命令并行处理。各个子进程在运行过程中可以根据自己的需要,再创建自己的子孙进程。终端命令对应的进程结束后,对命令的处理也随之结束。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。