第二章·进程的管理
进程的概述及前置知识
在早期的单道批处理系统中,程序执行方式是顺序执行,也就是一个程序占用整个系统的资源(cpu、内存等),这种方式显然是浪费资源的。而在多道程序系统中,内存可以同时装入多个程序,使它们共享系统资源,并发执行。
显然并发执行提高了资源利用率和吞吐量,考虑道并发执行的特征,才引入进程的概念,这里我们需要对顺序和并发执行进行描述,所以我们需要了解一下前趋图。
前趋图
前趋图(Precedence Graph):指一个有向无循环图,可记为DAG(Directed Acyclic Graph),它用于描写进程之间执行的先后顺序。
- 图中的每个节点可表示一个进程或者程序段乃至一条语句,结点间的有向边则表示两个节点之间存在偏序(Partial Order)或前驱关系(Precedence Relation)。
- 先执行箭头前的程序,才能执行箭头后的程序,如P2必须在P1执行完成后,才可执行。
根据前趋图,我们可以发现程序以顺序执行的三个特征:
- 顺序性:每一操作必须再下一操作开始之前结束。
- 封闭性:程序在封闭的环境下运行,即程序运行时独占所以资源,程序一旦开始执行,其执行结果不受外界因素影响。
- 可再现性:只要程序执行时的环境和初始条件相同,当程序重复执行时,不论是不停顿的执行或是“走走停停”地执行,都是相同的结果。
上面我们都是把程序分为同一类内容处理,那么假设程序细分为3种操作I(输入设备)、C(cpu)、O(输出设备),如下。
图中的蓝线,是并发的其中一种情况,在实际执行的时候结果可能有所不同。
- 整体上看存在着I → C → P的前趋关系,但在具体执行的时候,有多个I、C、P并不存在前趋关系。事实上只有在不存在前趋关系的程序间才可能发生并发执行。
下面来总结一下并发执行的特征:
- 间断性
- 失去封闭性
- 不可再现性
- 回想一下,我们是怎么做到让程序并发的,我们把程序的发生的活动细分化(进程),在各自(进程)使用不同资源的时候得以并发。我们就引出了进程的概念,下面我们给出进程的定义。
进程的定义
- 进程是程序的一次执行。
- 进程是一个程序及其数据在处理机上顺序执行时所发生的活动。
- 进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。