第2章 进程管理
2.1 前驱图和程序执行
一、前驱图
1、前驱图(Procedence Graph):是一个有向无循环图,图中的每个结点可用于表示一条语句,一个程序段或进程;结点间的有向边则表示在两结点之间存在的偏序(Partial Order)或前驱(Precedence Relation)关系“—>“, —>={(pi,pj)}
2、几个概念
直接前驱、直接后继、初始结点、终止结点、结点的重量
如果(pi,pj)∈—>,可写成pi—>pj ,称pi是pj 的前驱,而pj是pi的直接后继。
结点的重量:该结点所含的程序量/结点的执行时间。
例:
二、程序的执行
(一)程序的顺序执行
1、特征:顺序性、封闭性(失去交换性)、确定性、可再现性
2、多道程序系统中,程序执行环境的变化
计算机能够同时处理多个具有独立功能的程序(批处理系统,分时系统、实时系统、网络与分布式系统)。这样的执行环境具有三个特点:独立性、随机性、资源共享。
- 硬件资源:CPU、输入输出设备,存储器
软件资源:各种例行程序、各种共享的数据 - 多道程序环境下执行程序的道数>计算机系统中CPU个数
单CPU中,则由N-1道程序处在等待CPU的状态
输入输出设备有限将导致这些设备被共享、内存有限将导致内存被共享
(二)程序的并发执行
1、特征:间断性、失去封闭性、不可再现性
2、程序并发执行的条件——Bernstein的三个条件
程序并发执行过程可以描述为:
S0
Cobegin
P1;P2;……Pn
Coend
Sn
1966年,Bernstein提出了相邻语句S1,S2可以并发执行的条件。
如果并发执行的各程序段中语句或指令满足Bernstein的三个条件,则认为并发执行不会对执行结果的封闭性和可再现性产生影响。
Bernstein的三个条件:
将程序中任一语句Si划分为两个变量的集合R(Si)和W(Si)其中
R(Si)={a1,a2,……am}是语句Si在执行其间必须对其进行读写的变量
W(Si)={b1,b2,……bn}是语句Si在执行其间必须对其进行修改、访问的变量
如果对于语句S1和S2,有
① R(S1)∩W(S2)={Φ}
② W(S1)∩R(S2)={Φ}
③W(S1) ∩W(S2)={Φ}
同时成立
即:R(S1)∩W(S2) ∪ W(S1)∩R(S2) ∪ W(S1)∩W(S2)={Φ}则语句S1和S2是可以并发执行的。
集合的交并补运算符没有优先级顺序,运算顺序完全由括号决定。. 逻辑与或非才有优先级顺序:逻辑非>逻辑与>逻辑或。
例1:若有两条语句c=a-b和f=c+1,判断它们是否可以并发执行?
解:它们的“读集”和“写集”分别为
R(c:=a-b)={a,b};R(f:=c+1)={c}
W(c:=a-b)={c} ;W(f:=c+1)={f}
因为:R(c:=a-b)∩W(f:=c+1)={Φ}
R(f:=c+1)∩W(c:=a-b)={c}
所以:两条语句不能并发执行。
例2:课本P25
没有比较P1和P4、P2和P4
步骤:
1.先画出前驱图
P1和P4、P2和P4不是相邻的,不用比较
2.若有多个,则将相邻的两个两个比
值得注意的是, Bernstein 条件在理论上可以保证程序能够并发执行,但在实际情况中,进程之间由于共享某些资源,经常不满足 Bernstein 条件,尽管它们在理论上不能并发执行,但是只要采取适当的措施,它们还是可以正确、安全地并发执行。
2.2 进程的概念和特征
一、进程的概念
1、进程的定义
进程是指一个具有独立功能的程序在某个数据集上的一次运行过程,它是系统资源分配和调度的基本单位。
(1)进程是可以并发执行的计算部分
(2)进程是一个独立的可以调度的活动
(3)进程是一个抽象的实体,当它执行某个任务时,将要分配和释放各种资源
(4)行为的规则叫程序,程序在处理机上执行的活动称为进程。
(5)一个进程是一系列逐一执行的操作,而操作的确切含义则有赖于以何种详尽程度来描述进程。
程序指一组操作序列,而数据集则是接受程序规定操作的一组存储单元的内容。
2、进程与程序的区别
(1)进程是一个动态的概念,进程的实质是程序的一次执行过程,动态性是进程的基本特征,同时进程是有一定的生命期的;而程序只是一组有序指令的集合,本身并无运动的含义,是静态的。
(2)并发性,并发性是进程的重要特征,引入进程的目的正是为了使其程序和其它程序并发执行;而程序(没有建立进程)是不能并发执行的。
(3)独立性,是指进程一个能独立运行、独立分配资源和独立调度的基本单位;凡未建立进程的程序,都不能作为一个独立的单位参加运行。
(4)不同的进程可以包含同一个程序,同一个程序在执行中也可以产生多个进程。
二、进程的特征
(1)动态性 最基本的特征
(2)并发性
这是指多个进程实体,同存于内存中,能在一段时间内同时运行。
并发性是进程的、OS的重要特征。
引入进程的目的也是为了使该进程的程序能和其它进程的程序并发执行。
(3)独立性
进程实体是一个能独立运行的基本单位,同时也是系统中独立获得资源和独立调度的基本单位。
没有建立进程的程序,不能作为一个独立的单位参加运行。
(4)异步性
进程按各自独立的、不可预知的速度向前推进
(5)结构特性
从结构上看,进程是由程序段、数据段及进程控制块三部分组成。
作业:数据、程序、作业说明书
线程:数据、程序、线程控制块、堆栈
进程控制块:进程标识符信息、处理机状态信息、进程调度信息、进程控制信息
2.3 进程的状态
一、进程的基本状态
1、创建态:新状态,刚建/已分配但队列已满
2、就绪态:除了CPU,其他的都有
3、运行态
4、阻塞态:等待
5、终止态:已从就绪队列中移出,但未撤销
就绪态、运行态、阻塞态是内存中的
二、状态转换
对于一个进程来说“新状态”和“终止状态”只有一次。
1、创建态—>就绪态:获得除CPU之外的资源
2、就绪态—>运行态:获得CPU
3、运行态—>阻塞态:
正在执行的进程因发生某件事件而无法执行。例如:进程请求访问临界资源,而该资源正被其它进程访问,则请求该资源的进程将由执行状态转变为阻塞状态。
4、阻塞态—>就绪态:事件结束
5、运行态—>就绪态:分时系统中,时间片用完;抢占调度方式中,优先权高抢占处理机
6、执行态—>终止态:自然结束或异常结束
三、进程的挂起状态
1、意味着该进程处于静止状态
挂起是CPU硬盘上的状态
2、引入挂起状态主要是基于下列需求
系统需求、父进程需求、终端用户需求、对换需求(内存—>外存)状态转换
3、状态转换
2.4 进程的描述
一、进程结构
1.程序段:是进程中能被进程调度程序在CPU上执行的程序代码段,要完成的功能。
2.数据段:数据部分。原始数据、中间或最终数据。
3.进程控制块PCB:记录了进程运行时所需要的全部信息,它是进程存在的唯一标识,与进程一一对应。
二、进程控制块PCB
1.进程标识符信息
用于唯一的标识一个进程.内部标识符+外部标识符
2.进程调度信息
3.CPU状态信息
4.进程控制信息
2.5 进程的组织
链接方式,索引方式
2.6 进程的控制
一、OS内核
CPU状态:系统态/管态、用户态/目态
用户态->系统态:系统调用(中断、异常、陷入机制)
系统态->用户态:设置程序PSW
二、进程控制原语
1.原语:系统状态下执行的某些具有特定功能的程序段称为原语。(是程序段而不是一条指令)
特点:在OS内核实现;执行过程不可被中断(与系统调用的区别)
2.原子操作:一个操作中的动作要么全做,要么全不做。
2.7 进程的同步与互斥
主要任务:控制并发执行的诸进程之间能有效地共享和相互协作,同时使并发执行的程序仍具有可再现性。
一、制约关系
共享资源方式不同
1.间接制约关系(进程互斥) 影响速度但不影响进程
2.直接制约关系(进程同步) “合作”
二、临界资源及临界区
1.临界资源:一次只允许一个进程访问的资源
2.临界区:进程访问临界资源的那段程序代码(不允许多个并发进程交叉执行的那段代码)
3.临界区同步机制的准则:
空闲让进,忙则等待,让权等待,有限等待
4.加锁法:
lock ( key[S] )
<临界区>
unlock( key[S] )
设key[S]=1时表示类名为S的临界区可用,key[S]=0时表示类名为S的临界区不可用。则unlock(key[S])只用一条语句即可实现。即:key[S]->1
不能保证只允许一个进程进入临界区.(可设置test/set指令)
三、进程同步
例1:司机-售票员 P41
例2:计算进程和打印进程:计算和打印分别发信号
- 进程同步和互斥的关系
1.相似处:进程的互斥实际上是进程同步的一种特殊情况; 进程的互斥和同步统称为进程同步。
2.差别:进程互斥是进程间竞争共享资源的使用权 ,这种竞争没有固定的必然联系,哪个进程竞争到使用权就归那个进程使用,直到不需要使用时再归还;而进程同步则涉及共享资源的并发进程间有一种必然的联系,当进程必须同步时,即使无进程在使用共享资源时,那么尚未得到同步消息的进程也不能去使用这个资源。
四、信号量方法
(一)信号量机制P47
信号量:用来表示系统中资源的使用情况.可以是整形.
S是与临界区内所使用的公用资源有关的信号量。
S≥0 可供并发进程使用的资源数
S<0 正在等待使用临界区的进程数
(二)PV原语
P原语:s-1 后 >=0继续;<0阻塞,插入阻塞队列
V原语:s+1 后 >0继续;<=0唤醒
PV原语编程题要点
1.设置变量及初值(注意有无互斥、同步)
2.cobegin…coend
3.P/V操作位置,是否会死锁
4.区别公有信号量/私有信号量
五、经典的同步问题
(一)生产者-消费者问题
注意是否会发生死锁
需要先看仓库内是否有空位,再看仓库的使用权
例:某工厂有两个生产车间,两个生产车间分别生产 A , B 两种零件,装配车间的任务是把 A , B 两种零件组装成产品。两个生产车间每生产一个零件后都要分别把它们送到装配车间的货架F1,F2上,F1存放零件 A ,F2存放零件 B ,F1和F2的容量均为可以存放10个零件。装配工人每次从货架上取一个 A 零件和一个 B 零件然后组装成产品。请用 PV 操作进行正确管理。
该题是生产者消费者的变形,可以认为一个消费者(装配工人)同两个生产者( A , B 车间)互斥试用两个缓冲区(F1,F2),可设mutex1,mutex2(初值为1)控制进程对F1,F2的互斥操作,另设empty1,empty2(初值均为10),ful1,ful2(初值均为0)。
(二)读者-写者问题
一个文件可能被多个进程共享,为了保证读写的正确性和文件的一致性,系统要求,当有读者进程读文件时,不允许任何写者进程写,但允许多读者同时读;当有写者进程写时,不允许任何其它写者进程写,也不允许任何读者进行读。
(三)图书馆阅览室问题
假定阅览室最多可同时容纳100个人阅读,读者进入时,必须在阅览室门口的一个登记表上登记,内容包括姓名、座号等,离开时要撤掉登记内容。用P、V操作描述读者进程的同步算法。
作业
1、理发师问题
一个理发店由一个有几张椅子的等候室和一个放有一张理发椅的理发室组成。若没有要理发的顾客,则理发师就去睡觉;若一顾客走进理发店且所有的椅子都被占用了,则该顾客就离开理发店;若理发师正在为人理发,则该顾客就找一张空椅子坐下等待;若理发师在睡觉,则顾客就唤醒他,设计一个协调理发师和顾客的程序。
2、吃水果问题
桌上有一只盘子,每次只能放一个水果,爸爸专向盘中放苹果,妈妈专向盘中放桔子,儿子专等吃盘里的桔子,女儿专等吃盘里的苹果。只要盘子空,则爸爸或妈妈可向盘中放水果,仅当盘中有自己需要的水果时,儿子或女儿可从中取出,请给出四人之间的同步关系,并用P、V操作实现四人正确活动的程序。
3、司机-售票员问题
设公交汽车上,司机和售票员的活动分别是:
司机: 售票员:
启动车辆 上下乘客
正常行车 关车门
到站停车 售票
开车门
上下乘客
在汽车不断到站、停车、行驶过程中,者两个活动的同步关系?
4、和尚打水问题
某寺庙,有小和尚和老和尚若干,有一个水缸,由小和尚提水入缸供老和尚饮用。水缸可以容纳10桶水,水取自同一口井中,由于水井口窄,每次只能容纳一个水桶取水。水桶总数为3个。每次入水、取水仅为一桶,且不可同时进行。请用PV原语写出协调小和尚和老和尚动作的程序。
5、过路问题
在南开大学和天津大学之间有一条弯曲的小路,其中从S到T一段路每次只允许一辆自行车通过,但中间有一个小的“安全岛”M(同时允许两辆自行车停留),可供两辆自行车已从两端进入小路情况下错车使用,如图所示。试设计一个算法来使来往的自行车均可顺利通过。
2.7 管程
信号机制的缺陷:管理不便;易读性差及正确性难以保证
一、概念
1、基本思想:采用一种数据结构抽象地表示系统中的共享资源,忽略内部结构和实现细节,共享资源的申请、释放和其它操作都是在数据结构上的操作过程。
2、四个特征:互斥性、安全性、共享性、结构性
二、应用P59
例如:生产者-消费者问题用管程解决
2.8 进程通信
作业JCB>程序>进程PCB>线程TCB
一、单机系统中进程间通信的四种形式
主从式、会话式、消息或邮箱机制、共享存储区方式
二、高级通讯机制类型
1 共享存储器系统(Shared-Memory System)P61
2 消息传递系统(Message passing System)P61
3 管道(pipe)通信系统P63
2.9 线程
一、概念
由数据块、程序块、线程控制块、堆栈组成
独立拥有资源的单位;独立调度的单位
=>进程的上下文切换
- 为了使程序可以并发执行,系统通常要执行以下操作:创建进程、撤销进程、进程切换
- 线程是进程的一个实体,被独立调度和分配的基本单位,又称轻权(轻型)进程。
CPU在进程之间切换需保存,但在同一进程的不同线程切换无需保存(线程无挂起)
- 一个进程至少有一个线程,一个线程只属于一个进程。
- 由操作系统分开处理:作为独立调度的单位,不/同时作为拥有资源的单位;对于拥有资源的基本单位又不对它进行频繁的切换
二、属性
1、轻型实体
2、独立调度和分派的基本单位
3、可并发执行
4、共享进程资源
三、线程的状态
1、运行状态:线程正获得处理机而运行
2、就绪状态
3、阻塞状态:在执行过程中因某事件受阻处于暂停执行时的状态
四、线程和进程的主要区别
1、进程是资源管理的基本单位,它拥有自己的地址空间和各种资源;
线程只是处理机调度的基本单位,它只和其他线程一起共享进程资源,它自己没有任何资源。
2、以进程为单位进行处理机切换和调度时,处理机切换时间长,资源利用率降低;
以线程为单位进行进行处理机切换和调度时,由于不发生资源变化,特别是地址空间的变化,处理机切换时间较短,从而处理机效率较高。
3、对用户来说,多线程系统比无线程系统可减少用户的等待时间,提高系统的响应速度。
4、线程和进程一样,都有自己的状态,也有相应的同步机制,不过由于线程没有单独的数据和程序空间,因此线程不能像进程的数据与程序那样,交换到外存存储空间,从而线程没有挂起状态。
5、进程的调度、同步等大多由OS内核完成,而线程的控制既可以由OS内核进行,也可以由用户控制。
类别 | 进程 | 线程 |
---|---|---|
性质 | 资源管理的基本单位 | 处理机调度的基本单位 |
资源 | 拥有自己的地址空间和各种资源 | 只和其他线程一起共享进程资源,它自己没有任何资源 |
进行处理机切换和调度 | 处理机切换时间长,资源利用率降低 | 不发生资源变化,处理机切换时间较短,从而处理机效率较高 |
用户的等待时间 | 较长 | 多线程系统比无线程系统可减少用户的等待时间,提高系统的响应速度 |
状态和同步机制 | 无挂起状态 | |
控制 | 大多由OS内核完成 | OS内核+用户控制 |
进程适用范围
几种典型的应用:1服务器中的文件管理和进程通信控制;2 前后台处理;3 异步处理;4 数据的批处理;5 网络系统中信息发送和接受;6 其他相关的处理。