实验4 编制模拟“五个哲学家”问题的程序

本文档详细介绍了如何使用C语言编写一个模拟并发进程同步的程序,以解决‘五个哲学家’问题。实验中,哲学家由独立进程模拟,利用锁机制避免资源冲突,程序将持续运行直至被手动终止。实验过程包括创建进程、定义锁、控制哲学家的思考和用餐状态,并展示了程序的运行结果和实验小结。
摘要由CSDN通过智能技术生成

一、实验目的:

学习和掌握并发进程同步的概念和方法。

二、实验要求:

1、程序语法

              philosopher   [ -t <time> ]

   <time>是哲学家进餐和沉思的持续时间值,缺省值为2秒。

2、五个哲学家的编号为0~4,分别用五个进程独立模拟。

3、程序的输出要简洁,仅输出每个哲学家进餐和沉思的信息。例如,当编号为3的哲学家在进餐时,就打印:

              philosopher 3 iseating

而当他在沉思时,则打印:

             philosopher3 is thinking

除此之外不要输出其他任何信息。

4、利用课堂已教授的知识而不使用线程或IPC机制进行同步。

5、程序应该一直运行,直到人为地终止它(按Ctrl-C或Ctrl-\)。不允许出现僵尸进程。

三、实验过程:

  用for循环和fork函数生成5个哲学家进程,如果是前4个哲学家,思考<time>秒后,锁住左手边和右手边的叉子,然后开始用餐,进餐<time>秒后,释放两边的叉子,然后到下一个哲学家,用lock判断能否同时拿起两边的叉子,要是不能同时拿起则一直等待。第5个哲学家最后应拿起第4把叉子和第0把叉子,用while(1)循环使程序一直运行。

四、实验程序:

#include "apue.h"

#include <

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值