/* created by Herbert on 16 Nov,2017 预备知识: 信号量:信号量是管理相应临界区的公有资源,它代表可用资源实体。 在操作系统中,信号量sem是一个整数。在sem大于等于零时代表 可供并发进程使用的资源实体的数目,但sem小于零时则代表则代表 等待使用临界区的进程的数目。 sem的初始值应该大于零,在建立一个信号量的时候,必须说明信号量 的代表的意义,以及建立相应的数据结构,以便指向那些等待使用该 临界区的进程。 P、V原语: 信号量的数值仅能由P、V的操作改变(P代表 pass,V代表 increment) 一次P原语操作使得信号量sem减一,一次V原语操作使得信号量sem加一 问题描述:设有五个哲学家,共享一张放有五把椅子的桌子,没人分得一把椅子。但是,桌子上 总共有五支筷子,在每人两边分开各放一支。哲学家们在肚子饥饿时才会试图分两次从两边拾起筷子 就餐。 条件如下: (1)只有拿到两支筷子时,哲学家才能吃饭。 (2)如果筷子已经在他人手上,则该哲学家必须等到他人吃完之后才能拿到筷子。 (3)任一哲学家在自己未拿到两支筷子吃饭之前,绝不放下自己手中的筷子。 试: (1)描述一个保证不会出现两个邻座同时要求吃饭的通信算法 (2)描述一个既没有两邻座同时吃饭,又没有人饿死(永远拿不到筷子)的算法。 (3)在什么情况下,五个哲学家全部吃不上饭。 *//* created by Herbert on 16 Nov,2017 预备知识: