计算机操作系统原理:进程

在开始编写文章前,有几个问题需要思考一下:

  • 进程的由来
  • 什么是进程?
  • 进程具有哪些状态?
  • 进程由哪几部分组成?

1. 进程的由来

多道程序环境下,程序的执行是动态变化的,在系统中处于“走走停停、停停走走”的运行状态。为了使程序能够并发执行,并能够如实反映程序活动的动态特征,操作系统引入了进程,以对并发执行的程序加以控制和描述。计算机系统中 CPU 是以进程为单位进行分配和管理的。

2. 什么是进程?

进程的概念是 20 世纪 60 年代初期,首先由麻省理工学院的 MULTICS 系统 IBM 公司的 CTSS/360 系统中引入并实现的。其后,人们对它不断加以改进,从不同方面对它进行描述。一般而言,进程是指一个具有独立功能的程序在某个数据集上的一次运行过程,它是系统资源分配和调度的基本单位。

进程和程序是两个截然不同的概念,两者的区别如下:

  • 程序是静态的,它由用户编写的若干代码的集合,可作为资料长期保存;进程是动态的,它是程序在系统中的一次运行过程。
  • 进程和程序并非一一对应,同一个程序可以由多个进程分别执行,这些进程虽然执行相同的程序,但处理不同的数据;同样,一个进程通过程序间的调用方式,会涉及多个程序。

它们之间的关系类似于菜谱和炒菜,其中程序相当于菜谱,而进程就是每一次按照菜谱炒菜的过程。

3. 进程具有哪些状态?

由于共享系统中的资源,因此进程之间相互制约、相互依赖,其整个生命周期呈现为“运行 — 暂停 — 运行”。进程在其生命周期中处于创建、就绪、运行、阻塞、终止这五种状态。

  • 创建态:进程正在被创建或刚刚创建完成,但还没有放入就绪队列之前的状态。
  • 就绪态:一个进程获得除了 CPU 之外的其他所需资源,一旦获得 CPU 后便可运行的状态。就绪队列是指将系统中所有处于就绪状态的进程,排成一个或多个队列。
  • 运行态:进程正在 CPU 上运行的状态。单 CPU 环境中,某个时刻最多只有一个进程处于运行态;而多 CPU 环境中,可能有多个进程同时处于运行态。
  • 阻塞态(等待态):正在运行的进程由于发生某些事件(如输入/输出请求、申请额外资源等)暂时无法继续执行的状态,即进程的运行受到阻塞。阻塞(等待)队列是指将系统中所有处于阻塞的进程,组织成一个或多个队列。
  • 终止态:一个进程正常结束或异常终止,但该进程所拥有的资源(如进程控制块 PCB)还未完全被撤销时的状态。

为了更有效地使用系统有限的资源,部分现代操作系统中引入了挂起状态。进程被挂起意味着该进程处于静止状态。此时,若进程正在执行,则将暂停执行;若进程处于就绪状态,则挂起后该进程暂时不接受调度。引入挂起状态主要是基于下列需求:

  • 系统需求:系统运转过程中,有时需要挂起某些进程,检查资源的使用情况,以便调整系统负荷,改善系统运行性能;或是系统在出现故障或受到破坏时,需要挂起某些进程,以排查故障。
  • 父进程需求:父进程需要考察或修改子进程,或者协调各子进程之间的活动,要求挂起自己的子进程。
  • 用户需求:用户在运行期间发现可疑问题时,要求挂起自己的子进程,以便进行某些程序的调试、检查和改正。
  • 对换需求:系统为了缓和内存和其他资源的紧张情况,将处于等待状态的进程挂起,并将它们从内存换出到外存,腾出内存空间给其他进程。

引入挂起状态后,若进程被挂起,则处于静止状态;反之,若未被怪,则处于活动状态:

  1. 创建 —> 活动就绪:系统完成进程创建的必要操作后,在性能和内存容量许可的情况下,将该进程的状态转换为活动就绪状态。
  2. 创建 —> 静止就绪:系统完成进程创建的必要操作后,若性能和内存容量不允许,则不分配给该进程所需资源,并将该进程存放在外存,其状态转为静止就绪状态。
  3. 活动就绪 —> 静止就绪:系统使用挂起命令,将(活动)就绪队列中的某些进程挂起,这些进程就处于静止就绪状态,暂时无法被调度执行。
  4. 活动阻塞 —> 静止阻塞:系统使用挂起命令,将(活动)阻塞队列中的某些进程挂起,这些进程就处于静止阻塞状态,当这些进程在其所期待的事件出现后,则将从静止阻塞变为静止就绪状态。
  5. 静止就绪 —> 活动就绪:处于静止就绪状态的进程被使用激活命令激活后,将变为活动就绪状态。
  6. 静止阻塞 —> 活动阻塞:处于静止阻塞状态的进程被使用激活命令激活后,将变为活动阻塞状态。

4. 进程由哪几部分组成?

进程是程序的一次运行过程,它是由程序段、数据段和进程控制块 PCB 组成的一个实体,其中:

  • 程序段:对应程序的操作代码部分,用于描述进程所需要完成的功能。
  • 数据段:对应程序执行时所需要的数据部分,包括数据,堆栈和工作区。
  • 进程控制块:记录了进程运行时所需要的全部信息,它是进程存在的唯一标识,与进程一一对应。
4.1 进程控制块

进程控制块(PCB)是进程实体的重要组成部分,它记录了操作系统所需要的、用于描述进程情况及控制进程所需要的全部信息。原来不能独立运行的程序或数据,通过 PCB 就可以成为一个可以独立运行的基本单位。系统通过 PCB 感知进程的存在,并对其进行有效管理和控制。系统创建一个新进程时,为它建立一个 PCB;当进程结束时,系统又收回其 PCB,该进程也随之消亡。

进程控制块主要包括下述四个方面的信息:

1. 进程标识符信息:用于标识、区分一个进程,通常有外部标识符和内部标识符两类。外部标识符通常是由字母、数字所组成的一个字符串,用户或其他进程访问该进程时使用。内部标识符是操作系统为每个进程赋予的唯一一个整数,是作为内部识别而设置的。

2. 进程调度信息:用于描述与进程调度有关的状态信息,包括进程状态、进程优先权、调度信息和等待事件等。进程状态指明进程当前的状态,作为进程调度和对换时的依据;进程优先权说明进程使用 CPU 的优先级别,其中优先权高的进程将优先获得 CPU;调度信息描述与进程调度算法相关的信息,如进程等待时间、已运行的时间等;等待事件是指进程由运行态转变为阻塞态时所等待发生的事件。

3. CPU 状态信息:用于保留进程运行时 CPU 的各种信息,使得进程暂停运行后,下次重新运行时能从上次停止的地方继续运行。CPU 状态信息通常包含通用寄存器、控制和状态寄存器、用户栈指针等。CPU 状态字记载了程序执行的状态信息,如条件码、外中断屏蔽标识、执行状态(核心态或用户态)标识等。

4. 进程控制信息:包括进程资源、控制机制等一些进程运行时所需要的信息,如:

  • 程序和数据地址:该进程的程序和数据所在的内存和外存地址,以便该进程在次运行时,能够找到程序和数据。
  • 进程同步和通信机制:实现进程同步和通信时所采用的机制,如消息队列指针、信号量等。
  • 资源清单:除 CPU 外,进程所需的全部资源和已经分配到的资源。
  • 链接指针:用于指向该进程所在队列的下一个进程的 PCB 首地址。
(0)

相关推荐