- 1、本文档共62页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机操作系统-ch2b全解
* 当一个进程在它的临界区中时,其他的进程就不允许进入它自己的临界区,即各进程要互斥地进入自己的临界区,所以,每个进程在进入临界区之前,要先提出申请,经允许后方可进入,用以实现此请求的代码段称为进入区(entry section) * In conclusion, we use semaphores in two different ways: mutual exclusion (mutex); process synchronization (full, empty). Is it easy to use semaphores? * Mutex: Binary Semaphore Simplified version of semaphore Mutex is used for mutual exclusion problem A variable with only 2 states Lock Unlock * Mutual Exclusion Problem using Mutex semaphore mutex = 1; /* set mutex.count = 1 */ DOWN(mutex); - critical section - UP(mutex); For two parallel processes, the value of mutex is 1, 0, -1 For N parallel processes, the value range of mutex is 1~ -(N-1) * Mutex Implementation using TSL Implementation of mutex_lock and mutex_unlock TSL的enter_region * Using Semaphores Process Synchronization: Order process execution * Suppose we have 3 processes: P1, P2, and P3. P1 and P2 must finish executing before P3. The processes may be synchronized using semaphores: S1=0: P1 still unfinished; S2=0: P2 still unfinished; Using Semaphores * Using Semaphores P1() P2() P3() { { { …… …… DOWN(S1); UP(S1); UP(S2); DOWN(S2); } } …… } * Example 【问题描述】: 桌上有一只盘子,每次只能放一个水果,爸爸专向盘中放苹果,妈妈专向盘中放香蕉,儿子专等吃盘里的香蕉,女儿专等吃盘里的苹果。只要盘子空,则爸爸或妈妈可向盘中放水果,仅当盘中有自己需要的水果时,儿子或女儿可从中取出。 请给出四人之间的同步关系,并用P、V操作实现四人正确活动的程序。 * 【解答】 由于父亲和母亲都可向盘子放水果,设置信号量empty =1,表示可放一个水果; 父亲和女儿、母亲和儿子存在同步关系,分别设置信号量apple, banana=0。 Father: P(empty); 向盘中放苹果; V(apple); Mother: P(empty); 向盘中放香蕉; V(banana); Daughter: P(apple); 取盘中苹果; V(empty); Son: P(banana); 取盘中香蕉; V(empty); * Quiz1 【问题描述】: 桌子上有一只盘子,最多可容纳两个水果,每次只能放入或取出一个水果。爸爸专向盘子放苹果,妈妈专向盘子中放香蕉;两个儿子专等吃盘子中的香蕉,两个女儿专等吃盘子中的苹果。 请用PV操作来实现爸爸、妈妈、儿子、女儿之间的同步与互斥关系。 * 【解答】 设置信号量empty =2, 对允许向盘中放入水果的个数进行计数。 每次只能放入或取出一个水果,因此需要对盘子进行互斥访问。 Father: P(empty); P(mutex); 向盘中放苹果; V(mutex); V(apple); Mother: P(empty); P(mutex); 向盘中放香蕉; V(mut
文档评论(0)