程序、进程和作业的关系

程序与进程之间的区别:

(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

  • 24
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值