第3章 进程同步与通信gai
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
常用的通信方式: ●命名管道 ●套接字 ●远程过程调用
● ——
作业
P84/ 1 ● 4 ● 5 ●6
●
1.
答:存在互斥关系,因为同一本书只能借 给一个同学。 答:存在互斥关系,因为篮球只有一个, 两队只能有一个队抢到球 答:存在同步关系,因为最后一道工序的 开始依赖于前一道工序的完成。 答:存在同步关系,因为商品若没有入库 就无法出库,若商品没有出库,装满了库 房,也就无法再入库。 答:工人与农民之间没有相互制约关系。
用信号灯解决互斥问题
semaphore mutex=1; P1: while (1){ P(mutex); 临界区; V(mutex); 剩余区; };
P2: while (1){ P(mutex); 临界区 V(mutex); 剩余区; };
用信号灯解决同步问题
S1 a b
semaphore a,b=0,0; {s1; V(a); V(b)}
●空闲让进 ●忙则等待 ●有限等待 ●让权等待
临界区
退出区
剩余区 }
●
互斥实现的硬件方法
●禁止中断
●专用机器指令
源自文库
TS(Test and Set)指令 ●Swap指令
●
互斥实现的软件方法
单标志算法 双标志、先检查算法 双标志、先修改后检查算法
先修改、后检查、后修改算法
●
信号量和PV操作
3.说明P、V操作为什么要设计成原语
答:用信号量S表示共享资源,其初值为1表示有一个
资源。设有两个进程申请该资源,若其中一个进程先 执行P操作。P操作中的减1操作有3跳及其指令组成: 去S送寄存器R;R-1送S。若P操作不用原语实现,在执 行了前述三条指令中的2条,即还未执行R送S时(此 时S值仍为1),进程被剥夺CPU,另一个进程执行也 要执行P操作,执行后S的值为0,导致信号量的值错 误。正确的结果是两个进程执行完P操作后,信号量S 的值为-1,进程阻塞。
诸进程之间能有效地共享资源和相互合作,从
而使程序的执行具有可再现性。
●
3.1 进程的同步与互斥
● 进程互斥:由于共享资源所要求的排他性, 进程间相互竞争,某个进程使用这种资源时,其
他进程必须等待。即多个进程不能同时使用同一
个资源。(争抢车道、篮板球、打印机等)(异步)
● 进程同步:多个进程中发生的事件存在着某
进程通信的类型
●共享存储器系统 ●消息传递系统
●直接通信方式
●间接通信方式
●管道通信
进程通信中的几个问题
●通信链路的建立方式
●显式建立链路 ●隐式建立链路
●通信方向(单、双) ●通信链路连接方式(点对点、广播) ●通信链路的容量 ●数据格式(字节流、报文)
●同步方式
●阻塞方式 ●不阻塞方式
客户—服务器系统通信
1965年,荷兰学者Dijkstra提出了信号灯机 制,卓有成效地解决了进程同步问题。
●
●记录型信号灯的定义
struct semaphore{ int value; struct PCB *queue; }
信号灯的物理意义 从资源的观点看信号灯的意义: ● s.value的初值表示系统中某种资源 数目。 ● wait(s)表示要申请一个资源。 ● signal(s)表示要释放一个资源。 ● s.value <0时,|s.value|表示等待队列 的进程数。
种时序关系,必须协同动作、相互配合,共同完 成一个任务。(接力、工厂的流水线等)
● 进程通信:多进程之间要传递一定信息。
(传递信息量大)
●
临界资源与临界区
● 临界资源:某段时间内仅允许一个进程使用 的资源。 ● 临界区:每个进程中访问临界资源的那段代 码。
同步机制应遵循的准则
访问临界资源的进程描述为 While(1){ 进入区
● 原语 ● 进程与线程
第3 章
进程同步与通信
●进程同步与互斥
本章要点
●经典进程同步问题
●AND信号量 ●管程
●进程通信
●
3.1 进程的同步与互斥 并发带来的问题
● 共享全局变量带来危险 ● 很难最佳分配管理资源
● 很难定位程序错误
● 记录每个进程
● 为每个进程分配和释放各种资源
● 保护每个进程的数据和资源
操 作 系 统
● 保证执行结果的正确性
●
3.1 进程的同步与互斥
进程的交互 ● 进程的并发执行使进程之间存在着交互。
●
3.1 进程的同步与互斥
同步与互斥的引入 ● OS引入进程后,由于进程的异步性,可能会 导致程序执行结果的不确定性,使程序执行时
出现不可再现性。
●进程互斥与同步的主要任务是使并发执行的
S2
S3
{P(a); s2} {P(b); s3}
V(S)操作在前 P(S)操作在后
●
3.5 进程通信
信号灯作为进程同步和互斥工具是卓有 成效的。但作为通信工具就不够理想。 其原因为: ●效率低——一次只传一条消息。 ●通信对用户不透明。 因此必须引入高级通信工具,解决进 程之间大量的信息传递问题