os-2-1-进程管理(新)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二章 进程管理
§1 进程概念 §2 进程描述 进程状态及转换 §3 进程状态及转换 §4 进程控制 §5 进程互斥 §6 进程同步 §7 进程通信
重点和难点: 进程的定义和特征 进程的同步和互斥 用信号量机制解决进程同步、互斥、 用信号量机制解决进程同步、互斥、前趋图问 题
2.1 进程的概念
2.1.1 程序的顺序执行 1.基本概念 1.基本概念
例:若有两条语句c=a-b和w=c+1,判断 若有两条语句 = - 和 = + , 它们是否可以并发执行? 它们是否可以并发执行? 解:它们的“读集”和“写集”分别为 它们的“读集” 写集” R(C:= -b)= ,b};R(W:= + :=a- )= )={a, ; ( := :=c+ ( := 1)= )={c} )= W(C:= W(C:=a-b)={c} ;W(W:=c+1) :=a-b)= )={c} W(W:= :=c+1) ={w} R(C:= -b)∩W(Wi:= +1)={Φ} :=a- ) ( := ( :=c+ ) Φ R(W:= +1)∩W(C:= -b)={c} :=c+ ) :=a- ) ( := ( := 所以:两条语句不能并发执行。 所以:两条语句不能并发执行。
– – – – –
1 直接前趋 2 直接后继 3 初始结点 4 终止结点 5 结点的重量:该结点所含的程序量或结点的执行时间 来计算。
2
5 7 6
1
3
4
七个结点的前趋图
存在下面的前趋关系: P2,P1 P3;P1 P4;P2 P5;P3 P5;P5 P7; P1 P4 P6,P6 P7 或表示为: P={P1,P2,P3,P4,P5,P6,P7} ={(P1,P2),(P1,P3),(P1,P4),(P2,P5),(P3,p5),(P4,P6),(P5,P7),(P6,P7)}
cobegin/coend表示并发结构,其中的程序可以并发执行。由 表示并发结构,其中的程序可以并发执行。 表示并发结构 于程序A和 都是异步执行 都是异步执行, 于程序 和B都是异步执行,它们的语句在时间上可能是穿 插或交叉执行的,故程序A的n:=n+1操作既可能在程序 插或交叉执行的,故程序 的 = + 操作既可能在程序B 操作既可能在程序 操作之前或之后执行, 的print(n)和n:=0操作之前或之后执行,也可能在它们之间 和 = 操作之前或之后执行 执行(即 = + 出现在 出现在print(n)之后,而在 =0之前 。于 之后, 之前)。 执行 即n:=n+1出现在 之后 而在n:= 之前 是,程序的运行可能产生三组不同的执行轨迹和结果(设在 程序的运行可能产生三组不同的执行轨迹和结果 设在 开始某个循环之前n= : 开始某个循环之前 =v):
其实,同一语句的“读集”和“写集”也 其实,同一语句的“读集” 写集” 可能相同(交集不为空) 可能相同(交集不为空) 例如:计数语句: 例如:计数语句: x=x+1 读集和写集相同R )=W 读集和写集相同R(x=x+1)=W(x= x+1)={x} )={x}
课后练习
Bernstein条件判断以下四条语句是 例:用Bernstein条件判断以下四条语句是 否两两可以并发执行。 否两两可以并发执行。 S1: a:=x+y S1: :=x S2: b:=z+1 S2: :=z S3: C:=a-b S3: :=a S4: w:=c+1 S4: :=c
将程序中任一语句Si划分为两个变量的集合 Si) 将程序中任一语句Si划分为两个变量的集合 Si R(Si) Si) 其中R Si)= 和W(Si), 其中R(Si)= {a1,a2,……am}是语句Si在执行其间必须对其进行读的 am}是语句Si在执行其间必须对其进行读的 {a1,a2, am}是语句Si 变量,称为读集; 变量,称为读集; Si)={b1,b2, )={b1 bn}是语句Si在执行其间必须对 W(Si)={b1,b2,……bn}是语句Si在执行其间必须对 bn}是语句Si 其进行修改的变量,称为写集; 其进行修改的变量,称为写集; 如果对于语句S1 S2, S1和 如果对于语句S1和S2,有 R(S1)∩W(S2)= ① R(S1)∩W(S2)={Φ} W(S1)∩R(S2)= ② W(S1)∩R(S2)={Φ} ∩W(S2)={Φ}同时成立 ③W(S1) ∩W(S2)={Φ}同时成立 ∩W(S2)= 即:R(S1)∩W(S2) ∪W(S1)∩R(S2)∪W(S1) ∩W(S2)= {Φ},则语句S1和S2是可以并发执行的 则语句S1 是可以并发执行的。 {Φ},则语句S1和S2是可以并发执行的。 操作系统中许多任务不满足Bernstein条件,它们不能并发 执行吗?怎么办?这涉及后面重点讲的进程同步问题。
2.程序的并发执行 2.程序的并发执行
一组逻辑上相互独立的程序或程序段在执行 过程中,其执行时间在客观上相互重叠,即一个 程序段的执行尚未结束,另一个程序段的执行已 经开始的执行方式。
I1
I2
I3
I4
C1
C2
C3
C4
P1
P2
P3
P4
程序并发执行时的前趋图
在对一批程序进行处理时,可以并发执行。 例如,输入、计算、打印三个程序对一批作业进 行处理时,存在以下的前趋关系: Ii→Ci,Ii→Ii+1,Ci→Pi,Ci→Ci+1, Pi→Pi+1 对一个作业的输入 计算和打印三个操作,必须顺序 执行,但并不存在Pi → Ii+1. Ii+1和Ci及Pi-1是可以并发执行的。
程序并发执行不可再现性举例
共享ห้องสมุดไป่ตู้值为0的变量N的两程序段A、B
A: N:=N+1 B: Print(N); N:=0
执行结果分析
先A: 1, 1, 0 中A: 0, 1, 0 后A: 0, 0, 1
设有两个循环结构的程序A和B,它们共享一个公共变 量n。程序A每执行一次循环都要作n:=n+1操作;程序B 在每一次循环中打印出n的值,然后将n置0。对此的 PASCAL描述如下:
前趋图
为了描述一个程序的各部分(程序段或语句)间的依赖 关系,或者是一个大的计算的各个子任务间的因果关 系,我们常常采用前趋图方式。
图 九个结点的前趋图
前趋图(Procedence Graph):是一个有向无循 环图,图中的每个结点可用于表示一条语句,一 个程序段或进程;结点间的有向边则表示在两结 点之间存在的前趋关系 “ ” 。 如果(pi,pj)∈ 可写成pi pj ,称pi是pj 的前趋, 而pj是pi的直接后继。 关于前趋图的几个概念:
有的同学发现,同一语句的“读集” 写集” 有的同学发现,同一语句的“读集”和“写集” 的交集是空集。 的交集是空集。 R(C:= -b)∩W(C:= -b)= Φ} :=a- ) :=a- )= )={Φ ( := ( := W(W:= +1)∩W(W:= +1)={Φ} :=c+ ) :=c+ ) Φ ( := ( :=
在某道程序段中,包含着一部分可以同时执行或顺序颠 倒执行的代码
例如:read(a); read(b); 既可以同时执行,也可以颠倒次序执行,同时执行不会改变顺 序程序所具有的逻辑行知,可采用并发执行来充分利用资源。
间断性、失去封闭性、不可再现性 间断性 – 程序在并发执行时,由于它们共享资源或为完成某一 项任务而合作,致使在并发程序之间存在相互制约的 关系。(I、C、P是三个相互合作的程序,当计算程序 完成Ci-1的计算后,如果输入程序I尚未完成对Ii的处 理,则计算程序无法进行Ci处理,致使计算程序在停 运行。) 失去封闭性 – 程序在并发执行时,是多个程序共享系统中的各种资 源,因而这些资源的状态将由多个程序来改变,致使 程序的运行失去了封闭性。
4 .程序并发执行的条件 程序并发执行的条件
程序并发执行过程可以描述为: 程序并发执行过程可以描述为: S0 Cobegin P1;P2;……Pn Coend Sn 1966年,Bernstein提出了相邻语句 1,S2可以并发执行的 提出了相邻语句S 年 提出了相邻语句 条件。 条件。 如果并发执行的各程序段中语句或指令满足Bernstein的 如果并发执行的各程序段中语句或指令满足 的 三个条件, 三个条件,则认为并发执行不会对执行结果的封闭性和 可再现性产生影响。 可再现性产生影响。
4、 程序顺序执行时的特征 、
(1) 顺序性
处理机的操作,严格按照程序所规定的顺序执行,即 只有前一操作结束后,才能执行后继操作。
(2) 封闭性(失去交换性)
封闭环境下运行,程序独占全机资源 只有当前运行程序才能改变资源状态 程序执行结果不受外界因素的影响
(3) 可再现性
只要程序执行时的环境和初始条件都相同,不论它是从 头到尾的不停顿的执行,还是“走走停停”地执行,都将获 得相同的结果。
例:下述四条语句的程序段画出前趋图 S1: a:=x+2 S2: b:=y+4 S3: c:=a+b S4: d:=c+6
S1
S3 S4
S2
3.程序并发执行的特征: 3.程序并发执行的特征: 程序并发执行的特征
多道程序系统的程序执行环境变化所引起的多道程序的 并发执行
由于资源有限,多道程序的并发执行总是伴随着资源的共享与 竞争,制约了各道程序的执行速度。
程序顺序执行时的特性,将 程序顺序执行时的特性, 为程序员检测和校正程序的 错误, 错误,带来极大的方便
. 多道程序系统中,程序执行环境的变化 多道程序系统中,
计算机能够同时处理多个具有独立功能的程序(如批处 理系统,分时系统、实时系统、网络与分布式系统)。 这样的执行环境具有三个特点: 独立性 :逻辑上独立; 随机性 :程序和数据的输入与执行开始时间都是随机的 资源共享: 硬件资源:CPU、输入输出设备,存储器 软件资源:各种例行程序、各种共享的数据 多道程序环境下执行程序的道数>计算机系统中CPU 的个数 单CPU中,则由N-1道程序处在等待CPU的状态 输入输出设备有限将导致这些设备被共享、内存有限 将导致内存被共享
注意:前趋图中不存在循环。
S2 S3 , S3 S2 显然这种前趋关系是不可能满足的,S3的执行要依赖 于S2的执行结果,S2的执行结果又要依赖于S3的执行 结果,这种程序是不可能执行下去的。
2.1.2 程序的并发执行 并发环境: 1.并发环境:
在一定时间内物理机器上有两个或两个以上 的程序同处于开始运行但尚未结束的状态,并且 次序不是事先确定的
不可再现性
– 程序在并发执行时,由于失去了封闭性,也导致失去了
可再现性。 例如:有两个循环程序A和B,它们共享一个变量N。程 序A每执行一次时都要做N:=N+1操作;程序B每执行 一次时,都要做print(N)操作,然后再将N置成“0”, 程序A和B以不同的速度运行。(假定某时刻变量N的值 为v) (1) N:=N+1在print(N)和N:=0之前,此时得 到的N值分别为n+1,n+1,0 (2)N:=N+1在print(N)和N:=0之后,此时得 到的N值分别为 n, 0, 1 (3) N:=N+1在 print(N)和N:=0之间,此时得 到的N值分别为 n, n+1, 0
I1
C1
P1
I2
C1
P2
程序顺序执行时的前趋图
3. 语句的顺序执行
对于一个程序段中的多条语句来说,也有 一个执行顺序的问题。如果对于下述三条 语句的程序段: S1: a:=x+y S2: b:=a-5 S3: C:=b+1 (其中S2必须在a被赋值以后才能执行;同 样S3也只能在b被赋值 以后才能执行)
程序:一个在时间上按严格次序、顺序执行的 操作序列。 程序的顺序执行:一个具有独立功能的程序独占 处理机,直至得到最终结果的过程 。 操作:数据处理的一种规则,一经启动就需要在 有限时间内完成 。 计算:若干操作严格顺序执行的集合 。
2.程序的顺序执行 2.程序的顺序执行
在计算机系统中只有一个程序在运行,这个程 序独占系统中所有资源,其执行不受外界影响。 通常一个程序可分成若干个程序段,它们必须 按照某种先后次序执行,仅当前一操作执行后, 才能执行后继操作。 例如:进行计算。I:输入操作 C:计算操 作 P:打印操作。在进行计算时,总是先输入 用户的程序和数据,然后进行计算,最后将结 果打印出来。
相关文档
最新文档