程序与进程之间的区别:
(1)进程更能真实地描述并发,而程序不能。
(2)进程由程序和数据两部分组成,进程是竞争计算机系统有限资源的基本单位,也是进程处理机调度的基本单位。
(3)程序是静态的概念;进程是程序在处理机上一次执行的过程,是动态的概念。
(4)进程有生存周期,有诞生有消亡。是短暂的;而程序是相对长久的。
(5)一个程序可以作为多个进程的运行程序;一个进程也可以运行多个程序。
(6)进程具有创建其他进程的功能;而程序没有。
作业与进程的区别:
一个进程是一个程序对某个数据集的执行过程,是分配资源的基本单位。作业是用户需要计算机完成的某项任务,是要求计算机所做工作的集合。一个作业的完成要经过作业提交、作业收容、作业执行和作业完成4个阶段。而进程是对已提交完毕的程序所执行过程的描述,是资源分配的基本单位。其主要区别如下。
(1)作业是用户向计算机提交任务的任务实体。在用户向计算机提交作业后,系统将它放入外存中的作业等待队列中等待执行。而进程则是完成用户任务的执行实体,是向系统申请分配资源的基本单位。任一进程,只要它被创建,总有相应的部分存在于内存中。
(2)一个作业可由多个进程组成,且必须至少由一个进程组成,反过来则不成立。
(3)作业的概念主要用在批处理系统中,像UNIX这样的分时系统中就没有作业的概念。而进程的概念则用在几乎所有的多道程序系统中。
注:作业与进程最主要的区别是:前者是由用户提交,后者是由系统自动生成;前者以用户任务为单位,后者是操作系统控制的单位。参考:http://ks.ppkao.com/daan/3898542/
操作系统只认识进程,只对进程进行调度,作业其实和操作系统没有关系。 执行一个可执行程序,就会生成一个进程(程序里面exec别的可执行程序或者fork进程除外),所以执行date,who,cut这些都会各自生成一个进程。
作业是shell里面的一个概念,我们的所有操作都是提交给shell,然后通过shell进行解释后再执行,管道连起来的命令以及自己写的shell程序都相当于一个批处理。
一个批处理就是一个作业。管道连接在一起的命令也是一个作业。一个作业就是我们提交给shell的一项任务,这个任务可能包含多个命令或者可执行程序,再复杂一些的任务可能需要我们自己进行shell编程,写一个shell程序,里面含有分支,循环等,然后在命令行执行这个shell程序(比如:test.sh),这也是一个作业。这个作业具体执行的时候,可能会生成一个进程(比如ls),或者多个进程(比如:who | cut -c 1-8 | sort | uniq -c)。
一个作业是我们提交给shell的一项任务或者批处理,和操作系统无关。 进程是具体执行的一个可执行程序,是操作系统调度的对象。
参考:http://www.iteye.com/problems/89964
作业、进程和程序之间的联系:
一个作业通常包括程序、数据和操作说明书3部分。每一个进程由PCB、程序和数据集合组成。这说明程序是进程的一部分,是进程的实体。因此,一个作业可划分为若干个进程来完成,而每一个进程有其实体————程序和数据集合。
参考:http://blog.sina.com.cn/s/blog_59a3fe6f0100c0o6.html