- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第6章 进程并发与通信
第六章 进程并发与通信 同步与互斥 进程间通信(IPC) 进程死锁 第6章 6.1 教学目的和要求 了解同步互斥问题的原因 掌握临界区、原语和信号量概念 掌握解决简单同步互斥问题的信号量方法 重点 临界区、原语和信号量概念 难点 应用信号量解决同步互斥问题 同步与互斥 同步互斥问题 临界段概念 原语和信号量 信号量的讨论 同步互斥问题 例子1:两个进程共享打印机 同步互斥问题 例子2:两个程序对共享变量x的读/写 同步互斥问题 例子3:生产者/消费者问题 同步互斥问题 分析原因 并发进程由于共享资源产生相互制约关系 互斥关系(亦称间接制约关系) 多个进程因竞争那些需要互斥使用的共享资源所产生的制约关系。 同步关系(亦称直接制约关系) 多个进程因协作完成同一任务而需要交换信息和相互等待,由此产生的制约关系。 同步互斥问题:违反了制约关系 具有不确定性,与执行顺序相关。 临界段概念 解决同步互斥问题:正确地控制和实现并发进程之间的制约关系 临界段概念 临界资源(Critical Resource, CR) 必须互斥访问的资源 临界段(Critical Section, CS) 访问临界资源的程序段 所有进程必须互斥地执行临界段程序 临界段概念 两个进程共享打印机 临界段概念 生产者/消费者问题 临界段概念 两个程序对共享变量x的读/写 临界段概念 临界段的互斥执行必须满足四项条件: 有空即进:当无进程在临界段时,任何进程可立即进入临界段。 单一进入:不允许两个以上的进程同时进入临界段 多中择一:当临界段中无进程,同时有多个进程要求进入临界段,应在有限的时间内选择一个进入临界段,其他进程则等待。 有限等待:任何进入临界段的要求应在有限的时间内得到满足。 临界段概念 临界段的编程模型 临界段概念 软件“锁”算法 设置“锁”变量lock,初值=false 不能满足临界区的互斥条件 原因:“测试lock”与“设置lock”是可分离的 原 语 原语或原子操作 ——以不被分割和不被中断执行的操作序列完成的功能 物理原语:硬件实现的原子操作 单条指令 或者被完整执行,或者没有被执行。 逻辑原语:软件实现的原语 p、v原语 操作语义被完整地、确定地执行。 基于物理原语 原 语 采用同步互斥原语实现临界段 硬件原子操作 低级原语——“锁”原语 高级原语——信号量 硬件实现的原子操作 禁止中断指令 中断引起处理机改变指令执行流 适用于单机环境 临界段足够小 硬件实现的原子操作 Test-and-Set 指令:读出变量值同时置变量为1 Swap 指令:交换两个变量的值 “锁”原语 利用硬件原子操作实现“锁”原语 锁变量lock: 1=锁住;0=开锁;初值=0 up_lock(lock): 循环检查lock的值直到lock=0; 设置lock为1 。 down(lock):设置lock为0。 “锁”原语 利用“禁止中断”指令实现“锁”原语 “锁”原语 利用TestSet指令实现“锁”原语: “锁”原语 利用Swap指令实现“锁”原语 P、V原语 锁原语通常用于操作系统内核,实现较小的临界段 。 以“忙等待”方式竞争临界段,即循环执行“测试锁”的操作指令。 高级同步互斥原语——信号量原语 基于低级原语 以系统调用的形式提供给用户程序 信号量 S 特殊变量 对S的操作限制为:赋初值,P(S)和V(S) P、V原语 “忙”等待的P、V原语定义 信号量S为一整型变量 P(S): While S≤0 do continue; S = S-1; V(S):S = S+1; P、V原语 实现互斥 使用信号量mutex(初值=1) 实现同步 进程A执行完S1语句后,进程B才能执行S2。 使用信号量synch(初值=0) 同步互斥原语 “阻塞”等待的P、V原语定义 信号量结构S的定义 value:integer; 一个整型变量 L:List of process; 一个进程队列 可以用“锁”原语实现 解题和讨论 1个生产者和1个消费者共享1个缓冲区 生产者进程(P)不能往“满”的缓冲区中放产品,设置信号量empty,初值=1。 消费者进程(Q)不能从“空”的缓冲区中取产品,设置信号量full,初值=0。 解题和讨论 1个生产者和1个消费者共享n个缓冲区 缓冲区Buffer[n] 信号量的初值:empty=n;full=0。 上次课的内容 同步互斥问题的原因 共享资源 制约关系 临界区概念 同步互斥原语 硬件原语 “锁”原语 信号量原语 第6章 6.1~6.2 教学目的和要求 继续讨论信号量 了解进程间通信(IPC)功能和应用 重点 进程间的通信功能 难点 信号量和通信功能的应用 解题和讨论 k个生产者和m个消费者共享n个
文档评论(0)