计算机基础知识
  • 关于
  • 系统
    • 操作系统的概念、功能、目标
    • 操作系统的特征
    • 并发和并行的区别
    • 操作系统的发展与分类
    • 操作系统的运行机制和体系结构
    • 中断和异常
    • 用户态、核心态之间的切换是怎么实现的?
    • 系统调用
    • 进程的概念
    • 进程的状态和转换
    • 进程控制
    • 进程通信
    • 线程、多线程模型
    • 程序、进程和作业的关系
    • 处理机调度的概念、层次
    • 进程调度的时机、切换与过程、方式
    • 调度算法的评价指标
    • 批处理系统的调度算法
    • 交互式系统的调度算法
    • 进程同步与进程互斥
    • 进程互斥的软件实现方法
    • 进程互斥的硬件实现方法
    • 信号量机制
    • 用信号量机制实现进程互斥、同步、前驱关系
    • 生产者-消费者问题
    • 多生产者-多消费者问题
    • 吸烟者问题
    • 读者-写者问题
    • 哲学家进餐问题
    • 管程
    • 死锁的概念
    • 死锁的处理策略——预防死锁
    • 死锁的处理策略——避免死锁
    • 死锁的处理策略——检测和解除
  • 网络
    • 计算机网络的概念、组成、功能、分类
    • 标准化工作及相关组织
    • 性能指标之速率、带宽、吞吐量
    • 性能指标之时延、时延带宽积、往返时间RTT、利用率
    • 分层结构
    • OSI参考模型
    • TCP/IP参考模型
    • 5层参考模型
    • http与https的区别
    • TCP和UDP的区别
  • Java
    • Arraylist与LinkedList区别
    • HashMap,HashTable,ConcurrentHash的共同点和区别
  • 数据库
    • 为什么MySQL索引要使用B+树
由 GitBook 提供支持
在本页
  • 程序与进程之间的区别
  • 作业与进程的区别
  • 作业、进程和程序之间的联系
在GitHub上编辑
  1. 系统

程序、进程和作业的关系

程序与进程之间的区别

  • 进程更能真实地描述并发,而程序不能。

  • 进程由程序和数据两部分组成,进程是竞争计算机系统有限资源的基本单位,也是进程处理机调度的基本单位。

  • 程序是静态的概念;进程是程序在处理机上一次执行的过程,是动态的概念。

  • 进程有生存周期,有诞生有消亡。是短暂的;而程序是相对长久的。

  • 一个程序可以作为多个进程的运行程序;一个进程也可以运行多个程序。

  • 进程具有创建其他进程的功能;而程序没有。

作业与进程的区别

一个进程是一个程序对某个数据集的执行过程,是分配资源的基本单位。作业是用户需要计算机完成的某项任务,是要求计算机所做工作的集合。一个作业的完成要经过作业提交、作业收容、作业执行和作业完成4个阶段。而进程是对已提交完毕的程序所执行过程的描述,是资源分配的基本单位。其主要区别如下。

  • 作业是用户向计算机提交任务的任务实体。在用户向计算机提交作业后,系统将它放入外存中的作业等待队列中等待执行。而进程则是完成用户任务的执行实体,是向系统申请分配资源的基本单位。任一进程,只要它被创建,总有相应的部分存在于内存中。

  • 一个作业可由多个进程组成,且必须至少由一个进程组成,反过来则不成立。

  • 作业的概念主要用在批处理系统中,像UNIX这样的分时系统中就没有作业的概念。而进程的概念则用在几乎所有的多道程序系统中。

作业与进程最主要的区别是:前者是由用户提交,后者是由系统自动生成;前者以用户任务为单位,后者是操作系统控制的单位。

操作系统只认识进程,只对进程进行调度,作业其实和操作系统没有关系。 执行一个可执行程序,就会生成一个进程(程序里面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的一项任务或者批处理,和操作系统无关。 进程是具体执行的一个可执行程序,是操作系统调度的对象。

作业、进程和程序之间的联系

一个作业通常包括程序、数据和操作说明书3部分。每一个进程由PCB、程序和数据集合组成。这说明程序是进程的一部分,是进程的实体。因此,一个作业可划分为若干个进程来完成,而每一个进程有其实体————程序和数据集合。

最后更新于2年前