操作系统之大话进程

2021年3月5日 459点热度 2人点赞 1条评论

进程

操作系统中最核心的一个概念是进程:这是对运行程序的一个抽象。操作系统的其他内容都是围绕进程展开的。为此,我们有必要了解进程。

为什么要引入进程的概念

在没有引入进程的概念的时候,一个程序是怎样运行的呢?一个程序通常由若干个程序段所组成,它们必须按照某种先后次序来执行,仅当前一个操作执行完后才能执行后续操作。这样无疑对宝贵的系统资源存在极大的浪费。

那么怎样提高系统资源的利用率呢?答案就是程序的并发执行。也就是说,若干个程序或者程序段同时在系统中运行。这些程序(或程序段)的执行在时间上是重叠的,一个程序(或程序段)的执行尚未结束,另一个程序(或程序段)的执行已经开始。

为了描述并发执行程序的动态特性,我们引入了进程的概念。

进程的定义

进程的定义比较多,下面列举两条仅供参考:

  • 进程是程序在处理器上的一次执行过程
  • 进程是一个具有一定功能的程序关于某个数据集合的一次运行活动

进程的特征

  • 动态性:进程是程序的一次执行过程。动态性还表现为它因创建而产生,因调度而执行,因无资源而暂停,因撤消而消亡。而程序是静态实体
  • 并发性:多个进程实体同时存在于内存中,能在一段时间内同时运行
  • 独立性:在没有引入线程前,进程是独立运行的基本单位,也是系统分配资源和调度的独立单位
  • 异步性:进程以各自独立的不可预知的速度向前推进
  • 结构性:进程实体由程序段、数据段及进程控制块组成,又称为进程映像

进程的组成

进程一般由以下几部分组成:

  • 可执行的二进制程序(或目标代码)
  • 程序执行需要的数据(从一个文件中或者与用户交互的过程中获得)
  • 程序执行请求的资源(例如,包含必需信息的文件)

进程的创建

  • 4种主要时间会导致进程的创建:

    1. 系统初始化
    2. 正在运行的程序执行了创建进程的系统调用
    3. 用户请求创建一个新进程
    4. 一个批处理作业的初始化
  • 创建进程的主要操作过程如下:

    1. 向系统申请一个空闲PCB。
    2. 为新进程分配资源。如分配内存空间。
    3. 初始化新进程的PCB。在其PCB中填入进程名、家族信息、程序和数据地址、进程优先级、资源清单及进程状态等。
    4. 将新进程的PCB插入就绪队列。

进程的终止

  • 引起进程终止的条件:

    1. 正常退出(自愿的);
    2. 出错退出(自愿的);
    3. 严重错误(非自愿的);
    4. 被其他进程杀死(非自愿的);
  • 终止进程的主要操作过程如下:

    1. 从系统的PCB表中找到被撤消进程的PCB。
    2. 检查被撤消进程的状态是否为执行状态,若是则立即停止该进程的执行,设置重新调度标志。
    3. 检查被撤消进程是否有子孙进程,若有子孙进程还应撤消该进程的子孙进程。
    4. 回收该进程占有的全部资源并回收其PCB。

进程的状态极其转换

  • 通常,一个进程至少应有以下三种基本状态:

    1. 就绪状态(ready): 进程已获得除处理机以外的所有资源,一旦分配了处理机就可以立即执行。
    2. 执行状态(running): 又称运行状态。一个进程获得必要的资源并正在处理机上执行。
    3. 阻塞状态(blocking): 又称等待状态、睡眠状态。正在执行的进程,由于发生某事件而暂时无法执行下去(如等待输入/输出完成)。这时即使把处理机分配给该进程,它也无法运行。

    这三种状态之间的转换如下图:

  • 在许多系统中又增加了两种状态:

    1. 新建状态(new):进程刚刚建立,但还未进入就绪队列。又称创建状态。
    2. 终止状态(terminated) :当一个进程正常或异常结束,操作系统已释放它所占用的资源,但尚未将它撤消时的状态,又称退出状态。

    这五种状态之间的转换如下图:

  • 在某些系统中,可以将进程由内存暂时移动到外存,称之为挂起

  • 进程挂起的原因有:

    1. 系统故障或功能受到破坏:先挂起,故障消除后再恢复。
    2. 检查中间结果:挂起进程以便检查。
    3. 资源不足:挂起进程以腾出资源。
    4. 内存不足:在外存挂起。

    挂起进程之间的状态转换如下图:

进程的实现

为了实现进程模型和进程切换的需要,操作系统维护着一张表格(一个结构数组),即进程表(process table)。每一个进程占用一个进程表项(这些表项也被称为PCB)。该表项包含了进程状态的重要信息,包括程序计数器、堆栈指针、内存分配状况、所打开文件的状态、账号和调度信息,以及其他在进程由运行态转换到就绪态或阻塞态时必须保存的信息,从而保证该进程随后能再次启动。

进程的组织

系统中有许多进程,为了对它们进行有效的管理,需要将PCB组织起来:

  • 线性方式
  • 链表方式
  • 索引方式

agedcat_xuanzai

这个人很懒,什么都没留下

文章评论

  • 乐乐

    鼓掌哦 :arrow:

    2021年3月5日