- 1、本文档共132页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
发送者执行send( )的同步问题: 1.将发送者消息拷入通信链缓冲区,即将控制返回发送者。 2.在将消息从硬通信通道发出后,将控制返回发送者。 3.在消息由接收方节点的系统收到后,再将控制返回发送者。 4.在消息由接收方收到后,再将控制返回发送者。 5.在消息由接收方处理完后,再将控制返回发送者(RPC,LPC)。 为实现3.,4.情形同步,需要建立回送到发送者所在系统的通信链,5.的情形需要建立回送到发送者的通信链。 进程通信示例 直接通信消息系统的两个基本操作为: send(A):A指向含接收者pid和消息正 文的空间。 Receive(A):A指向缓冲区用于接收消 息,该系统调用函数返回值 是消息发送者pid。 实现:系统有一用于进程通信的缓冲池,池中缓冲区用于存放消息及消息发送者pid和消息链指针(用pid定位进程PCB表)。 Sender’s pid 消息正文 Link 消息缓冲区 每个进程有一个消息队列,存放发送给该进程的消息,队列头存于PCB中,同时在PCB中设一互斥信号量mutex(初值为1)和一同步通信的信号量Sm(初值为0),Sm也用于计录消息队列中的消息数。 ... mutex Sm ... Sender’s pid text Sender’s pid text Receiver’s PCB message message Hptr Send(A): begin New(p);从缓冲池得一个buffer ... 置sender’s pid; 将A中消息送buffer p; 获得Receiver’s pid; P(mutex); 将buffer p挂入相应的消息队列; V(Sm); V(mutex); end; Receive(A): begin P(Sm); P(mutex); 从本进程的消息队列取一个buffer f; V(mutex); 从buffer f中取得消息正文送A,并得到 sender’s pid作为Receive( )的返回值; ... dispose(f);#释放buffer f到缓冲池 … end; 注:new,dispose函数对 缓冲池的访问也需要互斥. 本讲完 3、哲学家就餐问题 问题描述:五个哲学家五只筷子,哲学家循环做着思考和吃饭的动作,吃饭程序是:先取左边筷子,再取右边筷子,再吃饭,再放筷子。 实现:用一个信号量表示一根筷子,五个信号量构成信号量数组Chopstick[5],所有信号量初值为1。第i个哲学家的进餐过程描述为: while (true){ 思考问题 P(chopstick[i]); P(chopstick[(i+1)mod 5]); 进餐 V(chopstick[i]); V(Chopstick[(i+1)mod 5]; } (这可能导致死锁) 3.4 管程机制 一、 管程的引入 (一)引入原因 1、信号量机制是一种既方便又有效的进程同步机制,但每个要访问临界资源的进程都必须自备同步操作P(s)和V(s)。这就使大量的同步操作分散在各个进程。 2、同步操作的使用不当而导致系统死锁。使用同步操作P(s)和V(s)时发生了某种错误,同样会造成与时间有关的错误。 错误1 在利用互斥信号量mutex实现进程互斥时,如果将P(s)与V(s)颠倒,即: P(mutex); critical section V(mutex); 在这种情况下,可能会有几个进程同时进入临界区,因而同时去访问临界资源。 V(mutex); critical section P(mutex); 错误2 在实现进程互斥时,如果将程序中的V(mutex)误写为P(mutex),即: P(mutex); critical section V(mutex); 此时的mutex将被出错的进程连续2次地执行P操作,因而变成-1,这样将会使任何其他进程都不能进入临界区;从而也不会再有进程通过执行V(mutex)操作区唤醒出错的进程。在这种情况下将发生死锁。 P(mutex); critical section P(mutex); 错误3 在实现进程互斥时,如果在程序中遗漏了P
您可能关注的文档
- 轮转印刷机电气故障实例及解决方法.pptx
- 轮转调度发实验报告.doc
- 轮轴的秘密(潘凤仙).ppt
- 轮轴的秘密教案设计课件PPT.ppt
- 软件工程新技术研究探讨.doc
- 轮轴(工具和机械).ppt
- 软件工程课件04.2.ppt
- 轮轴的秘密(推荐).ppt
- 软件开发过程的定义.ppt
- 软玉矿床的三大成因是什么.pptx
- 山西省忻州市行政职业能力测验模拟试题完美版.docx
- 广东省潮州市行政职业能力测验题库审定版.docx
- 广东省云浮市选调生考试(行政职业能力测验)综合能力测试题学生专用.docx
- 广东省肇庆市行政职业能力测验模拟试题新版.docx
- 山西省阳泉市行政职业能力测验模拟试题审定版.docx
- 安徽省安庆市事业单位招聘考试(职业能力倾向测验)题库及参考答案.docx
- 山东省青岛市事业单位招聘考试(职业能力倾向测验)题库必考题.docx
- 国家海洋局六大测评要素之常识判断能力精选真题(易错题).docx
- 安徽省池州市行政职业能力测验模拟试题参考答案.docx
- 山东省淄博市行政职业能力测验模拟试题完美版.docx
文档评论(0)