[源码和文档分享]基于VC6.0和MFC实现的操作系统哲学家进餐问题

一 需求分析

一个圆桌上有一大碗面,5个盘子,5把筷子,5个座位上可以座5个哲学家,当哲学家就坐以后,其左右有且仅有一个筷子,每个筷子左又有且仅有一个哲学家。哲学家动作:思考,取筷(需要两个),取面,吃面。现设计一个礼仪以允许他们就餐,需要避免两个哲学家“抢”同一把筷子,又要避免饥饿和死锁。

通过设计,编写,调试一个简单的进程调度模拟系统,对进程调度,进程运行状态变换及wait原语和signal原语加深理解和掌握。

二 程序设计

程序流程图如下所示:

三 程序实现

3.1 实现原理

互斥解决。每一把筷子使用一个2元信号量,只有获得信号量的哲学家才能使用筷子,从而避免对筷子的“抢夺”

参考文档和完整的文档和源码下载地址:

https://www.write-bug.com/article/1346.html

你可能感兴趣的:([源码和文档分享]基于VC6.0和MFC实现的操作系统哲学家进餐问题)