广东工业大学操作系统哲学家就餐问题.doc 立即下载
2024-12-17
约1.4万字
约22页
0
490KB
举报 版权申诉
预览加载中,请您耐心等待几秒...

广东工业大学操作系统哲学家就餐问题.doc

广东工业大学操作系统哲学家就餐问题.doc

预览

免费试读已结束,剩余 17 页请下载文档后查看

10 金币

下载文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开



操作系统课程设计
题目:哲学家就餐问题


学院计算机学院
专业软件工程
班级12级3班
学号3112006229
姓名陈志勇
指导教师申建芳
(2015年6月)


















操作系统课程设计任务书

学生姓名专业班级学号题目仿真模拟操作系统中的“哲学家就餐问题”指导教师申建芳题目编号2015春-16主要内容多进程模拟哲学家就餐问题任务要求

五个哲学家围坐在一张圆桌周围,每个哲学家面前都有一盘通心粉。由于通心粉很滑,所以需要两只筷子才能夹住。相邻两个盘子之间放有一只筷子。哲学家的生活中有两种交替的活动:吃饭和思考(其他活动对哲学家来说都无关紧要)。当一个哲学家感到饿了时,他就试图分两次去取左边和右边的筷子,每次拿一把,但不分次序。如果成功得到了两把筷子,就开始吃饭,吃完后放下筷子继续思考。请为每一个哲学家写一段描述其行为的程序,而且不会死锁。参考文献[1]计算机操作系统,汤小丹等,西安电子科技大学出版社
[2]操作系统实验指导书,傅秀芬,广东工业大学(自编)
[3]计算机操作系统教程(第二版),张尧学、史美林,清华大学出版社
[4]现代操作系统,A.S.Tanenbaum著,陈向群等译机械工业出版社审查意见指导教师签字:
系主任签字:年月日说明:本表由指导教师填写,由系主任审核后下达给选题学生,装订在设计(论文)首页


设计思想说明
		操作系统平台:Windows2007
		开发平台:eclipse
程序语言:Java
设计思想:定义五个类,分别为哲学家A、哲学家B、哲学家C、哲学家D、哲学家E。五个类均有thinking(思考)和Eating(吃饭)两个方法。当选定哪几位哲学家就餐后,使用单线程处理选定的哲学家就餐顺序,如果A要就餐,询问C是否要就餐,否则询问D是否要就餐,否则A自己就餐;然后B进行就餐,如果B就餐,询问D是否要就餐,否则询问E是否要就餐,否则B就餐;然后C进行就餐,如果C就餐,询问E是否就餐,否则C就餐;最后D就餐,再E就餐。

数据结构的说明
采用链式timer(计时器),每当一个timer结束时,链接到下一个timer中去,实现多步哲学家就餐顺序,当最后一个哲学家就餐完成后弹出信息面板提示就餐完成。
调用关系:ShowPannel为主类,StateControl为哲学家类,showPannel在timer中调用哲学家类实现就餐、思考的转换和选择。

各模块的算法流程图
		StateControl类:定义哲学家类
				Thinking:setText(空闲);
				Eating:setText(正在使用);
Timer2(B组)

Timer3(C组)

Timer1(A组)
showPannel类:点击确定后选定哲学家就餐

Timer4(D组)

Timer5(E组)



A组:AC就餐AD就餐A就餐
B组:BD就餐BE就餐B就餐
C组:CE就餐C就餐
D组:D就餐
E组:E就餐
Messagebox类:仅显示提示信息
程序清单
		StateControl类:
packagephilosopher;

classphilosopherA{
	voidThinking(){//正在思考时不占用筷子资源
		ShowPannel.chops1.setText("筷子1当前状态:空闲");
		ShowPannel.chops2.setText("筷子2当前状态:空闲");
	}
	voidEating(){//吃时两个筷子状态为1,即正在使用
			ShowPannel.chops1.setText("筷子1当前状态:正在使用");
			ShowPannel.chops2.setText("筷子2当前状态:正在使用");
	}
}

classphilosopherB{
	voidThinking(){//正在思考时不占用筷子资源
		ShowPannel.chops2.setText("筷子2当前状态:空闲");
		ShowPannel.chops3.setText("筷子3当前状态:空闲");
	}
	voidEating(){//吃时两个筷子状态为1,即正在使用
			ShowPannel.chops2.setText("筷子2当前状态:正在使用");
			ShowPannel.chops3.setText("筷子3当前状态:正在使用");
	}
}

classphilosopherC{
	voidThinking(){//正在思考时不占用筷子资源
		ShowPannel.chops3.setText("筷子3当前状态:空闲");
		ShowPannel.chops4.setText("筷子4当前状态:空闲");
	}
	voidEat
查看更多
单篇购买
VIP会员(1亿+VIP文档免费下)

扫码即表示接受《下载须知》

广东工业大学操作系统哲学家就餐问题

文档大小:490KB

限时特价:扫码查看

• 请登录后再进行扫码购买
• 使用微信/支付宝扫码注册及付费下载,详阅 用户协议 隐私政策
• 如已在其他页面进行付款,请刷新当前页面重试
• 付费购买成功后,此文档可永久免费下载
全场最划算
12个月
199.0
¥360.0
限时特惠
3个月
69.9
¥90.0
新人专享
1个月
19.9
¥30.0
24个月
398.0
¥720.0
6个月会员
139.9
¥180.0

6亿VIP文档任选,共次下载特权。

已优惠

微信/支付宝扫码完成支付,可开具发票

VIP尽享专属权益

VIP文档免费下载

赠送VIP文档免费下载次数

阅读免打扰

去除文档详情页间广告

专属身份标识

尊贵的VIP专属身份标识

高级客服

一对一高级客服服务

多端互通

电脑端/手机端权益通用