- 1、本文档共131页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * 例1、有如下图所示的工作模型,三个进程P0, P1, P2和三个缓冲区B0, B1和B2,进程间借助于相邻的缓冲区传递消息,Pi每次从Bi中取一条消息,经加工送入B(i+1)%3中, B0, B1和B2分别可存放3,2,2个消息,初始时,仅B0有三条消息,用wait,signal操作写出P0, P1,P2的同步互斥流程。 M1 M2 M3 P2 P0 P1 B0 B2 B1 对B0,B1和B2缓冲区设3个互斥信号量mutex0=1,mutex1=1,mutex2=1 设P0的同步信号量,full0=3,empty1=0 设P1的同步信号量,full1=0,empty2=0 设P2的同步信号量,full2=0,empty0=0 P0: While(1) {wait(full0); wait(mutex0); 从B0取消息 signal(mutex0); signal(empty0); 加工该消息 wait(empty1); wait(mutex1); 消息放入B1 signal(mutex1); signal(full1); } P1: While(1) {wait(full1); wait(mutex1); 从B1取消息 signal(mutex1); signal(empty1); 加工该消息 wait(empty2); wait(mutex2); 消息放入B2 signal(mutex2); signal(full2); } P2: While(1) {wait(full2); wait(mutex2); 从B2取消息 signal(mutex2); signal(empty2); 加工该消息 wait(empty0); wait(mutex0); 消息放入B0 signal(mutex0); signal(full0); } 例2有桥如图,车流如箭头所示,桥上不允许两车交会,但允许同方向车辆通行(即桥上可以有多个同方向的车)用wait,signal操作实现交通管理,以防桥上堵塞。 南 北 设2个变量,count1为向南的车计数, count2为向北的车计数 为桥设置互斥信号量bridge, 设mutex1表示向南的车对count1的互斥使用,设mutex2表示向北的车对count2的互斥使用 南 北 向南的车: {wait(mutex1); count1++; if count1=1 wait(bridge); signal(mutex1); 过桥; wait(mutex1); count1--; if count1=0 signal(bridge); signal(mutex1); } 向北的车: {wait(mutex2); count2++; if count2=1 wait(bridge); signal(mutex2); 过桥; wait(mutex2); count2--; if count2=0 signal(bridge); signal(mutex2); } * * * * * * * * * * * * * * * * * * * * * * * * * * 管程通过使用条件变量condition提供对同步的支持。条件变量包含在管程中,并且只有在管程中才能被访问。 对于条件变量可以执行wait和signal操作。 c.wait :调用进程的执行在条件c上挂起,管程现在可被另一个进程使用。 c.signal :恢复执行在cwait之后因为某些条件而挂起的进程。如果有多个这样的进程,选择其中一个;如果没有这样的进程,什么也不做。 … 入口等待队列 … 紧急等待队列 局部于管程的数据结构 过程1 …… 过程n 初始化语句 入口等待队列:等待进入管程 紧急等待队列:在管程内部由于执行唤醒操作,可能 会出现多个等待进程 注:紧急等待队列优先级高于入口等待队列。 … wait(c1) …… … wait(cn) 处理方法有两种: (前提:P唤醒Q) 1、P等待、Q继续,直到Q退出或等待(Hoare) 2、Q等待、P继续,直到P退出或等待 规定唤醒操作为管程中最后一个可执行的操作(Hansen) 问题:多个进程出现在管程中 当一个进入管程的进程执行等待操作时,它应当释放管程的互斥权;当一个进入管程的进程执行唤醒操作时,(
您可能关注的文档
- 第2章 平面连杆机构4讲解.ppt
- 第2章 任务讲解.pptx
- 第五章_大气与园林植物讲解.ppt
- 第五章_辐射对人体健康的影响讲解.ppt
- 第2章 数据和运算符讲解.ppt
- 第2章 数据通信基础知识讲解.ppt
- 北风和小鱼课件完整版剖析.ppt
- 第2章 统计数据的收集整理与显示讲解.ppt
- 土石方工程量计算剖析.ppt
- 第2章 无机气硬性胶凝材料讲解.ppt
- 2025年贵州工业职业技术学院高职单招高职单招英语2016-2024历年频考点试题含答案解析.docx
- 2025年西昌民族幼儿师范高等专科学校高职单招职业适应性测试近5年常考版参考题库含答案解析.docx
- 2025年西藏警官高等专科学校高职单招语文2018-2024历年参考题库频考点含答案解析.docx
- 2025年贵州工商职业学院高职单招职业技能测试近5年常考版参考题库含答案解析.docx
- 2025年贵州工商职业学院高职单招职业适应性测试近5年常考版参考题库含答案解析.docx
- 2025年贵州农业职业学院高职单招数学历年(2016-2024)频考点试题含答案解析.docx
- 2025年贵州工商职业学院高职单招高职单招英语2016-2024历年频考点试题含答案解析.docx
- 2025年贵州工商职业学院高职单招语文2018-2024历年参考题库频考点含答案解析.docx
- 2025年许昌职业技术学院高职单招数学历年(2016-2024)频考点试题含答案解析.docx
- 2025年许昌职业技术学院高职单招职业技能测试近5年常考版参考题库含答案解析.docx
文档评论(0)