第二章:进程的描述与控制
我们要明白:程序不能独立运行,而且作为资源分配和独立运行的基本单位都是进程。
一、进程的由来
学习进程的前提:
- 前面也讲了操作系统的发展历史,我们知道未配置操作系统和单批到处理系统的程序是按照顺序执行的。只有前边的程序执行完了,后边的程序才能执行。因此,CPU的利用率是非常低下的。、
- 为了能更好地描述程序的顺序和并发执行情况,我们先介绍用于描述程序执行先后顺序的前趋图。
- 所谓前趋图(Precedence Graph),是指一个有向无循环图,可记为DAG(Directed Acyclic Graph),它用于描述进程之间执行的先后顺序。
根据前趋图,我们就可以发现程序有以下的三个特性:
① 顺序性:指处理机严格地按照程序所规定的顺序执行,即每一操作必须在下一个操作开始之前结束;`
② 封闭性:指程序在封闭的环境下运行,即程序运行时独占全机资源,资源的状态(除初始状态外)只有本程序才能改变它,程序一旦开始执行,其执行结果不受外界因素影响;
③ 可再现性:指只要程序执行时的环境和初始条件相同,当程序重复执行时,不论它是从头到尾不停顿地执行,还是“停停走走”地执行,都可获得相同的结果。
但是,当程序中引入了并发这么一个概念的时候,会给程序带来新的特征:
- 间断性。
- 失去封闭性。
- 不可再现性。
二、线程的描述
通过上面我们知道,在多道程序环境下,程序的执行属于并发执行,此时它们失去了封闭性,并具有间断性,以及其运行结果不可再现性的特征。由此,决定了通常的程序是不能参与并发执行的,否则,程序的运行也就失去了意义。为了能使程序并发执行,并且可以对并发执行的程序加以描述和控制,我们引入了“线程”。
线程就是为了让程序能够并发执行。
2.1进程的定义
为了使参与并发执行的每个程序(含数据)都能够独立地运行,在操作系统中必须为之配置专门的数据结构,称为进程控制块(Process Control Block,PCB)由程序段+相关的数据段+PCB三部分便构成了进程实体。
- 进程是程序的一次执行
- 进程是一个程序及其数据在处理机上顺序执行时所发生的活动
- 进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。
2.2进程的特征
- 动态性:由创建而产生,由调度而执行,由撤消而消亡。而程序只是一组有序指令的集合,并存放于某种介质上,本身并不具有活动的含义,是静态的。
- 并发性:指多个进程实体同存于内存中,且能在一段时间内同时运行。
- 独立性:指进程实体是一个能独立运行,独立获得资源和独立接收调度的基本单位。
- 异步性:即按各自独立的、不可预知的速度向前推进。