- 1、本文档共66页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Solaris同步 Solaris 实现了多种锁来支持多任务、多线程(包括实时线程)和多进程处理。 - 适应互斥量:保护那些为较短代码段所访问的数据 - 条件变量 - 信号量 - 读–写锁:用于保护经常访问但通常是只读访问的数据 - 十字转门:用于安排等待获取适应互斥和读写锁的线程链表 在单处理器系统中,使用中断屏蔽来保护全局资源的访问 在多处理器系统中使用自旋锁 也提供调度对象,这些对象类似于互斥、信号量等 调度对象也可以提供事件来同步(events) 事件的使用与条件变量类似 Windows XP 同步 Linux: 使用禁止中断来实现短的临界区 Linux 提供: 信号量 自旋锁 Linux 同步 Pthreads API 是操作系统无关的 提供了: 互斥锁 条件变量 不可移植的扩展包括: 读写锁 自旋锁 Pthreads同步 * 解决临界区问题的方法 * 信号量 * 死锁和饥饿 * 两类信号量 * 经典同步问题 * 环境变量 * * * * * * * 两种类型信号量 计数信号量 – 变化范围没有限制的整型值. 二进制信号量 – 变化范围仅限于0和1的信号量;容易实现. 可以将计数信号量S用作二进制信号量. 同步信号量和互斥信号量 数据结构: binary-semaphore S1, S2; int C: 初始化: S1 = 1 S2 = 0 C = 信号量 S的初值 S作为二进制信号量的实现 wait 操作 wait(S1); C--; if (C 0) { signal(S1); wait(S2); } signal(S1); signal 操作 wait(S1); C ++; if (C = 0) signal(S2); else signal(S1); 信号量的实现 经典同步问题 有限缓冲区问题 读者写者问题 哲学家就餐问题 生产者消费者问题 CONSUMER PRODUCER empty初值为1,full初值为0 单缓存生产者消费者问题解决方案 P: Repeat 生产一个产品; P(empty); 送产品到缓冲区; V(full); Until false C: Repeat P(full); 从缓冲区中取产品; V(empty); 消费产品; Until false 共享数据semaphore full, empty, mutex;初始化:full = 0, empty = n, mutex = 1 多缓冲区问题 do { … produce an item in nextp … wait(empty); wait(mutex); … add nextp to buffer … signal(mutex); signal(full); } while (1); 生产者进程 do { wait(full) wait(mutex); … remove an item from buffer to nextc … signal(mutex); signal(empty); … consume the item in nextc … } while (1); 消费者进程 读者写者问题 读者写者问题 有两组并发进程: 读者和写者,共享一组数据区,要求:允许多个读者同时执行读操作;不允许读者、写者同时操作;不允许多个写者同时操作。 读者优先 如果读者来: 1)无读者、写者,新读者可以读。 2)有写者等,但有其它读者正在读,则新读者也可以读。 3)有写者写,新读者等 如果写者来: 1)无读者,新写者可以写。 2)有读者,新写者等待。 3)有其它写者,新写者等待。 读者写者问题解决方案 读者:Repeat P(mutex); readcount:=readcount+1; if readcount=1 then P (w); V(mutex); 读 P(mutex); readcount:=readcount-1; if readcount=0 then V(w); V(mutex); Until false 写者: Repeat P(w); 写 V(w); Until false 思考 第二类读者写者问题:写者优先 条件: 1)多个读者可以同时进行读 2)写者必须互斥(只允许一个写者写,也不能读者写者同时进行) 3)写者优先于读者(一旦有写者,则后续读者必须等待,唤醒时优先考虑写者) 如何用
您可能关注的文档
最近下载
- 《城镇排水管道检测与评估技术规程》.pdf VIP
- 统编版《道德与法治》六年级下册第8课《科技发展 造福人类》精品课件(含视频).pptx
- 2025年党支部书记学习教育专题党课中央八项规定专题党课讲稿(严守中央八项规定精神,争做新时代合格党员;从中央八项规定精神看党员干部的责任与担当).docx VIP
- 3.3 探秘澜沧江—湄公河流域的河流地貌课件高中地理鲁教版(2019)必修一.pptx
- GB50666-2011混凝土结构工程施工规范.doc VIP
- 现代畜牧业发展理论与实践(畜牧业发展历程).ppt VIP
- 座便器检验报告.pdf
- 线上音乐特色作业说民乐-奏民乐设计.docx VIP
- QB∕T 5362-2019 玻璃器皿单位产品能源消耗限额(可复制版).pdf
- TCESA 1177-2021 非结构化数据应用分级要求.pdf VIP
文档评论(0)