- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
经典同步问题(哲学家进餐等)
模型分析 (1)生产者进行生产将物品放入仓库,同一时间只能有一个生产者将物品放入仓库,若仓库满,生产者将等待; (2)消费者从仓库中取出物品,同一时间只能有一个消费者取出物品,若仓库空,消费者等待; (3)生产者将物品放入仓库时消费者不能同时取; (4)消费者取物品时生产者不能放入物品。 问题分析 同步问题描述: ● 当缓存满时,生产者必须等消费者从缓存取走产品。设同步信号量为empty,其初值为?。 ● 当缓存空时,消费者必须等生产者放产品至缓存。设同步信号量为full,其初值为?。 问题分析 互斥问题描述: ● 将有界缓存视为临界资源。由于两个进程都要访问缓冲区,但是无论是生产者进程向缓冲区放入产品,还是消费者进程从缓冲区取走产品,都不能同时进行。所以,两个进程访问缓冲区必须互斥地执行。 ● 设互斥信号量mutex的初始值为1,以实现两进程对缓冲区访问的互斥。 问题分析 所以,为了实现生产者进程和消费者进程的同步与互斥,设置三个信号量: 两个同步信号量empty和full, 一个互斥信号量mutex, 并在这三个信号量上施加正确的P、V操作,就可保障两进程正确无误地运行。 思考 (1)若将两个P操作互换位置,结果如何? (2)若将两个V操作互换位置,结果又如何? 应注意的问题(总结) (1) 在每个程序中必须先做P(mutex)后做V(mutex),二者要成对出现。 (2) 对同步信号量full和empty的P、V操作同样必须成对出现,但它们分别位于不同进程的代码中。 (3) 无论在生产者进程中还是在消费者进程中,两个P操作的次序都不能颠倒。应先执行同步信号量的P操作,再执行互斥信号量的P操作;否则可能造成进程死锁 问题提出 设有4个哲学家围坐在一张圆桌前讨论问题和进餐。在在讨论时每人手中什么都不拿,当需要进餐时,每人需要用刀和叉各一把。餐桌上的布置如图所示,共有两把刀和两把叉,每把刀或叉供相邻的两个人使用。 请用信号量及PV操作说明4位哲学家的同步过程。 问题分析和解题步骤 (1)确定进程的个数及其工作内容 解题步骤 (2)确定互斥信号量的个数、含义 (3)用P、V操作描述关系 问题提出 有5个哲学家他们围坐在一张圆桌旁,每人面前有一菜盘,各菜盘之间有一根筷子。 每个哲学家或思考问题或就餐,当思考问题时放下筷子,饥饿的时候就吃菜。 想要夹菜时必须获得两根筷子,且每人只能从自己的左边和右边去取筷子,只有在他拿到两只筷子时才能进餐。就餐后放下筷子以供别人使用,自己继续思考问题。 解决方法 (1)至多只允许有4位哲学家同时去拿左边的筷子,最终能保证至少有一位哲学家能够进餐,并在用毕时能释放出他用过的两只筷子,从而使更多的哲学家能够进餐。 (2)仅当哲学家的左、右两只筷子均可用时,才允许他拿起筷子进餐。 (3)规定奇数号哲学家先拿他左边的筷子,然后再去拿右边的筷子;而偶数号哲学家则相反。最后总会有一位哲学家能获得两只筷子而进餐。 问题提出 某数据库有一个写进程、多个读进程,它们之间读、写操作的互斥要求是:写进程运行时,其他读、写进程不能对数据库进行操作。读进程之间不互斥,可以同时读数据库。请用信号量及PV操作描述这一组进程的工作过程。 问题分析 本题涉及对同一个数据库的读写操作。当多个进程对其读时,因不改变其中的数值,可以不加限制。当既有的读进程,又有写进程时,应加以限制。此时,数据库就是一个临界资源,读写进程必须对其进行互斥操作。 因为写进程执行时,不能执行其他读写进程,所以还必须设置一个计数器统计读进程的个数。如果是第一个读进程,就与写进程竞争数据库。如果是最后一个读进程,就释放数据库。因计数器是一个临界资源,所以多个读进程对计数器的操作又是互斥操作。 这是一个互斥问题,也是典型的读者和写者问题。 解题步骤 (1)确定进程的个数及工作。本题只有读写两类进程,各自的工作如图所示。 (2)确定信号量的个数、含义及PV操作。 本题应当设置2个信号量和1个共享变量:count为共享变量,记录当前正在读数据库的进程数目; rmutex为读互斥信号量,使进程互斥地访问共享变量count,其初值为1; 对于写进程与读进程、写进程与写进程来说,数据库是临界资源,一次只能被一个进程使用。所以设置wmutex为互斥信号量,其初值为“1”。 所以,本题有两个临界资源:共享变量count和数据库,对它们要实施互斥操
文档评论(0)