Appearance
2.1 什么是进程
并发——现代操作系统最重要的特征之一
进程——操作系统最重要的抽象概念之一
并发基于进程
一、并发概述
并发:两个或多个事件在同一时间间隔内发生
并发类型
二、程序的顺序执行
1. 顺序执行的定义
顺序执行:若干程序或程序段之间必须严格按照某种先后顺序来执行
顺序执行示例
程序的顺序执行
语句的顺序执行
2. 程序顺序执行时的特征
顺序性:处理机的操作严格按照程序所规定的顺序执行。
封闭性:程序运行时独占全机资源,程序一旦开始执行,其执行结果不受外界因素影响。
可再现性:只要程序执行时的环境和初始条件相同,都将获得相同的结果。
3. 前趋图
有向无环图
节点:程序段、进程、语句
有向边:表示结点之间的前趋关系
三、程序的并发执行
1. 并发执行的定义
并发执行:两个或两个以上的程序或程序段在同一时间间隔内同时执行,即这些程序的执行时间客观上是重叠的,一个程序的执行尚未结束,另一个程序的执行已经开始。
并发执行示例
例子:有两个并发执行的进程P1和P2,共享初值为1的变量x。P1对x加1,P2对x减1。加1和减1操作的指令序列分别如下所示,试问两个操作完成后,x的值是多少?
; 加1操作
load R1,x ; 取x到寄存器R1中
inc R1
store x,R1 ; 将R1到内容存入x
; 减1操作
load R2,x ; 取x到寄存器R2中
dec R2
store x,R2 ; 将R2的内容存入x
答案
可能为0、1或2
2. 程序并发执行时的特征
间断性:由于资源共享和相互合作,程序呈现“执行-暂停-执行”现象。
失去封闭性:程序在并发执行时,是多个程序共享系统中的资源,因此这些资源的状态将由多个程序来改变。
不可再现性:程序在并发执行时,由于失去了封闭性,多次重复执行可得到不同的结果。
3. 进程概念
引入进程的目的
为了控制多道程序能够正确地并发执行,引入进程。
典型的进程定义
一个正在执行的程序。
一个正在计算机上执行的程序实例。
一个能够被调度到处理器上执行的实体。
由一串指令的执行、当前状态和一组正在使用的系统资源表征的活动单元。
进程的表征与组成
进程执行的任意时刻,可以由下列元素(可看作进程控制块的抽象)来表征。
进程由程序代码、程序代码相关的数据及对应的进程控制块组成。
父子进程
系统中同时存在的诸进程相互独立,也相互关联。
例如,当进程创建另一进程后,父子进程就以某种形式继续保持关联。
UNIX中,初始化进程是其他所有进程的始祖,与其子女后裔构成一个进程组。
Windows中,没有进程层次的概念,进程地位相等。(父进程可以获得子进程句柄)
进程的特征
动态性:最基本的特征
- 一个正在计算机上执行的程序实例,存在生命周期。
并发性:重要特性
- 多个进程实体同存于内存中,能在一段时间内同时运行。
独立性
- 进程实体是一个能独立运行的基本单位,同时也是系统中独立获得资源与独立调度的基本单位。各进程的地址空间相互独立,除非采用进程间通信手段。
异步性
- 各进程按各自独立的、不可预知的速度向前推进
进程与程序比较
进程是程序的执行过程,是一个动态的概念;程序是一组指令的有序集合,是一个静态的概念
进程=进程控制块+程序段+数据段+栈
引入进程的目的是使多道程序能够正确地并发执行
进程具有生命周期,程序是永久的
进程与程序之间不存在一一对应关系
- 通过多次执行,一个程序可以对应多个进程。
- 通过调用关系,一个进程也可能对应多个程序。
引入进程后带来的挑战
空间开销(space overhead)
- 为进程建立数据结构
时间开销(time overhead)
- 管理和协调、跟踪、填写和更新有关数据结构、切换进程、保护现场
控制复杂性(complexity of control)
- 协调多个进程对资源的竞争和共享
- 预防、解决多个进程因为竞争资源而出现的故障