[操作系统]2.32.4.ppt

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

1 《操作系统》 2.3 进程互斥与同步 2 一、进程间制约关系 二、互斥 三、同步 四、信号量机制 返回 2018年4月30日星期一 北京交通大学海滨学院 3 由于进程并发执行,共享系统资源,各进程不能以任意的速度向前推进,而是互相受到制约。 一、进程间的制约关系 1、制约产生的原因 1)资源共享: 一个进程必须等另一个进程释放临界资源才能继续运行。 2)进程合作: 一个进程必须等另一个进程送来数据(消息), 才能继续运行。 2018年4月30日星期一 北京交通大学海滨学院 4 1)间接制约:各进程申请使用同一临界资源产生竞争引起。OS设计中用“互斥”技术解决竞争问题。 2)直接制约:各进程合作完成同一项任务,共享对方的私有资源引起,要协调各进程向前推进的速度。 OS设计中用“同步”技术解决各进程向前推进速度问题。 2、制约种类 2018年4月30日星期一 北京交通大学海滨学院 5 二、 互斥(解决间接制约问题) 由于各进程要求共享临界资源,而资源需要互斥使用,因此各进程间竞争使用这些资源。进程的这种关系为进程的互斥。 临界资源: 互斥: 系统中某些共享资源一次只允许一个进程使用,这样的资源称:临界资源或互斥资源或共享变量。 2018年4月30日星期一 北京交通大学海滨学院 6 (1)结果为4所希望的 2018年4月30日星期一 北京交通大学海滨学院 7 (2)结果为3所不希望的 发生了与时间有关的错误 1、与时间有关的错误: 并发执行结果不唯一(结果不可再现)或永远等待。 2、产生错误的原因: A、B交替使用了共享变量count。如果每次只允许一个进程去使用count(资源),就不会出现错误。 3、临界资源:一次只允许一个进程使用的资源。 2018年4月30日星期一 北京交通大学海滨学院 8 进程中涉及到临界资源的代码。 CS CS CS是若干涉及到临界资源程序段的集合,这些程序段分散在不同的进程中,对某个共享的数据结构(共享资源)进行操作。 3、临界区(CS): 4、为避免与时间有关的错误: 临界资源要互斥使用, 临界区要互斥访问。 临界资源种类:一些物理设备、变量、数据、表格、队列等。 临界资源(Critical Resouce) 生产者-消费者(producer-consumer)问题是一个著名的进程同步问题。它描述的是:有一群生产者进程在生产产品,并将这些产品提供给消费者进程去消费。为使生产者进程与消费者进程能并发执行,在两者之间设置了一个具有n个缓冲区的缓冲池,生产者进程将它所生产的产品放入一个缓冲区中; 消费者进程可从一个缓冲区中取走产品去消费。 我们可利用一个数组来表示上述的具有n个(0,1,…,n-1)缓冲区的缓冲池。用输入指针in来指示下一个可投放产品的缓冲区,每当生产者进程生产并投放一个产品后,输入指针加1;用一个输出指针out来指示下一个可从中获取产品的缓冲区,每当消费者进程取走一个产品后,输出指针加1。 由于这里的缓冲池是组织成循环缓冲的,故应把输入指针加1表示成 in∶=(in+1)mod n;输出指针加1表示成out∶=(out+1) mod n。当(in+1) mod n=out时表示缓冲池满;而in=out则表示缓冲池空。此外,还引入了一个整型变量counter, 其初始值为0。每当生产者进程向缓冲池中投放一个产品后,使counter加1;反之,每当消费者进程从中取走一个产品时, 使counter减1。生产者和消费者两进程共享下面的变量: Var n, integer; type item=…; var buffer:array[0, 1, …, n-1] of item; in, out: 0, 1, …, n-1; counter: 0, 1, …, n; 指针in和out初始化为1。在生产者和消费者进程的描述中,no-op是一条空操作指令,while condition do no-op语句表示重复的测试条件(condication),重复测试应进行到该条件变为false(假),即到该条件不成立时为止。在生产者进程中使用一局部变量nextp,用于暂时存放每次刚生产出来的产品;而在消费者进程中,则使用一个局部变量nextc,用于存放每次要消费的产品。 producer: repeat … produce an item in nextp; … while counter=n do no-op; buffer[in]∶ =nextp; in∶ =in+1 mod n; counter∶ =counter+1;

文档评论(0)

yaocen + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档