九章节进程同步与通信.PPT
《九章节进程同步与通信.PPT》由会员分享,可在线阅读,更多相关《九章节进程同步与通信.PPT(23页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、九章节进程同步与通信 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望4.2.5 进程同步与互斥举例 一、有限缓冲区问题 问题描述:问题描述:设有设有n n个缓冲区,一组生产者个缓冲区,一组生产者进程往缓冲区写数据,一组消费者进程从缓进程往缓冲区写数据,一组消费者进程从缓冲区取数据,写取都以一个缓冲区为单位。冲区取数据,写取都以一个缓冲区为单位。说明:说明:将缓冲池看做是共享数据,对缓冲区的将缓冲池看做是共享数据,对缓冲区的 操作必须是互斥操作。操作必须是互斥操作。
2、如果如果n n个缓冲区全满,生产者进程必须个缓冲区全满,生产者进程必须 等待。等待。如果缓冲区全空,消费者进程必须等待。如果缓冲区全空,消费者进程必须等待。有限缓冲区的生产者有限缓冲区的生产者/消费者问题(生消费者问题(生产者和消费者共享一个产品缓冲池)。产者和消费者共享一个产品缓冲池)。共享N个缓冲区P1 P2 Pm C1 C2 Cn生生产产者者消消费费者者缓冲池缓冲池解:解:设置以下信号量设置以下信号量mutex,mutex,初值为初值为1 1,控制互斥访问缓冲池。,控制互斥访问缓冲池。full,full,初值为初值为0 0,表示当前缓冲池中满缓冲区,表示当前缓冲池中满缓冲区数,用于同步。
3、数,用于同步。empty,empty,初值为初值为n n,表示当前缓冲池中空缓冲,表示当前缓冲池中空缓冲区数,用于同步。区数,用于同步。有限缓冲区生产者有限缓冲区生产者/消费者进程描述如下:消费者进程描述如下:type item=;type item=;var buffer=;var buffer=;full,empty,mutex:semaphor;full,empty,mutex:semaphor;nextp,nextc:item;nextp,nextc:item;begin beginfull:=0;empty:=n;mutex:=1;full:=0;empty:=n;mutex:=1;
4、P(empty);P(mutex);add nextp to buffer;V(mutex);V(full);until false;end;Parbegin Producer:beginrepeat produce an item in nextp;.consume the item in nextc;until false;end;Parend;consumer:begin repeat P(full);P(mutex);remove an item from buffer to nextc 释放缓冲区 V(mutex);V(empty);若存在一共享数据若存在一共享数据A A,那些对它进
5、行读,那些对它进行读访问者叫访问者叫ReaderReader,对它进行写访问者叫做,对它进行写访问者叫做WriterWriter。第一类第一类Reader/WriterReader/Writer问题:问题:Reader Reader和和WriterWriter争夺访问共享数据争夺访问共享数据A A时,时,ReaderReader有较高优先数。有较高优先数。表现在:除了某个表现在:除了某个WriterWriter正在访问数正在访问数据之外,任何情况下据之外,任何情况下ReaderReader欲访问数据均欲访问数据均可以直接进行访问。可以直接进行访问。二、Readers/Writers问题该问题可
6、具体描述为:1.1.如果当前无人访问数据,则如果当前无人访问数据,则Reader/WriterReader/Writer欲访问即可访问。欲访问即可访问。2.2.如果已存在一个如果已存在一个ReaderReader正在访问数据,其他正在访问数据,其他欲访问欲访问ReaderReader可马上访问(这体现可马上访问(这体现ReaderReader有较有较高优先权);而欲访问的高优先权);而欲访问的WriterWriter必须等待。必须等待。3.3.若某个若某个WriterWriter正访问数据,则欲访问的正访问数据,则欲访问的Reader/WriterReader/Writer都必须等待。都必须等
7、待。(续)4.4.当最后一个结束访问数据的当最后一个结束访问数据的ReaderReader发现有发现有WriterWriter正在等待时,则将其中一个唤醒。正在等待时,则将其中一个唤醒。5.5.当某个当某个WriterWriter结束访问时,若只有结束访问时,若只有WriterWriter在在等待,则唤醒某个等待,则唤醒某个WriterWriter,若既有,若既有WriterWriter也有也有ReaderReader;则按;则按FIFOFIFO或某它原则唤醒一个或某它原则唤醒一个WriterWriter或所有或所有ReaderReader。Reader的一般结构为:P(mutex);read
8、count:=readcount+1;If readcount=1 then P(wrt);V(mutex);读数据读数据A AP(mutex);readcount:=readcount-1;If readcount=0 then V(wrt);V(mutex);Writer的一般结构为:P(wrt);写数据写数据A AV(wrt);三、哲学家就餐问题 问题描述:问题描述:五个哲学家五只筷子,五个哲学家五只筷子,哲学家循环做着思考和吃饭的动作,吃哲学家循环做着思考和吃饭的动作,吃饭程序是:先取左边筷子,再取右边筷饭程序是:先取左边筷子,再取右边筷子,再吃饭,再放筷子。子,再吃饭,再放筷子。实现
9、:实现:为每个筷子设一把锁(信号量,初值为每个筷子设一把锁(信号量,初值为为1 1)每个哲学家是一个进程。共享数据结构为:)每个哲学家是一个进程。共享数据结构为:Var Chopstick;array 0,4of semaphore;Var Chopstick;array 0,4of semaphore;第第i i个进程描述为个进程描述为(i i=0,4)=0,4)repeat P(chopsticki);P(chopstick(i+1)mod 5);吃 V(chopsticki);V(Chopstick(i+1)mod 5;思考 until false;(这可能导致死锁这可能导致死锁)4.3
10、 进程通信 两种基本进程通信方法:两种基本进程通信方法:1.1.共享存储(共享存储(Shared-memoryShared-memory):相互:相互通信的进程有共享存储区。进程间可通信的进程有共享存储区。进程间可以通过直接读写共享存储区的变量来以通过直接读写共享存储区的变量来交互数据,同步与互斥在并发程序设交互数据,同步与互斥在并发程序设计时安排进入程序。操作系统提供这计时安排进入程序。操作系统提供这样的共享存储区及某些同步互斥工具。样的共享存储区及某些同步互斥工具。2.2.消息传递消息传递(message-passing)(message-passing):若进:若进程间无共享空间,则必须
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 章节 进程 同步 通信
限制150内