文章目录
2.1 前趋图和程序执行
2.1.1 前趋图
为了能更好地描述程序的顺序和并发执行情况,引入用于描述程序执行先后顺序的前趋图。
前趋图:是指一个有向无循环图,可记为DAG, 它用于描述进程之间执行的先后顺序。图中的每个结点可用于表示一个进程或程序段,乃至一条语句,结点间的有向边则表示两个结点之间存在的偏序或前趋关系。
进程(或程序)之间的前趋关系可用“→”来表示,如果进程Pi和Pj存在着前趋关系,可表示为(
Pi,P)E→, 也可写成→P;, ,表示在P开始执行之前P;必须完成。R此时称P;是P:的直接前趋,而称P:是P;的直接后继。
注意:前趋图中是不允许由循环的,否则必然会产生不可能实现的前趋关系。
2.1.2 程序顺序执行
程序的顺序执行
通常,一个应用程序由若干个程序段组成,每一个程序段完成特定的功能,它们在执行是,都需要按照某种先后次序顺序执行,仅当前一程序段执行完后,才运行后一程序段。
特征: ①顺序性; ②封闭性; ③可再现性
程序并发执行时的特征
- 间断性
- 失去封闭性
- 不可再现性
分析
程序经过多次执行后,虽然它们执行时环境和初始条件相同,但得到的结果却各不相同,程序在并发执行时,由于失去了封闭性,其计算结果已于并发程序的执行速度有关,从而使程序失去可再现性。
2.2 进程的描述
2.2.1 进程的定义和特征
进程的定义
为了使参与并发执行的每个程序(含数据)都能独立地运行,在操作系统上必须为之配置一个专门的数据结构,称为进程控制块(PCB, Process Control Block).系统利用PCB 来描述进程的基本情况和活动过程,进而控制和管理进程.
这样,由程序段、相关的数据段和PCB三部分便构成了进程实体(即进程映像)。通常情况下,把进程实体就简称为进程。
典型的定义:
进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。
进程是程序的一次执行.
进程是一个程序及其数据在处理机上顺序执行时所发生的活动.
进程的特征
进程和程序是两个截然不同的概念,除了进程具有程序所没有的PCB结构外,还具有下面一些特征:
- 动态性
- 并发性
- 独立性
- 异步性
进程管理中的数据结构
进程是动态的,而程序是静态的
2.2.2 进程的基本状态及转换
1. 进程的三种基本状态
一般而言,每一个进程至少应处于一下三种基本状态之一:
- 就绪(Ready)状态
- 执行(Running)状态.
- 阻塞(Block)状态.
2. 三种基本状态的转换
3. 创建状态和终止状态
创建状态
进程是由创建而产生.创建一个进程是个很复杂的过程,一般要通过多个步骤才能完成.
如果进程所需要的资源尚不能得到满足,比如系统尚无足够的内存使进程无法装入其中,此时创建工作尚未完成,进程不能被调度运行,于是把此时进程所处的状态称为创建状态.
终止状态
进程的终止要通过两个步骤: 首先.是等待OS 进行善后处理,最后将其PCB清零,并将PCB 空间返还系统.
当一个进程到达了一个自然结束点,或是出现了无法克服的错误, 或是被OS所终结,或是被其他有终止权的进程所终结,它将进入终止状态.
2.3 进程的控制
进程控制是进程管理中最基本的功能,主要包括创建新进程、终止已完成的进程、将因发生异常情况而无法继续运行的进程置于阻塞状态、负责进程运行中的状态转换等功能.
进程控制一般是由OS的内核中的原语实现.
- 作为独立运行基本单位的标志
- 能实现间断性运行的方式
- 提供进程管理所需要的信息
- 提供进程调度所需要的信息
- 实现与其他进程的同步与通信
进程标识符:
内部标识符
外部标识符
处理机状态:
通用寄存器
指令计数器
程序状态字PSW
用户栈指针
进程调度信息
进程状态
进程优先级
进程调度所需的其他信息
事件
进程控制信息
程序和数据的地址
进程同步和通信机制
资源清单
链接指针
线性方法:即将系统中所有的PCB 都组织在一张线性表中,将该表的首址存放在内存的一个专用区域
进程的层次结构
在OS中,允许一个进程创建另一个进程,通常把创建进程的进程成为父进程,而把被创建的进程成为子进程。子进程可继续创建更多的孙进程,由此便形成了一个进程的层次结构。
如在UNIX中,进程与子孙进程共同组成一个进程家族。
引起创建进程的事件
进程的创建
申请空白PCB,为新进程申请获得唯一的数字标识符,并从PCB集合中索取一个空白PCB.
为进程分配其运行所需的资源,包括各种物理和逻辑资源
初始化进程控制块(PCB)
如果进程就绪队列能够接纳新进程,便将新进程插入就绪队列。
进程的终止
引起进程终止的事件
正常结束;异常结束;外界干预
进程的终止过程
若系统中发生了要求
- 进程的阻塞和唤醒
引起的事件:
向系统请求共享资源失败
等待某种操作的完成
新数据尚未到达
等待新任务的到达
达娃
- 进程的挂起和激活
2.4 进程的同步
-
进程同步的基本概念
引入:进程同步是一个OS级别的概念, 是在多道程序的环境下,进程间存在着不同的制约关系.
为了协调这种互相制约的关系,实现资源共享和进程协作,从而避免进程之间的冲突,引入了进程同步.
主要任务:是对多个相关进程在执行次序上协调,
-
硬件同步机制
-
信号量机制
-
信号量的应用
-
管理机制
2.4.1 同步机制应遵循的规则
为实现进程互斥地进入自己的临界区,可用软件方法,更多的是在系统中设置专门的同步机构来协调各进程间的运行。
所有同步机制都应遵循下述四条准则:
- 空闲让进
- 忙则等待
- 有限等待
- 让权等待
2.4.2 硬件同步机制
虽然可以利用软件方法解决诸进程互斥进入临界 区的问题,但有一定难度,并且存在很大的局限性,因而现在己很少采用。
相应地,目前诈多计算机已提供了一些特殊的 硬什指令,允许对一个字中的内容逃行检测和修正,或者是对两个字的内容进行交换等。可利用这些特殊的指令水解决临界区问题。
2.4.3 信号量机制
整型信号量
最初由Dijkstra 把整型信号量定义为一个用于表示资源数目的整型量S, 它于一般整型量不同, 除初始化外,仅能通过两个标准的原子操作wait(S) 和 signal(S) 来访问. 很长时间以来,这两个操作一直被分别称为 P、V操作.
记录信号量
AND 信号量
AND同步机制的基本思想:
将进程在整个运行过程中需要的所有资源,一次性全部地分配给进程,待进程使用完后再一起释放
- 信号量集