操作系统chapter7.ppt
《操作系统chapter7.ppt》由会员分享,可在线阅读,更多相关《操作系统chapter7.ppt(36页珍藏版)》请在第壹文秘上搜索。
1、操作系统概念第七章:进程同步2本章主要内容n背景n临界区域问题n同步硬件n信号量n经典同步问题n管程37.1 背景n共享数据的并发访问可能导致数据的不一致n维护数据的一致性需要能够保证协作进程顺序执行的机制4竞争条件(Race Condition)n生产者while(1) while (counter = BUFFER_SIZE); / do nothing/produce an item and put in nextProducedbufferin = nextProduced;in = (in + 1) % BUFFER_SIZE;counter +;5竞争条件消费者while (1)
2、while (counter = 0); / do nothingnextConsumed = bufferout;out = (out + 1) % BUFFER_SIZE;counter -;6竞争条件ncounter+可按如下方式以机器语言实现nregister1 = counternregister1 = register1 + 1ncounter = register1ncounter - - 可按如下方式实现nregister2 = counternregister2 = register2 1ncounter = register2n考虑以下交叉执行顺序nS0: 生产者执行 re
3、gister1 = counter register1 = 5nS1: 生产者执行 register1 = register1 + 1 register1 = 6nS2: 消费者执行 register2 = counter register2 = 5nS3: 消费者执行 register2 = register2 1 register2 = 4nS4: 生产者执行 counter = register1 counter = 6nS5: 消费者执行 counter = register2 counter = 47 n多个进程并发访问和操作同一数据且执行结果与访问发生的特定顺序有关,称为竞争条件竞
4、争条件(race condition)87.2 临界区问题的解决n代码块:代码块:n进入区(进入区(entry section)n临界区(临界区(critical section)n退出区(退出区(exit section)n剩余区(剩余区(remainder section)n互斥互斥(Mutual Exclusion):如果进程Pi在其临界区执行,那么其他进程都不能在其临界区内执行。n有空让进有空让进(Progress):如果没有进程在其临界区内执行且有进程希望进入临界区,那么只有那些不在剩余区内执行的进程能参加决策,以选择谁能下一个进入临界区,且这种选择不能无限推迟。n有限等待有限等待(
5、Bounded Waiting):在一个进程做出进入其临界区的请求到该请求被允许期间,其他进程被允许进入期临界区的次数存在一个上限。9两进程解法n两个进程标为P0和P1,为了方便,当使用Pi时,用Pj来表示另一个进程;即j = 1 i;10算法1n进程共享一普通整数变量turn,其初值为0(或1)n如果turn = i, Pi允许在其临界区内执行。n确保了每个时刻只有一个进程处于临界区域。n但不满足“有空让进”需要。n为什么?nP0能否连续两次进入临界区?n do nwhile (turn != i) ; /进入区n临界区nturn = j; /退出区n剩余区n while (1);11算法2
6、1. do 2. flagi = true;3. while (flagj) ; /进入区4. 临界区5. flagi = false; /退出区6. 剩余区7. while (1);n增加了更多的状态信息n布尔标志用来表示线程它准备进入其临界区n“有空让进”的要求仍然没有得到满足n为什么?n将语句2与语句3的位置互换,又将如何?12算法3n结合算法1与算法2的思想n是否满足临界区的要求?do flagi = true;turn = j;while (flagj & turn = j) ; /进入区临界区flagi = false; /退出区剩余区 while (1);13多进程解法n面包店算
7、法的思想:n在进入商店时,每个客户接收一个号码。具有最小号码的客户先得到服务。然而,面包店算法不能保证两个进程不会收到同样的号码。在出现相同号码时,具有最小名称的进程先得到服务。即如果Pi和Pj收到同样号码,且i j,那么Pi 先得到服务。n实现nboolean choosingn;nint numbern;n定义:n若a c,若a=c且bd, (a, b) (c, d)nmax(a0, , an-1)是数k, 从而kai, 对 I = 0, , n-1成立。n算法见下页14 do choosingi = true;numberi = max(number0, number1, , numbe
8、rn-1) + 1;choosingi = false;for (j = 0; j n; j +) while (choosingj) ;while (numberj != 0) & (numberj, j) numberi, i) ;临界区numberi = 0;剩余区 while (1);157.3 同步硬件n许多系统提供了临界区代码的硬件支持n单处理器系统 可以禁用中断n当前正在执行的代码可以顺利执行而不会被抢占n在多处理器环境下,这种解决方案是不可行的。n现代机器提供了特殊的原子硬件指令n原子 = 不可中断的nTestAndSet指令nSwap指令(交换内存中两个字的内容)16Test
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 chapter7