linux 进程与作业的概念、区别和关系

来源:百度知道 编辑:UC知道 时间:2024/06/02 15:12:14
请问在linux操作系统中, 进程与作业的概念、两者的区别和两者的关系?
如何以用文字表达,如何回答进程与作业的区别? 进程与作业的关系?

区别:进程是一个程序在一个数据集上的一次执行,而作业是用户提交给系统的一个任务。
关系:一个作业通常包括几个进程,几个进程共同完成一个任务,即作业。
用户提交作业以后,当作业被调度,系统会为作业创建进程,一个进程无法完成时,系统会为这个进程创建子进程。

1. 进程组

每个进程除了有一个进程ID之外,还属于一个进程组。进程组是一个或多个进程的集合。通常,它们与同一作业相关联,可以接收来自同一终端的各种信号。每个进程组有一个唯一的进程组ID。每个进程组都可以有一个组长进程。组长进程的标识是,其进程组ID等于其进程ID。

组长进程可以创建一个进程组,创建该组中的进程,然后终止。只要在某个进程组中一个进程存在,则该进程组就存在,这与其组长进程是否终止无关。

2.作业

Shell分前后台来控制的不是进程而是作业(Job)或者进程组(Process Group)。一个前台作业可以由多个进程组成,一个后台也可以由多个进程组成,Shell可以运行一个前台作业和任意多个后台作业,这称为作业控制。

作业与进程组的区别:如果作业中的某个进程又创建了子进程,则子进程不属于作业。一旦作业运行结束,Shell就把自己提到前台,如果原来的前台进程还存在(如果这个子进程还没终止),它自动变为后台进程组。

3.一个作业是我们提交给shell的一项任务或者批处理,和操作系统无关。
进程是具体执行的一个可执行程序,是操作系统调度的对象。

##一个作业的例子
#!/bin/bash

mkdir -p ~/demo/sub && cd ~/demo/sub && tree ~ > info && vim info

#这个作业中你可以数一下起了多少个进程