第3章 进程同步与通信 第3课时 信号量机制《操作系统原理课件(第2版)》 同步教学(电子工业出版社)

2023-08-30
| 20页
| 128人阅读
| 0人下载
普通

内容正文:

操作系统原理(第2版) 3.3.2 使用信号量实现进程互斥 方法:为要进入的临界区设置一个互斥信号量mutex,将mutex.value初值设置为1,然后将各进程的临界区(访问临界资源的那段代码)置于P(mutex) 和V(mutex) 之间。程序模型如下: Semaphore mutex; mutex.value=1; cobegin process Pi() // i=1, 2, 3, …, n { … //与临界资源无关的代码 P(mutex); 临界区; V(mutex); … //与临界资源无关的剩余代码 } coend 3.3 信号量机制 互斥信号量 当两个或多个进程使用初值为1的信号量(称为互斥信号量)时,可以保证任何时刻只能有一个进程进入临界区。如果每个进程在进入临界区前都对信号量执行一个P操作,而在退出临界区时对该信号量执行一个V操作,就能实现多个进程互斥的进入各自的临界区(访问临界资源的那段程序代码)。 3.3 信号量机制 例如,有两个进程P1和P2要访问某一临界资源,它们各自的临界区为L1和L2。可设S为这两个进程的互斥信号量,其S.value的初值为1。这时,只需把临界区置于P(S) 和V(S) 之间即可实现两进程的互斥。 3.3 信号量机制 进程P1: … P(S); L1; V(S); … 进程P2: … P(S); L2; V(S); … 3.3.3 使用信号量实现进程同步 若干进程为完成一个共同的任务而相互合作,这就需要相互合作的进程在某些协调点处(即需要同步的地方)插入对信号量的P操作或V操作,以便协调它们的工作(实现进程间的同步)。 例:在公共汽车上,司机和售票员各司其职地工作(各自相当于一个独立运行的进程)。司机 只有等售票员关好车门后才能 启动汽车,售票员只有等司机 停好车后才能开车门,两者必 须密切配合、协调一致。 进程的同步是采用信号应 答方式来进行的。 3.3 信号量机制 使用信号量实现进程同步示例 程序模型如下: Semaphore Start,Open; Start.value=0,Open.value=0; cobegin process 司机() { while(1) { P(Start); 启动汽车; 正常行驶; 到站停车; V(Open); } } process 售票员() { while(1) { 关车门; V(Start); 售票; P(Open); 开车门; } } coend 使用信号量实现进程同步示例 例:进程P1~P4存在如右图所示的 运行次序: 并发执行的程序描述如下: Semaphore a,b,c,d; a.value=0,b.value=0,c.value=0,d.value=0; cobegin process P1() { P1;V(a);V(b); } process P2() { P(a);P2;V(c); } process P3() { P(b); P3;V(d); } process P4() { P(c);P(d);P4; } coend 有向边上的字母代表信号量,有向边的起始端进程在执行结束时,要对该信号量实施V操作,而有向边的结束端进程在执行之前则要对该信号量实施P操作,这样就确保了多个合作进程按事先约定的顺序执行。 例 包裹自动分拣系统中存在两个进程:一个是拣入进程,一个是拣出进程。拣入进程将包裹放入分拣筐,拣出进程则从分拣筐中取出包裹,分拣筐一次只能存放一个包裹(见下图)。试通过P、V操作写出这两个并发进程能够正确执行的程序。 拣入进程和拣出进程交替分拣包裹的P、V操作流程示意图 3.3 信号量机制

资源预览图

第3章 进程同步与通信 第3课时 信号量机制《操作系统原理课件(第2版)》 同步教学(电子工业出版社)
1
第3章 进程同步与通信 第3课时 信号量机制《操作系统原理课件(第2版)》 同步教学(电子工业出版社)
2
第3章 进程同步与通信 第3课时 信号量机制《操作系统原理课件(第2版)》 同步教学(电子工业出版社)
3
第3章 进程同步与通信 第3课时 信号量机制《操作系统原理课件(第2版)》 同步教学(电子工业出版社)
4
第3章 进程同步与通信 第3课时 信号量机制《操作系统原理课件(第2版)》 同步教学(电子工业出版社)
5
第3章 进程同步与通信 第3课时 信号量机制《操作系统原理课件(第2版)》 同步教学(电子工业出版社)
6
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。