T第2章进程2同步演示
OS4进程管理2同步与互斥
–
进入区;
–
临界区;
–
退出区;
–
剩余区;
– until false;
互斥执行时必须满足的4条 准则1、2、3保证并发进程享有平等的、独立的竞争和使用公有 资源的权力,并且保证每一个时刻至多只有一个进程在临界区。 准则 准则4则是在并发进程不发生死锁的重要保证,否则,由于某个 并发进程长期占有临界区,其他进程则因为不能进入临界区而进入 相互等待状态。
信号量与P/V原语
• V原语
– 将信号量加1, 并唤醒等待的 进程
最基本互斥机制的实现
int mutex = 1
进程A while(TRUE) { nocritical_region(); P(mutex); critical_region(); V(mutex); nocritical_region(); }
lock(){ disable Interupts; } Unlock(){ enable Interrupts; }
锁的具体实现
• 方法2:原子指令序列
– 用硬件实现test-and-set指令,涉及从一 个内存单元的读出与写入
– 在单处理机上很容易实现 – 可以应用到多处理机上,但要考虑Cache
进程互斥
• 进程的并发特性
– 独立性 – 异步性
• 对有限的资源的共享和竞争引起进程的 相互制约
– 临界资源
临ቤተ መጻሕፍቲ ባይዱ资源的概念
• 何谓临界资源?
– 两个或两个以上的进程不能同时使用的资 源
• 临界资源实例
– 一些独占设备,如打印机、磁带机等 – 一些共享变量、表格、链表等
临界资源的概念
• 何谓临界区?
进程B while(TRUE) { nocritical_region(); P(mutex); critical_region(); V(mutex); nocritical_region(); }
2-2进程的同步
第二章 进 程 管 理
引起创建进程的事件
• 用户登录 用户登录后,系统将为终端建立一个进程。 用户登录后,系统将为终端建立一个进程。 • 作业调度 调度程序调度一个作业时,便立即为他创建进程。 调度程序调度一个作业时,便立即为他创建进程。插入就绪队 一个作业时 列。 • • 用户要求打印,则系统创建打印进程) 提供服务 (用户要求打印,则系统创建打印进程) 应用程序自己创建新进程 新进程) 应用请求 (应用程序自己创建新进程)
第二章 进 程 管 理
进程的三种基本状态及其转换图
就绪 时间片完 I/O完成 进程调度
阻塞
I/O请求
执行
第二章 进 程 管 理
进程状态变迁图
新进程
就绪 时间片完 I/O完成 进程调度
阻塞
I/O请求
执行
结束
第二章 进 程 管 理
执行
激活 活动 就绪 激活 活动 阻塞 挂起 静止 阻塞 挂起 静止 就绪
具有挂起状态的进程状态图
第二章 进 程 管 理
3、进程控制块PCB 、进程控制块
1. 进程控制块的作用 1)是进程存在的唯一标识。 )是进程存在的唯一标识。 2)操作系统是通过进程控制块来对进程进行控制和管理的。 )操作系统是通过进程控制块来对进程进行控制和管理的。 2. 进程控制块中的信息 进程标识符、 处理机状态、 进程调度信息 进程控制信) ( 1) 进程标识符、 2) 处理机状态、3) 进程调度信息 4) 进程控制信) 3. 进程控制块的组织方式
第二章 进 程 管 理
第二章 进程管理
2.1 2.2 2.3 2.4 2.5 进程的基本概念 进程控制 进程同步 经典进程的同步问题 进程通信
第二章 进 程 管 理
计算机操作系统 第二章 进程管理(2)
缺点:
(1)进程在等待进入临界区时也要耗费处理器时间, 不能实现“让权等待” (2)可能出现进程“饥饿”
2.3.2 信号量机制
新的同步工具——信号量和P、V操作。
信号量:是一种数据结构,代表可用资源实 体的数目。
信号量只能通过初始化和两个标准的原语: P(wait(S))、V((signal(S))来访问。 P原语相当于进入区操作,V原语相当于退 出区操作。
AND同步机制
AND同步机制的基本思想是:进程运行时所 需要的所有资源,要么全部分配给它,使用完 毕后一起释放;要么一个都不分配给它。实现 时,采用原子操作:要么全部分配到所有资源, 要么一个也不分配到。 称AND型信号量P原语为:
Swait(Simultaneous wait)
V原语为Ssignal(Simultaneous signal)。
SP原语描述
Swait(S1,S2,„,Sn) /* SP原语描述 */ {while(1) {if(S1>=1&&S2>=1&&„&&Sn>=1) {for(i=1;i<=n;i++) Si--; /* 先确信可满足所有资源要求再减1操作 */ berak; } else /* 资源不够时 */ {将进程放入第一个信号量小于1的阻塞队列Si.sqeue; 将PC中的地址回退到SP开始处; 阻塞进程; } } }
第二章 进程管理(2)
2.3 进程同步
多进程并发执行时,由于资源共享或进程合 作,使进程间形成间接相互制约和直接相互制 约关系,这需要用进程互斥与同步机制来协调 两种制约关系。 进程同步的主要任务:协调进程执行次序, 使并发执行的诸进程间能有效地共享资源和相 互合作,使程序的执行具有可再现性。
操作系统教程Linux实例分析孟庆昌第2章进程(参考课件)
第2章 进程管理
作业A
开 始
空转 输入
空转 输入
停止
作业B 开 始
空转 输入
空转 输入
停止
图2-3 多道技术下作业执行过程
第2章 进程管理
2.1.3 程序并发执行的特性 资源共享和程序的并发执行使得系统的工作情况
变得非常复杂, 带来一系列新的问题, 特别表现在各 种程序活动的相互依赖和制约关系方面。
第2章 进程管理
作 业 A A 开 始空 输 转 入运 行
作 业 B
等待
空 转 输 入
A 停 止
B 开 始空 输 转 入运 行
空 转 输 入
B 停 止
图2-2 非多道技术下作业执行过程
第2章 进程管理
采用多道程序技术来执行同样的作业A和B, 就能 大大改进系统性能, 如图2-3所示。 作业A先运行, 它运行一秒后等待输入, 此时让B运行; B运行一秒 后等待输入, 此时恰好A输入完, 可以运行了……就 这样在CPU上交替地运行A和B。 在这种理想的情况下, CPU不空转, 其使用率升至百分之百, 并且吞吐量也 随之增加了。
第2章 进程管理
第2章 进程管理
2.1 进程概念 2.2 线程 2.3 进程管理 2.4 进程间通信 2.5 经典进程同步问题 2.6 管程 2.7 进程通信 2.8 Linux进程管理 习题
第2章 进程管理
2.1 进 程 概 念
2.1.1 程序的顺序执行 顺序程序活动有三个主要特点: (1) 程序所规定的动作在机器上严格地按顺序执行。 (2) 只有程序本身的动作才能改变程序的运行环境。 (3) 程序的执行结果与程序运行的速度无关。
(3) 并发程序在执行期间可以互相制约。
OS02-1进程管理ppt课件
;.
2021/3/21
7
例:有两个循环程序A和B,它们共享一个变量N。 程序A:每执行一次时都要做N=N+1操作; 程序B:每执行一次都要做PRINT(N)和
N=0; 程序A和B以不同的速度运行,可能出现下述3种情况(假定某时刻N=n): (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;
;.
2021/3/21
10
进程的定义
进程的概念是60年代初首先由麻省理工学院的MULTICS系统和IBM公司的 CTSS/360系统引入的。进程有很多各式各样的定义,如: 行为的一个规则叫做程序,程序在处理机上执行时所发生的活动称为进程。 一个具有一定功能的程序关于某个数据集合的一次运行活动。 进程是一个程序与其数据一道通过处理机的执行所发生的活动。
3
2、程序顺序执行的特征
顺序性:一个程序开始执行必须要等到前一个程序已执行完成; 封闭性:程序运行时独占全机资源,程序一旦开始执行,其计算结果不受外 界因素影响; 可再现性:程序的结果与它的执行速度无关(即与时间无关),只要给定相 同的输入,一定会得到相同的结果;
;.
2021/3/21
4
2.1.2 前趋图
;.
2021/3/21
12
2、进程的状态及转换
进程有三种基本状态,在生命消亡前处于且仅处于三种基本状态之一
不同系统设置的进程状态数目不同,有: 三种基本状态系统; 五种基本状态系统; 七种基本状态系统;
进程同步演示
2.2 进程间通信2.2.1 竞争条件并发进程旳有关性①资源共享方式:a)内存,CPU,设备,文献,系统分派和协调;b)小量软资源,共享队列,通过手段协调。
②进程合伙。
1.间接互相制约方式2.直接互相制约方式这些关系可以归结为两种关系:互斥和同步。
互斥(mutual exclusion)--共享某资源旳各进程不能同步进行同一操作。
竞争条件--(race condition,书P24)即两个或多种进程读写某些数据,而最后旳成果取决于进程运营旳精确时序,就称为竞争条件。
这就是为什么会产生与时间有关旳错误旳因素。
同步(synchronization)--有关进程间合伙时操作旳时间顺序旳限制。
互斥和同步旳区别:一种只要不同步发生就行,谁先谁后看排队、优先级;一种是动作要有严格旳时间顺序。
下面我们先讨论互斥旳问题2.2.2 临界区(Critical Section)我们把一次仅容许一种进程使用旳资源称为临界资源(Critical Resource)。
如打印机,绘图仪,磁带机等,公共变量,公用表格,公用队列等。
访问临界资源旳那段程序称为临界区。
它可以从概念上分离出来,而,或叫临界段(互斥段)。
例1:有两个进程共享一种变量count。
P1:R1:=COUNT;ﻩﻩ|R1:=R1+1;ﻩﻩ |COUNT:=R1;ﻩ|P2:R2:=COUNT;ﻩﻩﻩ|R2:=R2+1; ﻩ|COUNT:=R2;ﻩﻩ此时两个进程各自对count作了加操作,而count增长了2。
如果执行是另一种顺序。
P1:R1:=COUNT;ﻩ|发生时钟中断P2:R2:=COUNT;ﻩ|P2:R2:=R2+1;ﻩﻩﻩ|ﻩ|COUNT:=R2;ﻩ……ﻩﻩﻩﻩ|P1:R1:=R1+1;ﻩﻩ|COUNT:=R1;ﻩﻩ虽然两个进程也各自对count作了加一操作,但count却只增长了一。
例2:两个进程在系统中共用一种缓冲队列。
如果程序顺序是p1:return ptr1:=ptr;ﻩ获得第一种缓冲区旳PTRﻩptr:=tail(ptr);ﻩ指针指向下一种p2:reture ptr2:=ptr;获得第二个缓冲区旳PTR ptr:=tail(ptr); 指针指向第三个但如果程序顺序是:p1:return ptr1:=ptr;ﻩﻩ获得第一种缓冲区旳PTR 发生时钟中断:p2:retureptr2:=ptr;ﻩﻩ也获得第一种缓冲区旳PTRp1:ptr:=tail(ptr);指针指向第二个PTRp2:ptr:=tail(ptr); ﻩ指针指向第三个PTR执行成果导致p1,p2共得一种缓冲区,第二个缓冲区丢失,第三个缓冲区成为首部。
T第2章进程2同步演示
T第2章进程2同步演⽰2.3 进程同步2.3.1 进程同步的基本概念1.两种制约关系间接制约直接制约竞争条件:两个或多个进程读写某些共享数据,⽽最后的结果取决于进程运⾏的精确时序,就称为竞争条件(Race condition竞争⾯临三个控制问题:⑴互斥互斥(mutual exclusion)定义为共享某资源的各进程不能同时进⾏同⼀操作。
互斥也可看作是⼀种特殊的同步关系。
实现互斥要有⼯具。
⑵死锁例如,考虑两个进程P1和P2,以及两个资源R1和R2,假设每个进程为执⾏部分功能都需要访问这两个资源,那么就有可能出现操作系统将R1分配给P2,把R2分配给P1,每个进程都在等待另⼀个资源,并且在获得其他资源并完成需要这两个资源的功能前,谁也不会释放⾃⼰已经拥有的资源,这两个进程发⽣死锁。
⑶饿死避免⽆限延迟——在任何系统中,只要在进⾏资源分配和进程调度的决策时,使某些进程等待,就可能在其它进程都得到系统服务的情况下,使得对某个进程的资源分配或调度⽆限推迟。
⽆限延迟实际上等于死锁。
避免⽆限延迟最好采⽤时效概念:即在⼀个进程等待⼀个资源时,应将这个进程的优先级不断提⾼,最后,它的优先级是如此之⾼,以致这个进程必定能得到它正等待的资源。
2.临界资源——P48⼀次仅允许⼀个进程使⽤的资源称为临界资源(Critical Resource)。
如打印COUNT。
此时两个进程各⾃对COUNT 作了加操作,⽽COUNT 增加了2。
如果执⾏是另⼀种顺序。
虽然两个进程也各⾃对COUNT 作了加1操作,但COUNT 却只增加了1。
为了预防这种错误,COUNT 这个公⽤变量应按临界资源处理。
诸进程进⼊临界区时必须互斥,即当P1进⼊临界区时,不管它对COUNT 进⾏什么操作,必须它退出后这段临界区后,才允许P2访问⾃⼰的临界区。
这就叫操作不可分割。
p1:return ptr1:=ptr ;获得第⼀个缓冲区的PTRptr :=tail(ptr);指针指向下⼀个p2:reture ptr2:=ptr ;获得第⼆个缓冲区的PTRptr :=tail(ptr);指针指向第三个但如果程序顺序是:p1:return ptr1:=ptr ;获得第⼀个缓冲区的PTR发⽣时钟中断:p2:reture ptr2:=ptr ;也获得第⼀个缓冲区的PTRp1:ptr :=tail(ptr);指针指向第⼆个PTRp2:ptr :=tail(ptr);指针指向第三个PTR3.临界区(Critical Section)在每个进程中访问临界资源的那段程序称为临界区,或叫临界段(互斥段)它能够从概念上分离出来,。
操作系统课件os02进程同步
管程的示意图
管程等待区 condition c1 wait(c1)
…
管程
condition cn wait(cn)
等待调用过程 的进程队列
入口
局部数据 条件变量 过程/函数1 … 过程/函数k
管程主要特性
模块化 • 基本程序单位,可以单独编译;
抽象数据类型 • 包含数据和操作;
信息隐蔽 • 从外部看不到内部信息;
管程和进程不同
管程定义的是公共数据结构; • 进程定义的是私有数据结构PCB 管程把共享变量上的同步操作集中起来 • 临界区却分散在每个进程中; 管程的设置则是解决共享资源的互斥使用问题 • 设置进程的目的在于实现系统的并发性; 进程通过调用管程中的过程对共享数据结构实行操作 • 管程为被动工作方式,进程则为主动工作方式;
临界区
同步机制应遵循的规则
1. 空闲让进。 2. 忙则等待。 3. 有限等待。 4. 让权等待。
2.3.2 信号量机制
1 整型信号量 • 定义为一个用于表示资源数目的整型量S S • 仅能通过 两个标准 的 原子操 作 P操作 (wait)和 V操作 (signal)来访问。
wait(S): while S<=0 do no-op; S:=S-1;
repeat … produce an item nextp; … wait(empty); wait(mutex); buffer(in) :=nextp; in:=(in+1) mod n; signal(mutex); signal(full);
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.3 进程同步2.3.1 进程同步的基本概念1.两种制约关系间接制约直接制约竞争条件:两个或多个进程读写某些共享数据,而最后的结果取决于进程运行的精确时序,就称为竞争条件(Race condition竞争面临三个控制问题:⑴互斥互斥(mutual exclusion)定义为共享某资源的各进程不能同时进行同一操作。
互斥也可看作是一种特殊的同步关系。
实现互斥要有工具。
⑵死锁例如,考虑两个进程P1和P2,以及两个资源R1和R2,假设每个进程为执行部分功能都需要访问这两个资源,那么就有可能出现操作系统将R1分配给P2,把R2分配给P1,每个进程都在等待另一个资源,并且在获得其他资源并完成需要这两个资源的功能前,谁也不会释放自己已经拥有的资源,这两个进程发生死锁。
⑶饿死避免无限延迟——在任何系统中,只要在进行资源分配和进程调度的决策时,使某些进程等待,就可能在其它进程都得到系统服务的情况下,使得对某个进程的资源分配或调度无限推迟。
无限延迟实际上等于死锁。
避免无限延迟最好采用时效概念:即在一个进程等待一个资源时,应将这个进程的优先级不断提高,最后,它的优先级是如此之高,以致这个进程必定能得到它正等待的资源。
2.临界资源——P48一次仅允许一个进程使用的资源称为临界资源(Critical Resource)。
如打印COUNT。
此时两个进程各自对COUNT 作了加操作,而COUNT 增加了2。
如果执行是另一种顺序。
虽然两个进程也各自对COUNT 作了加1操作,但COUNT 却只增加了1。
为了预防这种错误,COUNT 这个公用变量应按临界资源处理。
诸进程进入临界区时必须互斥,即当P1进入临界区时,不管它对COUNT 进行什么操作,必须它退出后这段临界区后,才允许P2访问自己的临界区。
这就叫操作不可分割。
p1:return ptr1:=ptr ; 获得第一个缓冲区的PTRptr :=tail(ptr); 指针指向下一个p2:reture ptr2:=ptr ; 获得第二个缓冲区的PTRptr :=tail(ptr); 指针指向第三个但如果程序顺序是:p1:return ptr1:=ptr ; 获得第一个缓冲区的PTR发生时钟中断:p2:reture ptr2:=ptr ; 也获得第一个缓冲区的PTRp1:ptr :=tail(ptr); 指针指向第二个PTRp2:ptr :=tail(ptr); 指针指向第三个PTR3.临界区(Critical Section)在每个进程中访问临界资源的那段程序称为临界区,或叫临界段(互斥段)它能够从概念上分离出来,。
显然,若能保证诸进程互斥地进入自己的临界区,便可实现它们对临界资源的互斥访问。
为此,必须在临界区前面增加一段用于进行上述检查的代码,把这段代码称为进入区(entry section )。
相应地,在临界区后面也要加上一段称为退出区(exit section )的代码,用于将临界区正被访问的标志恢复为未被访问标志。
until false4.同步机制应遵循的准则为实现进程互斥,可利用软件方法,也可在系统中设置专门的同步机制来协调诸进程,但所有的同步机制都应遵循下述四条准则:⑴ 空闲让进。
⑵ 忙则等待⑶ 有限等待——无限延迟、饿死⑷ 让权等待5.进程间通过通信的合作——同步在计算机系统中,为了完成某一个任务,进程之间要协作。
例如,为了把原始的一批记录加工成当前需要的记录创建了两个进程,即进程A和进程B。
进程A启动输入设备不断地读记录,每读出一个记录就交给进程B去加工,直至所有记录都处理结束。
为此,系统设置了一个容量为能存放一个记录的缓冲区,进程A把读出的记录存入缓冲区,进程B从缓冲区取出记录加工,如下图所示:用进程互斥的办法不能克服上述两种错误,采用互通消息的办法来控制执行速度,使相互协作的进程正确工作。
这就是进程间的同步问题。
同步(synchronization)定义为关于进程间合作时操作的时间顺序的限制。
同步指系统中多个进程中发生的事件存在某种时序关系,需要相互合作,共同完成一项任务。
具体说,一个进程运行到某一点时要求另一伙伴进程为它提供消息,在未获得消息之前,该进程处于等待状态,获得消息后被唤醒进入就绪态进程同步的主要任务,是保证相互合作的诸进程在执行次序上的协调,不会出现与时间有关的差错。
互斥和同步的区别:一个只要不同时发生就行,谁先谁后看排队、优先级;一个是动作要有严格的时间顺序。
补充:实现临界区互斥的锁操作方法1.关闭中断2.设置锁变量在测试与设置方法中,设置个变量w来代表某种临界资源的状态,因此w 又成为锁或锁位。
w=0 表示资源空闲(可用)w=1 表示资源已被使用关锁原语:lock(w);L:if w=1 then goto Lelse w:=1;开锁原语:unlock(w);w:=0;大家注意:由于原语执行时不可分割(或中断)。
考虑三个进程P1:P2:P3:1;2;3;指令IBM360/370采用汇编实现LOCK(X)TS X 测试锁位并置1,送PSW(条件码)BNZ *-4 不为0,往回跳4字节,继续执行TSX。
UNLOCK(X)MVI X,’00’Intel 8086/8088 汇编指令也能实现锁原语。
OCK PROC FAR;汇编语言的过程保留字MOV AL,1;将1送入AL寄存器AGAIN:XCHG AL,FLAG ;交换指令,状态进入AL,FLAG=1关锁TEST AL,AL;测试AL,看状态是什么JNZ AGAIN;AL=1时回跳(FLAG=1)RET;返回主程序UNLOCK PROC FAR;开锁MOV FLAG ,0;FLAG=0RET;修改后的关锁和开锁原语为:lock w:begin if w=1then beginblock(n);insert(wL,n);schedulere ndelse w:=1end;unlock w:begin if wthen beginremove(wL,q);states(q):=‘readya’;insert(RL,q)end;w:=0end;2.3.2 信号量机制(semaphores machinist)在实际的操作系统中,是采用P、V操作。
P、V是荷兰语Passeren和Verhoog的头一个字母,在英语中对应Wait(DOWN、SLEEP)与Signal (UP、WAKEUP),它是由荷兰的Dijkstra提出的一种方法。
P和V是两个原语(两个过程段,原子操作)在信号量上的操作。
1.信号量信号量是表示资源的物理实体,是一个与队列有关的整型变量。
在类pascal 中,将它表示为一个记录。
type semaphore=recordval:integer;值域L:pointer;指针域end;在类C中应是一个结构体:struct semaphore{ int valume;struct PCB *p;}s;信号量实际是一个计数锁(广义锁),它的值只能由P、V操作来改变。
2.P、V操作(计数信号量机制)第一类:p(semphore s);{s.value=s.value-1;if(s.value<0)block(S.L)}v(semaphore s){s.value:=s.value+1;if (s.value<=0)wakeup(S.L)}第二类:WAIT、SIGNAL操作(计数信号量机制)wait(semphore s){ lock out interrupt;s.value=s.value-1;if (s.value<0){ 该进程状态置为等待状态将该进程的PCB插入相应的等待队列末尾s.queue;重新调度scheduler;//重新分配CPU}}signal(semaphore s){s.value=s.value+1;if (s.value<=0) //等待队列不空{ 唤醒相应等待队列s.queue中等待的一个进程改变其状态为就绪态,并将其插入就绪队列}}P、V操作必须是原语,执行期间不可分割。
P、V操作的物理意义:P操作:信号量s可以看成一个资源量。
如果有进程对s进行P操作就是申请该资源的一个单位(申请一台打印机),所以进行一次P操作,s.value要减1(减少一个资源)。
进行到最后S分配完毕(s.value=0),再有进程申请资源(进行P(s)),使s.value<0,没有资源,进程只好等待,就把这个进程放进打印机等待队列。
s.value负数的绝对值,表明在该信号量上阻塞的进程数。
s.value>0 其值为剩余(尚有)资源s.value=0 无资源,无等待进程s.value<0 s.value的绝对值即为等待该资源的进程数。
V操作:表示释放资源,s.value=s.value+1。
如果s.value<=0,说明此资源释放时有进程阻塞,因此要唤醒一个进程,把资源给它,让它去就绪队列中等CPU。
2.3.3 信号量的应用PV操作把售票管理进程的工作引入信号量机制。
用P、V操作限制进程进入临界区,引入信号量mutex(mutual exclusion--互斥),其初值为1。
mutex:semaphore;mutex.value:=1;cobeginrepeat t1(x);repeat t2(x);coend;procedure t1(x)var x:integer;beginp(mutex);read(x);if x>=1 then x:=x-1;write(x);V(mutex)end;procedure t2(x);var x:integer;beginP(mutex);read(x);if x>=1 then x:=x-1;write(x);V(mutex);end;Hansen提出并行PASCAL语言之前,Dijkstra提出:COBEGINS1;S2;S3;……;SnCOENDP、V操作在这里起到了lock和unlock的作用,实现了互斥。
2.进程的同步为了把原始的一批记录加工成当前需要的记录,进程A启动输入设备B去加工,直至所有记录都处理结束。
为此,系统设置了一个容量为能存放一个记录的缓冲区,进程A把读出的记录存入缓冲区,进程B从缓冲区取出记录加工,如下图所示:进程采用互通消息的办法来控制执行速度,使相互协作的进程正确工作。
同步(synchronization )定义为关于进程间合作时操作的时间顺序的限制。
在许多进程之间存在一种相互合作的关系。
就像在生产流水线上,后一道工序开始之前,前一道工序必须完成,这两道工序之间是相互合作关系。
这是进程间的直接制约关系。