第2章进程管理2.ppt.ppt

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

第2章 进程管理 三个经典的进程同步问题 2.4.1 生产者-消费者问题 著名的生产者-消费者问题是计算机操作系统中并发进程内在关系的一种抽象,是典型的进程同步问题。 谁可以是生产者、消费者 ? 在操作系统中,生产者进程可以是计算进程、发送进程;而消费者进程可以是打印进程、接收进程等等。 解决好生产者--消费者问题就解决好了一类并发进程的同步问题。 生产者-消费者问题描述 生产者-消费者问题描述: 一组生产者进程向一组消费者进程提供产品,它们共享一个有界缓冲池。缓冲池中的每个缓冲区可以存放一个产品,生产者进程不断生产产品并将产品放入缓冲池中,消费者进程不断从缓冲池内取出产品并消费。 生产者-消费者问题示意图 1.用记录型信号量解决该问题 设置两个同步信号量empty、full,分别表示空缓冲缓冲区的数量和满缓冲区的数量,empty 初值为n,full初值为0。 有界缓冲池是一个临界资源,还需要设置一个互斥信号量mutex,其初值为1。 生产者-消费者问题的同步描述如下: 算法描述 生产者 消费者 注意 无论在生产者进程还是在消费者进程中,wait操作的次序都不能颠倒,否则将可能造成死锁。 颠倒生产者进程中的wait操作 2.用AND信号量解决该问题 生产者 消费者 2.4.2 哲学家进餐问题 用信号量解决哲学家进餐问题 用五支筷子的信号量构成信号量数组: var chopstick: array[0,…,4] of semaphore ; 所有信号量初值为1 1.用记录型信号量解决哲学家进餐问题 笫i个哲学家的活动算法描述 算法存在的问题 上述算法有可能引起死锁。 当五个哲学家同时感觉饥饿,且同时拿起自己左边的筷子… 对于这样的死锁问题有如下办法解决: 至多允许四个哲学家同时进餐。 仅当左、右两支筷子均可用时,才允许拿起筷子进餐。 奇数号哲学家先拿左边筷子再拿右边筷子,偶数号哲学家相反。 2.用AND信号量解决哲学家进餐问题 每个哲学家要先获得两个临界资源(筷子)后方能进餐,用AND信号量机制可获得最简洁的解法。算法流程如下: 2.4.3 读者-写者问题 一个数据对象(如文件或记录)可以被多个并发进程所共享, 其中有些进程只要求读数据对象的内容(称为读者),而另一些进程则要求修改或写数据对象的内容(称为写者), 允许多个读者同时读此数据对象, 但是一个写者不能与其他进程(不管是写者还是读者)同时访问此数据对象。 用信号量解决读者-写者问题 为解决读者写者问题,应设置两个信号量和一个共享变量: 共享整型变量readcount,用于记录当前正在读数据的读者数目,初值为0。 信号量rmutex,用于使读者互斥地访问共享变量readcount,其初值为1; 信号量wmutex,用于实现写者与读者的互斥以及写者与写者的互斥,其初值为1; 读者描述 wait(rmutex); if (readcount=0) then wait(wmutex); readcount:=readcount+1; signal(rmutex); 读数据; wait(rmutex) ; readcount:=readcount-1 ; if (readcount=0) then signal(wmutex); signal(rmutex); 写者描述 wait(wmutex); 写数据; signal(wmutex); 注意 如果有一个写者在临界区内,且n个读者处于等待,那么一个读者在wmutex上排队,而n-1个读者在rmutex上排队。 用信号量集解决读者写者问题 这里的读者—写者问题与前面的略有不同,它增加了一个限制,即最多只允许RN个读者同时读。 为此,又引入了一个信号量L,并赋予其初值为RN,控制读者数目。信号量mx,初值为1,实现互斥。 算法描述如下 读者: 写者: 总结wait和signal操作的优缺点 优点: 简单,而且表达能力强(用wait、signal操作可解决任何同步互斥问题) 缺点: wait、signal操作使用不当会出现死锁; 遇到复杂同步互斥问题时实现复杂。 【思考】 苹果桔子问题 桌上有一只盘子,每次只能放入一只水果;爸爸专向盘子中放苹果,妈妈专向盘子中放桔子,一个儿子专等吃盘子中的桔子,一个女儿专等吃盘子里的苹果 。 第2章 进程管理 进程通信 并发进

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档