文章目录

  • 一、进程是什么?
  • 二、进程的特征
  • 三、进程模型
  • 四、进程的层次与状态
  • 1、进程的层次结构
  • 2、进程的层次结构
  • 五、进程管理概要
  • 1、进程控制块
  • 2、进程创建的过程
  • 3、进程的缺陷


一、进程是什么?

在计算机发展的初期,单一操作员单一控制终端,CPU使用率很低。为了提高CPU利用率,人们想要将多个程序同时加载到计算里并发执行。于是,这些同时存在于计算机内存中的程序(运行中的程序)就被称为进程。进程的出现,让每个用户感觉到自己在独占CPU。因此,可以说进程就是为了在CPU上实现多道编程而出现的概念

进程管理之进程概要_进程


  人们发明进程是为了支持多道编程,而进行多道编程的目的则是为了提高计算机CPU的利用率(或者说系统的吞吐量)。例如,如果一个进程有20%的时间使用CPU进行计算,另外80%的时间用来进行I/O,则在单道编程下CPU的利用率只有20%。单如果同时运行两个这样的进程,即使用2道编程,则CPU只在两个进程同时进行I/O时才会处于闲置状态,因此CPU利用率将会提高到:1-0.8*0.8=0.36=>36%。同理,如果同时运行更多的进程,CPU利用率会逐步提高,直到某个临界点为止。

进程管理之进程概要_子进程_02


  所以进程的定义为:

  • 进程是程序的一次执行;
  • 进程是一个程序及其数据在处理机上顺序执行所发生的活动;
  • 进程是程序在一个数据集合上运行的过程,他是系统进行资源调度和分配的一个基本单位

二、进程的特征

  • 结构特性:进程是由程序段、数据段、以及进程控制块 PCB(process control block)组成。所谓创建进程就是指创建进程实体的PCB(OS是根据PCB来对并发执行的进程进行控制和管理的),而撤销进程是指撤销进程中的PCB。
  • 动态性:进程的实质的程序在系统中的一次执行过程,故动态性是其基本特征。动态性还体现在“进程因创建而产生,因调度而执行,因撤销而死亡”。可见进程具有一定的生命周期。
  • 并发性:这是指多个进程同时存在于内存中,而且能够在一段时间内同时运行。并发性是进程的重要特征,同时也是OS的重要特征。
  • 独立性: 进程实体能够独立运行、独自分配资源和独自接受调度的基本单位。凡是未建立PCB的程序都不能作为一个独立的单位参与运行。
  • 异步性:指进程按照各自独立、不可预知的速度向前推进,或者说进程实体按照异步方式进行执行。

三、进程模型

进程管理之进程概要_进程_03

  • 物理视角:从物理内存的分配来看,每个进程占用一片内存空间,从这点上看,进程其实就是内存的某片空间。由于在任意时刻,一个CPU只能执行一条指令,因此任意时刻在CPU上执行的进程只有一个,而到底执行哪条指令是由物理程序计数器指定。因此,在物理层面,所有进程共用一个程序计数器,只是CPU在不停地做进程切换。
  • 逻辑视角:从逻辑层面来看,每个进程都可以执行,也可以暂时挂起让别的进程执行,之后又可以接着执行。所以,进程需要想办法保持状态才能在下次接着执行时从正确的地点开始。因此,每个进程都有自己的计数器,记录其下一条指令所在的位置。(从逻辑上来说,程序计数器可以有多个)。
  • 时序视角:从时间来看,每个进程都必须往前推进。在运行一定时间后,进程都应该完成了一定的工作量。换句话说,每次进程返回,它都处在上次返回点之后。哲学家有云:“一个人不能两次踏入同一条河流”。

四、进程的层次与状态

1、进程的层次结构

  • 一个进程在执行过程中可以通过系统调用创建新的进程,这个新的进程就称为子进程,而创建子进程的进程则被称为父进程
  • 子进程又可以再创建子进程,于是这样子子孙孙地创建下去就形成了所谓的进程树

2、进程的层次结构

基本的进程状态主要有3种:执行、阻塞和就绪,如下图所示:

进程管理之进程概要_进程_04


  那么,进程被挂起阻塞有哪些原因呢?首先是一个进程在运行过程中执行了某种阻塞操作,例如读写磁盘。(由于阻塞操作需要等待结果后才能继续执行,因此OS将把这个进程挂起,让其他进程运转)其次是一个进程执行的时间太长了,为了公平,OS将其挂起从而让其他进程也有机会执行。

五、进程管理概要

1、进程控制块

与一个社会管理人的过程类似,OS要管理进程就需要维护进程的一些信息,OS用于维护进程记录的结构就是进程表或进程控制块(Process Control Block,PCB)。那么进程表里有什么记录呢?一般来说,维护的记录应该包含:寄存器、程序计数器、状态字、栈指针、优先级进程ID、创建时间、所耗CPU时间、当前持有的各种句柄等等。

2、进程创建的过程

进程管理之进程概要_操作系统_05

3、进程的缺陷

假定有两部都很好地岛国爱情动作片,都只放映一次,以后就再也不放映了。而且,这两部片子还是同时放映(狗血剧情啊!),还在两个不同的小房间放映。而你在同一时间只能做一件事情,所以你不得不放弃另外一部。进程亦是如此,这也是进程的缺点,如果想要同时做两件或多件事情,进程就不够用了(同一进程内的任务只能串行运行)。并且,如果进程在执行的过程中发生阻塞,例如等待输入,整个进程就将被挂起(暂停),而无法继续执行。这样,即使进程里面有部分工作不依赖于输入数据,也无法推进。

因此,为了解决上述两个问题,人们发明了线程。