第六讲进程的同步(续).ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《第六讲进程的同步(续).ppt》由会员分享,可在线阅读,更多相关《第六讲进程的同步(续).ppt(27页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、操操作作系系统统第第 六六 讲讲进进 程程 的的 同同 步(续)步(续)操操作作系系统统例例3 3:哲学家吃通心面问题:哲学家吃通心面问题有有五五个个哲哲学学家家围围一一圆圆桌桌旁旁,桌桌中中央央有有一一盘盘通通心心面面,每每人人面面前前有有一一只只空空盘盘于于,每每两两人人之之间间放放一一把把叉叉子子。每每个个哲哲学学家家思思考考、饥饥饿饿、然然后后吃吃通通心心面面。为为了了吃吃面面,每每个个哲哲学学家家必必须须获获得得两两把把叉叉子子,且且每每人人只只能能直接从自己左边或右边去取叉子直接从自己左边或右边去取叉子 操操作作系系统统操操作作系系统统VarVar chopstick:array0
2、.4 of semaphore;chopstick:array0.4 of semaphore;chopstickichopsticki:=1;:=1;cobegincobegin process Pi /i=0,1,2,3,4,process Pi /i=0,1,2,3,4,begin begin思考;思考;P(chopstickiP(chopsticki);P(chopstickP(chopstick(i+1)mod 5)(i+1)mod 5);吃通心面;吃通心面;V(chopstickiV(chopsticki);V(chopstick(i+1)mod 5)V(chopstick(i+1
3、)mod 5);end;end;coendcoend;操操作作系系统统上述解法可能出现永远等待,有若干办法可避免死锁上述解法可能出现永远等待,有若干办法可避免死锁:至多允许四个哲学家同时拿左边筷子;至多允许四个哲学家同时拿左边筷子;奇数号先取左边的叉子,偶数号先取右边的叉子;奇数号先取左边的叉子,偶数号先取右边的叉子;每个哲学家取到手边的两把叉子才吃,否则一把叉每个哲学家取到手边的两把叉子才吃,否则一把叉 子也不取。子也不取。操操作作系系统统例例4 4:读者写者问题:读者写者问题有两组并发进程:读者和写者,共享一个文件有两组并发进程:读者和写者,共享一个文件F F,要求:要求:允许多个读者同时
4、执行读操作允许多个读者同时执行读操作;任一写者在完成写操作之前不允许其它读者或写者任一写者在完成写操作之前不允许其它读者或写者工作工作;写者执行写操作前,应让已有的写者和读者全部退写者执行写操作前,应让已有的写者和读者全部退出。出。操操作作系系统统为实现为实现ReaderReader与与WriterWriter进程间在读或写时的互斥而设进程间在读或写时的互斥而设置了一个互斥信号量置了一个互斥信号量WmutexWmutex。另外,再设置一个整型另外,再设置一个整型变量变量ReadcountReadcount表示正在读的进程数目。由于只要有一表示正在读的进程数目。由于只要有一个个ReaderRea
5、der进程在读,便不允许进程在读,便不允许WriterWriter进程去写。进程去写。因为因为Readcount是一个可被多个是一个可被多个Reader进程访问的临界进程访问的临界资源,因此,应该为它设置一个互斥信号量资源,因此,应该为它设置一个互斥信号量rmutex。操操作作系系统统 因因此此,当当Readcount=0,表表示示尚尚无无Reader进进程程在在读读时时,Reader进进 程程 才才 需需 要要 执执 行行 wait(Wmutex)操操 作作。若若wait(Wmutex)操操作作成成功功,Reader进进程程便便可可去去读读,相相应应地,做地,做Readcount+1操作。操
6、作。同同理理,仅仅当当ReaderReader进进程程在在执执行行了了ReadcountReadcount减减1 1操操作作后后其其值值为为0 0时时,才才须须执执行行signal(Wmutexsignal(Wmutex)操操作作,以以便便让让WriterWriter进程写。进程写。操操作作系系统统varvar ReadcountReadcount:integer:=0;:integer:=0;WmutexWmutex,RmutexRmutex:semaphore;:semaphore;ReadcountReadcount:=0;/*:=0;/*读进程计数读进程计数*/WmutexWmutex
7、:=1;:=1;RmutexRmutex:=1;:=1;操操作作系系统统procedure read;procedure write;procedure read;procedure write;begin begin beginbegin P(RmutexP(Rmutex););P(WmutexP(Wmutex););if if ReadcountReadcount=0 then =0 then P(WmutexP(Wmutex);写文件写文件;/是第一个读者是第一个读者 V(WmutexV(Wmutex););ReadcountReadcount:=:=ReadcountReadcount
8、+1;end;+1;end;V(RmutexV(Rmutex);/);/允许下一读者进入允许下一读者进入 读文件;读文件;P(RmutexP(Rmutex););ReadcountReadcount:=:=ReadcountReadcount-1;-1;if if ReadcountReadcount=0 then =0 then V(WmutexV(Wmutex);/没有读者了没有读者了 V(RmutexV(Rmutex););end;end;操操作作系系统统2.5 2.5 进程的通信进程的通信一、进程通信的概念一、进程通信的概念进程通信的定义:进程间的信息交换。进程通信的定义:进程间的信息
9、交换。信信号号量量及及PVPV操操作作可可实实现现进进程程互互斥斥和和同同步步,但但缺缺乏乏传传输输大大量消息的能力。这是一种低级的、间接的通信方式。量消息的能力。这是一种低级的、间接的通信方式。进进程程通通信信是是指指进进程程之之间间可可直直接接以以较较高高的的效效率率传传递递较较多多数数据的信息交换方式。这种方式中采用的是通信机构。据的信息交换方式。这种方式中采用的是通信机构。操操作作系系统统所所谓谓信信件件是是指指进进程程之之间间相相互互传传递递的的赖赖以以发发生生交交互互作用的有结构的数据。作用的有结构的数据。通信机构将紧密地与进程的阻塞和释放相联系。通信机构将紧密地与进程的阻塞和释放
10、相联系。这样,进程间的通信就进一步扩充了并发进程这样,进程间的通信就进一步扩充了并发进程 间对数据的共享。间对数据的共享。操操作作系系统统二、进程通信的类型二、进程通信的类型1 1、进程的通信方式有:共享存储器方式、消息传递方式。、进程的通信方式有:共享存储器方式、消息传递方式。共享存储器方式分为共享数据结构方式和共享存储区共享存储器方式分为共享数据结构方式和共享存储区方式方式共享数据结构方式比如临界区,该数据类型的设置共享数据结构方式比如临界区,该数据类型的设置及管理必须由程序员完成,因此不常用及管理必须由程序员完成,因此不常用,是低效的是低效的共享存储区方式即信箱通信共享存储区方式即信箱通
11、信 进程通过对共享存储区中数据的读写来实现通信进程通过对共享存储区中数据的读写来实现通信操操作作系系统统消息传递方式消息传递方式messagemessage为传递单位为传递单位,也称报文也称报文程序员通过系统提供的通信原语进行通信程序员通过系统提供的通信原语进行通信,操作系操作系统隐藏了通信的细节统隐藏了通信的细节有直接和间接两种方式有直接和间接两种方式操操作作系系统统三、消息传递系统的实现三、消息传递系统的实现1 1、消息传递方式有直接和间接两种。、消息传递方式有直接和间接两种。2 2、直接通信方式、直接通信方式 使用原语使用原语 Send(Receiver,messageSend(Rece
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第六讲 进程的同步续 第六 进程 同步
![提示](https://www.deliwenku.com/images/bang_tan.gif)
限制150内