操作系统四版课件6解读.ppt

  1. 1、本文档共34页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统四版课件6解读

这里,存在着两个同步问题要解决:一是GET要与COPY取得同步,一是COPY要与GET取得同步。 试用信号量上的P、V操作,来保证如图所示的GET和COPY两者之间协调地工作。 例: 从文件F取出一个记 录送至输入缓冲区R V(s1) P(s2) P(s1) 将输入缓冲区R里的记录 拷贝到输出缓冲区T里 V(s2) GET COPY 1. 1. 2. 2. 3. 3. Vs1=0 Vs2=0 (信号量初值) 解: (1) (2) COPY中,它要等GET发来“可以拷贝”的消息后,才能进行拷贝。因此COPY中标有“1”的框是一个同步点,它要在此与GET取得同步。GET里,标有“1”的框是为COPY准备同步条件的地方;COPY中,标有“2”的框是为GET准备同步条件的地方。 在GET,它从F中取出一个记录送至R后,要等COPY把R中的记录取走、发来“拷贝结束”的消息后,才能继续运行。这就是说,在GET中,标有“3”的框是同步点,它在此与COPY取得同步。 (3) (4) 既然有两个同步问题,就要设两个不同的信号量来解决。两个信号量分别为S1和S2,初值都为0(因为是用来解决同步问题),用S1处理COPY 与GET取得同步的问题,用S2处理GET与COPY取得同步的问题。 (5) 在用信号量解决同步问题时,要注意P、V操作的安放和配对问题。由于是用信号量S1用来管理COPY与GET取得同步的问题,对S1的P操作应该出现在COPY中,V操作应该出现在GET中;由于是将信号量S2用来管理GET与COPY取得同步的问题,对S2的P操作应该出现在GET里,V操作应该出现在COPY中。 6.2.4 用P、V操作实现资源分配 1. 信号量的物理意义 把信号量S的初值n视为某资源个数,那么进程在S上做一次P操作后,若Vs=0,则表示可给该进程分一个资源;若Vs0,表示现在已没有资源可分配,进程只能阻塞,到队列Vq上去等待,这时Vs的绝对值恰是提出资源请求、但没有分配到资源的进程个数。某进程在S上做一次V操作后,若Vs=0,表示原资源等待队列上有进程等待该资源,故从队列Vq上摘下一个进程,到就绪队列排队;若V操作后Vs0,表示原资源等待队列上没有进程等待,只是收回了一个资源。 2. 简单的“生产者-消费者”问题 生产者: 生产一个产品 P(M) (申请一个缓冲区) 按in指点将物品存入缓冲区 in=(in+1) mod 10 (调整存入指针in) V(N) (向消费者发消息, 缓冲区里已有物品) 消费者: 消费物品 P(N) (等待生产者发来消息) 按out指点从缓冲区取出物品 out=(out+1) mod 10 (调整取出指针out) V(N) (向生产者发消 息,已有空缓冲区) Vm=10 Vn=0 (M,N初值) 若有一个生产者和一个消费者,他们共享10个缓冲区。生产者不断地生产物品,并依次放入缓冲区中。消费者依次从缓冲区里取出物品进行消费。只有在缓冲区有空位时,生产者生产出来的物品才能往里存放;只有在缓冲区有物品时,消费者才能从里面取出物品消费。试用 P、V 操作来协调生产者和消费者间的工作。 设置4个信号量:m为空闲缓冲区的数目;n为已放物品缓冲区的数目;S1控制互斥进入in临界区;S2控制互斥进入out临界区。 6.2.5 互斥/同步样例分析 1. “生产者-消费者”问题 若有 i 个生产者和j 个消费者,共享 k个缓冲区。生产者不断生产物品,并依次放入缓冲区中。消费者依次从缓冲区里取出物品进行消费。只有在缓冲区里有空位时,生产者生产出来的物品才能往里面放;只有在缓冲区里有物品时,消费者才能从里面取出物品进行消费。试用P、V操作协调生产者和消费者之间的工作。 生产者: 生产一个产品 P(M) (申请一个缓冲区) 按in指点将物品存入缓冲区 in=(in+1) mod k (调整存入指针in) V(N) (向消费者发消息, 缓冲区里已有物品) 消费者: 消费物品 P(N) (等待生产者发来消息) 按out指点从缓冲区取出物品 out=(out+1) mod k (调整取出指针out) V(N) (向生产者发消 息,已有空缓冲区) Vm=k,Vn=0 Vs1=1,Vs2=1 (信号量初值) P(S1) (要求进入in 临界区) V(S1) (退出in 临界区) P(S2) (要求进入out 临界区) V(S2) (退出out 临界区) . . 设置两个信号量:MUTEX控制读者

文档评论(0)

22ffbqq + 关注
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档