早教吧作业答案频道 -->其他-->
哲学家就餐问题设有5个哲学家,共享一张放有五把椅子的桌子,每人分得一把椅子。但是,桌子上总共只有5支筷子。在每人两边分开各放一支。哲学家饥饿时才试图分两次从两边拾起筷子
题目详情
哲学家就餐问题
设有5个哲学家,共享一张放有五把椅子的桌子,每人分得一把椅子。但是,桌子上总共只有5支筷子。在每人两边分开各放一支。哲学家饥饿
时才试图分两次从两边拾起筷子就餐。
条件:
(1)只有拿到两支筷子时,哲学家才能吃饭。
(2)如果筷子已在他人手里,则哲学家必须要等到他人吃完饭之后才能拿到筷子。
(3)任一哲学家在自己未拿到两支筷子吃饭之前,决不放下自己手中的筷子。
试:
(1)描述一个保证不会出现两个邻座同时要求吃饭的通信算法。
(2)描述一个既没有两邻座同时吃饭,又没有人饿死(永远拿不到筷子)的算法。
(3)在什么情况下,5个哲学家全部吃不上饭?
设有5个哲学家,共享一张放有五把椅子的桌子,每人分得一把椅子。但是,桌子上总共只有5支筷子。在每人两边分开各放一支。哲学家饥饿
时才试图分两次从两边拾起筷子就餐。
条件:
(1)只有拿到两支筷子时,哲学家才能吃饭。
(2)如果筷子已在他人手里,则哲学家必须要等到他人吃完饭之后才能拿到筷子。
(3)任一哲学家在自己未拿到两支筷子吃饭之前,决不放下自己手中的筷子。
试:
(1)描述一个保证不会出现两个邻座同时要求吃饭的通信算法。
(2)描述一个既没有两邻座同时吃饭,又没有人饿死(永远拿不到筷子)的算法。
(3)在什么情况下,5个哲学家全部吃不上饭?
▼优质解答
答案和解析
规定在拿到左侧的筷子后,先检查右面的筷子是否可用。如果不可用,则先放下左侧筷子, 等一段时间再重复整个过程。 分析:当出现以下情形,在某一个瞬间,所有的哲学家都同时启动这个算法,拿起左侧的筷 子,而看到右侧筷子不可用,又都放下左侧筷子,等一会儿,又同时拿起左侧筷子……如此 这样永远重复下去。对于这种情况,所有的程序都在运行,但却无法取得进展,即出现饥饿, 所有的哲学家都吃不上饭。 (2) 描述一种没有人饿死(永远拿不到筷子)算法。 考虑了四种实现的方式(A、B、C、D): A.原理:至多只允许四个哲学家同时进餐,以保证至少有一个哲学家能够进餐,最终总会释 放出他所使用过的两支筷子,从而可使更多的哲学家进餐。以下将room 作为信号量,只允 许4 个哲学家同时进入餐厅就餐,这样就能保证至少有一个哲学家可以就餐,而申请进入 餐厅的哲学家进入room 的等待队列,根据FIFO 的原则,总会进入到餐厅就餐,因此不会 出现饿死和死锁的现象。 伪码: semaphore chopstick[5]=; semaphore room=4; void philosopher(int i) } B.原理:仅当哲学家的左右两支筷子都可用时,才允许他拿起筷子进餐。 方法1:利用AND 型信号量机制实现:根据课程讲述,在一个原语中,将一段代码同时需 要的多个临界资源,要么全部分配给它,要么一个都不分配,因此不会出现死锁的情形。当 某些资源不够时阻塞调用进程;由于等待队列的存在,使得对资源的请求满足FIFO 的要求, 因此不会出现饥饿的情形。 伪码: semaphore chopstick[5]=; void philosopher(int I) } 方法2:利用信号量的保护机制实现。通过信号量mutex对eat()之前的取左侧和右侧筷 子的操作进行保护,使之成为一个原子操作,这样可以防止死锁的出现。 伪码: semaphore mutex = 1 ; semaphore chopstick[5]=; void philosopher(int I) }
看了 哲学家就餐问题设有5个哲学家...的网友还看了以下:
“桌上没有筷子.”用英语怎么说?There'sno后面可以跟单词单数和不可数名词,那么如果是“桌上 2020-05-14 …
如何用筷子搭桥 只有筷子和皮筋,怎样搭呢? 2020-05-17 …
纸杯中盛有米,米内插有筷子.将米压紧后,竖直向上提筷子.可以看到什么现象呢?、 2020-06-10 …
最近总碰到筷子两头颠倒,用易经来解释,是什么启示?最近只要在外面的饭店吃饭,除了那种没有包装的筷子 2020-07-05 …
如何用筷子搭正方体?RT材料有筷子长短不一长8根小的有14根皮筋无数根请问如何搭 2020-07-05 …
纸杯中盛有米,米内插有筷子将米压紧后竖直向上提筷子说是米和筷子间的摩擦力大于筷子和杯子的重力那杯子 2020-07-05 …
含羞草为什么不羞了在我们上学的必经之路,路旁长着一株矮小的含羞草,只有六、七寸那么高,茎还没有筷子 2020-07-12 …
阅读下面文章。含羞草为什么不羞了在我们上学的必经之路,路旁长着一株矮小的含羞草,只有六、七寸那么高 2020-07-12 …
只有筷子斜放在水中才会折吗只有筷子放在水中才会看起来是弯折的吗?比如一本书,一块木板等东西,也是直的 2020-11-16 …
悬崖上长着一棵人参.秋天的气侯一天比一天冷,人参的叶子一片片枯萎了,但根子上长起的人参,还只有筷子那 2021-01-17 …