第六讲 进程的同步(续).ppt

第六讲 进程的同步(续).ppt

ID:48750208

大小:166.50 KB

页数:27页

时间:2020-01-21

第六讲  进程的同步(续).ppt_第1页
第六讲  进程的同步(续).ppt_第2页
第六讲  进程的同步(续).ppt_第3页
第六讲  进程的同步(续).ppt_第4页
第六讲  进程的同步(续).ppt_第5页
资源描述:

《第六讲 进程的同步(续).ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第六讲进程的同步(续)例3:哲学家吃通心面问题有五个哲学家围一圆桌旁,桌中央有一盘通心面,每人面前有一只空盘于,每两人之间放一把叉子。每个哲学家思考、饥饿、然后吃通心面。为了吃面,每个哲学家必须获得两把叉子,且每人只能直接从自己左边或右边去取叉子Varchopstick:array[0..4]ofsemaphore;chopsticki:=1;cobeginprocessPi//i=0,1,2,3,4,begin思考;P(chopstick[i]);P(chopstick[(i+1)mod5]);吃通心面;V(chopst

2、ick[i]);V(chopstick[(i+1)mod5]);end;coend;上述解法可能出现永远等待,有若干办法可避免死锁:至多允许四个哲学家同时拿左边筷子;奇数号先取左边的叉子,偶数号先取右边的叉子;每个哲学家取到手边的两把叉子才吃,否则一把叉子也不取。例4:读者写者问题有两组并发进程:读者和写者,共享一个文件F,要求:允许多个读者同时执行读操作;任一写者在完成写操作之前不允许其它读者或写者工作;写者执行写操作前,应让已有的写者和读者全部退出。为实现Reader与Writer进程间在读或写时的互斥而设置了一个互斥

3、信号量Wmutex。另外,再设置一个整型变量Readcount表示正在读的进程数目。由于只要有一个Reader进程在读,便不允许Writer进程去写。因为Readcount是一个可被多个Reader进程访问的临界资源,因此,应该为它设置一个互斥信号量rmutex。因此,当Readcount=0,表示尚无Reader进程在读时,Reader进程才需要执行wait(Wmutex)操作。若wait(Wmutex)操作成功,Reader进程便可去读,相应地,做Readcount+1操作。同理,仅当Reader进程在执行了Readc

4、ount减1操作后其值为0时,才须执行signal(Wmutex)操作,以便让Writer进程写。varReadcount:integer:=0;Wmutex,Rmutex:semaphore;Readcount:=0;/*读进程计数*/Wmutex:=1;Rmutex:=1;procedureread;procedurewrite;beginbeginP(Rmutex);P(Wmutex);ifReadcount=0thenP(Wmutex);写文件;//是第一个读者V(Wmutex);Readcount:=Readco

5、unt+1;end;V(Rmutex);//允许下一读者进入读文件;P(Rmutex);Readcount:=Readcount-1;ifReadcount=0thenV(Wmutex);//没有读者了V(Rmutex);end;2.5进程的通信一、进程通信的概念进程通信的定义:进程间的信息交换。信号量及PV操作可实现进程互斥和同步,但缺乏传输大量消息的能力。这是一种低级的、间接的通信方式。。进程通信是指进程之间可直接以较高的效率传递较多数据的信息交换方式。这种方式中采用的是通信机构。所谓信件是指进程之间相互传递的赖以发生

6、交互作用的有结构的数据。通信机构将紧密地与进程的阻塞和释放相联系。这样,进程间的通信就进一步扩充了并发进程间对数据的共享。二、进程通信的类型1、进程的通信方式有:共享存储器方式、消息传递方式。共享存储器方式分为共享数据结构方式和共享存储区方式共享数据结构方式比如临界区,该数据类型的设置及管理必须由程序员完成,因此不常用,是低效的共享存储区方式即信箱通信进程通过对共享存储区中数据的读写来实现通信消息传递方式message为传递单位,也称报文程序员通过系统提供的通信原语进行通信,操作系统隐藏了通信的细节有直接和间接两种方式三、

7、消息传递系统的实现1、消息传递方式有直接和间接两种。2、直接通信方式使用原语Send(Receiver,message):发送一个消息给接收方,Receive(Sender,message):接收sender发来的消息接收进程可与多个发送进程通信,接收原语中的源进程参数,可灵活设置3、间接通信方式建立在共享数据结构的基础上实现通信信件信件内容包括发送者名信息(或信息存放地址和长度)和等/不等回信;回信存放地址。利用信箱实现通信信箱若干个进程都可向一个进程发送信件,接收的进程设立一个信箱。信箱大小决定了可以容纳的信件数。每个

8、信箱由“信箱说明”和“信箱体”两个部分组成。通信原语“发送”(Send)原语和“接收”(Receive)原语。为避免信件的丢失和错误地索取信件,通信时应遵循同步规则。发送原语:S1为信箱满否信号量,初值为信箱B容量n;S2为信箱中当前信件数的信号量,初值为0。算法Send(B,M)输入:信箱B,信件M输

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。