| 注册
home doc ppt pdf
请输入搜索内容

热门搜索

年终总结个人简历事迹材料租赁合同演讲稿项目管理职场社交

哲学家进餐问题操作系统课程设计报告

z***u

贡献于2022-06-25

字数:4934

XX学院
操作系统
课程设计报告


题 目: 哲学家进餐问题
班 级:
学 号:
作者姓名:
指导教师:


2011年X月X日
目 录

1.设计题目求 1
11实验目 1
12设计求 1
13 初始条件 1
2.总体设计思想相关知识 2
21总体设计思想 2
22 界区互斥编程原理 2
23开发环境工具 3
3.数结构模块说明 3
31 数结构 3
32程序模块流程图 4
321 程序模块 4
323 返回哲学家状态模块 6
324 返回餐具状态模块 6
4.源程序代码 7
5.测试结果 11
6.课设总结 14
7.参考文献 15


1.设计题目求
11实验目
通实现哲学家进餐问题步深入解掌握进程步互斥原理
12设计求
哲学家N定全体达开始讨:讨间隙哲学家进餐进餐时需刀叉哲学家刀叉进餐哲学家数餐桌布置行设定实现刀叉互斥算法程序实现
13 初始条件
(1)操作系统:windows
(2)程序设计语言:C++
(3)设定圆桌六哲学家三刀叉图摆放:


图11 哲学家进餐问题设定图
2.总体设计思想相关知识
21总体设计思想
哲学家生活思考吃饭思考饿餐思考循环复求:哲学家位左右刀叉够餐哲学家先刀叉刀叉时抓旁边两餐具哲学家手中抢夺餐具哲学家次餐必须放手中两餐具恢复思考强抓住餐具放
设计程序够显示前哲学家状态桌餐具情况死锁推算出状态哲学家状态桌餐具情况设计安排哲学家正常生活程序
哲学家设计3种状态等进餐思考哲学家重复进行等>进餐>思考行动循环中:
等>进餐:哲学家处等进餐状态左右手两边餐具处空闲状态时发生种状态改变状态改变发生哲学家起左右手两边餐具
进餐>思考:状态改变发生哲学家放左右手餐具餐具状态中转变空闲
思考>等:哲学家思考结束条件转入等状态
述程序中应设置6元素信号量数组tools[6]保持哲学家间步
22 界区互斥编程原理
硬件界资源软件界资源进程必须互斥进行访问进程中访问界资源段代码称界区(Critical Section)
进程中访问界资源段程序称界区(Critical Section)(界资源次仅允许进程享资源)次准许进程进入界区进入允许进程进入硬件界资源软件界资源进程必须互斥进行访问
程序EnterCriticalSection (&cs)LeaveCriticalSection (&cs)两函数实现界区互斥
EnterCriticalSection (&cs)进入界区LeaveCriticalSection (&cs)离开界区
23开发环境工具
系统台:WINDOW环境
实现语言:C++
开发工具:VC++60
3.数结构模块说明
31 数结构
Philosopher
numberint
statusint
+Philosopher(in numint)
+find() constint
+getinfo() constint
+Change()void
图31 哲学家类UML图
程序中定义哲学家类包含两私象四公象
Number象:报讯哲学家编号
Status象:保存前该哲学家状态0表示正等(处饥饿状态)1表示餐具正吃饭2表示正思考
Philosopher(int num)方法:哲学家类构造函数参数num表示哲学家编号
find() const方法:返回该哲学家编号
getinfo() const方法:返回哲学家前状态
Change()方法:根题目求改变哲学家状态(等>进餐>思考>等…………)
外程序中包含公象bool类型数组tools[6]保存6餐前状态:true表示该餐具前空闲false表示该餐具前正
程序中包含两公函数:printtoolstatusPrint返回哲学家状态toolstatus返回餐具状态
32程序模块流程图
321 程序模块


图32 程序模块流程





322 状态改变模块

图33 状态改变模块Change()流程图
323 返回哲学家状态模块

图34 返回哲学家状态模块print()流程图
324 返回餐具状态模块


图35 返回餐具状态模块toolstatus(bool a)流程图
4.源程序代码
实验目:通实现哲学家进餐问题步深入解掌握进程步互斥原理
设计求:哲学家N定全体达开始讨:讨间隙哲学家进餐
进餐时需刀叉哲学家刀叉进餐哲学家数
餐桌布置行设定实现刀叉互斥算法程序实现
#include
#include
#include
#include
#include

using namespace std
bool tools[6] 全局变量餐工具
CRITICAL_SECTION cs 信号量 线程中界区
class Philosopher
{
private
int number
int status *标记前哲学家状态0表示正等(处饥饿状态)1表示两支筷子正吃饭2表示正思考*
public
Philosopher(int num0) status(2) number(num) { }
int find() const { return number }
int getinfo() const { return status }
void Change() 状态改变函数
}
void PhilosopherChange()
{
EnterCriticalSection (&cs) 进入界区
if(status1) 正进餐
{
tools[number6]true 放左手工具
tools[(number1)6]true 放右手工具
status2 改变状态思考
}
else if(status2) 思考中
{
status0 改变状态等
}
else if(status0) 等中
{
if(tools[number6]&&tools[(number1)6]) 左右手两边工具均空闲状态
{
tools[number6]false 起左手工具
tools[(number1)6]false 起右手工具
status1
}
}

LeaveCriticalSection (&cs)
}
string print(Philosopher *pA)
{
pA>Change()
int ipA>getinfo()
string str
if(i0)
str等
else if(i1)
str餐
else str思考
return str
}
string toolstatus(bool a)
{
string state
if(atrue)
state闲
if(afalse)
state
return state
}
int main()
{
char con 'y' 判断否继续
for(int i0i<6i++)
tools[i]true 3组刀叉未初始化
Philosopher P1(1)P2(2)P3(3)P4(4)P5(5)P6(6)
InitializeCriticalSection (&cs) 初始化初始化界区
cout<<状态说明示意图:< cout<< <<哲学家0号状态<< < cout<<哲学家5号状态<< <<叉3状态<< <<刀1状态<< <<哲学家1号状态< cout<< <<刀3状态<< <<叉1状态< cout<<哲学家4号状态<< <<叉2状态<< <<刀2状态<< <<哲学家2号状态< cout<< <<哲学家3号状态<< < cout<<餐具状态表示中闲表示空闲中< cout<<< cout<<哲学家开始生活:< cout< cout< while(con'y')
{
P1Change()
P2Change()
P3Change()
P4Change()
P5Change()
P6Change()
cout<<前状态:< cout<< < cout< cout<< < cout< cout<< < cout<<< cout<<继续状态输入y输入结束程序:
cin>>con
Sleep(20)
}
DeleteCriticalSection (&cs) 退出资源区
return 0
}
5.测试结果


图51 程序运行开始界面


图52 哲学家状态1

图53 哲学家状态2


图54 哲学家状态3

图55 哲学家状态4


图56 退出程序
6.课设总结
前2周时间完成次课程设计
通次课程设计学许课学知识注意许课没提东西
通次设计理联系实际机会锻炼通理解决实际问题力正谓实践出真知代码没什问题实际运行起出正确结果代码部存逻辑语法等方面时会注意问题通次课程设计积累少样问题解决方法
设计中总会遇样样问题遇问题势必分析问题通种渠道解决问题利互联网次课程设计加强网查数检索问题力时候学知识次重学知识方法
7.参考文献
[1]宗华宗涛陈吉著 操作系统 北京:民邮电出版社2009
[2]李爱华程磊著 面相象程序设计(C++语言) 北京 清华学出版社2010
衡 yang 师 范学院


文档香网(httpswwwxiangdangnet)户传

《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 2 香币 [ 分享文档获得香币 ]

该文档为用户出售和定价!

购买文档

相关文档

驱动程序实验报告操作系统课程设计报告

操作系统课程设计报告班级: 计科 姓名: 学号: 老师: 时间:2012年X月X日一、设计目的操作系统课程主要讲述的内容是多道操作系统的原理与技术,与其它计算机原理、编译原理、汇编语言、计算机网络、程序设计等专业课程关系十分密切。本课程设计的目的综合应用学生所学

文***享 1年前 上传301   0

操作系统课程设计银行家算法报告

《操作系统--银行家算法》课程设计报告姓 名: 学 号: 班 级:计科班 专 业:计算机科学与技术 指导教师: 时 间: 2009 XX大学 计

文***品 3年前 上传620   0

《操作系统 银行家算法》课程设计报告

《操作系统--银行家算法》课程设计报告姓 名: 学 号: 班 级: 计科班 专 业:计算机科学与技术 XX大学 计算机科学与信息学院目 录1 课程设计目的 ………………………………………

文***品 3年前 上传812   0

合工大页面置换算法操作系统课程设计报告

计算机与信息学院《操作系统综合设计》报告设计题目:页面置换算法学生姓名:学 号:专业班级:计算机科学与技术班2015 年 X月一、设计题目 3二、开发环境与工具 3三、设计原理 31.最佳(Optimal)置换算法 32.先进先出(FIFO)页面置换算法 43.最近最久未使

文***品 3年前 上传558   0

操作系统课程设计报告树型目录文件系统

操作系统课程设计报告题目:树型目录文件系统 学 院 计算机学院 专 业 网络工程 年级班别 班 学 号 学生姓名 指导教师

文***享 3年前 上传543   0

银行家算法《操作系统》课程设计报告

《操作系统》课程设计报告课题: 银行家算法 专业计算机科学与技术学生姓名班级计算机学号指导教师信息工程学院一、实验要求和实验目的实验目的:本课程设计是学生学习完《操作系统原理》课程后,进行的一次全面的综合训练,通过课程设计,让学生更好地掌握操作系统

文***享 3年前 上传697   0

用多线程同步方法解决生产者消费者问题操作系统课程设计

题 目用多线程同步方法解决生产者-消费者问题(Producer-Consumer Problem)学 院计算机科学与技术学院专 业软件工程班 级姓 名 指导教师 年月日 目 录目 录 1课程设计任务书 1正 文 21.设计

文***享 3年前 上传490   0

进程调度算法的实现计算机操作系统课程设计

题目2 进程调度算法的实现2.1 题目的主要研究内容及预期达到的目标(1)设计进程控制块; (2)设计多个进程队列; (3)设计多个进程(≥20); (4)动态生成时间片、执行时间和优先级,将这些信息输出至文件中; (5)设计基于时间片的多优先级调度算法; (6)动态调度,并把所有调度信息输出至文件中。(7)理解进程调度相关理论;(8)掌握时间片调度原理;(9)掌握高优先级

文***品 3年前 上传586   0

操作系统课程设计银行家算法的模拟实现

操作系统课程设计报告专业计算机科学与技术学生姓名班级学号指导教师完成日期信息工程学院题目: 银行家算法的模拟实现 一、设计目的本课程设计是学习完“操作系统原理”课程后进行的一次全面的综合训练,通过课程设计,更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解,加强学生的动手能力。

文***品 3年前 上传687   0

操作系统课程设计磁盘调度算法

操作系统课程设计磁盘调度算法目 录1 课程设计目的及要求……………………………………………………12 相关知识…………………………………………………………………13 题目分析…………………………………………………………………24 概要设计…………………………………………………………………2 4.1 先来先服务(FCFS)的设计思想………

文***享 3年前 上传549   0

操作系统课程设计磁盘调度算法

《计算操作系统》课程设计报告 姓名: 班级:软件 学号: 指导老师:

文***品 3年前 上传462   0

操作系统课程设计动态分区分配存储管理

操作系统课程设计设计题目 动态分区分配存储管理学生姓名号学 号指导教师专业班级计算机班 第一章 课程设计概述1.1 设计任务:动态分区分配存储管理1.2 设计要求建立描述内存分配状况的数据结构;l建立描述进程的数据结构;l使用两种方式产生进程:(a)自动产生, (b)手工输入;l 在屏幕上显示内存的分配状况、每个进程的执行情况

文***品 2年前 上传422   0

进餐的礼仪

进餐的礼仪  去参加宴会,进餐的礼仪很重要,不但要吃得尽兴,而且要显出彬彬风范。 就座和离席 在入座时应等长者坐定后,方可入座。如有男士为你拉开座椅,你应落落大方的向对方表示感谢,然后再从容入座。入座后姿式端正,脚踏在本人座位下,不可任意伸直,手肘不要靠桌缘,或将手放在邻座椅背上,应与餐桌保持适当的距离。餐巾的使用餐巾主要防止弄脏衣服,兼做擦嘴及手上的油渍。 须等到大家坐定后,才可使用餐巾。

k***y 10年前 上传646   0

进餐礼仪

进餐礼仪  现一般的聚会或应酬,大都以吃饭为主。除有关饮食方面的礼仪注意外,对于整个交际过程中的细节亦应注意,尤以女子更须注意,如果你举止不雅观,不懂礼节,是会贻笑大方的。  1.进餐时应闭嘴静咀嚼,勿张大嘴巴谈话,口中也不可塞满食物。  2.用手进食、吸吮手指或以餐巾揩拭都是不雅的仪态。  3.假使你想打喷嚏或擦鼻涕的话,不必道歉,应该立刻用餐巾按住口、鼻部,同时面向侧面,免得

回***课 12年前 上传557   0

操作系统实习报告样本

操作系统实习报告样本  1 操作系统实习报告内容(1)    基本信息:完成人姓名、学号、报告日期(2)    实习内容(3)    实习目的(4)    实习题目(5)    设计思路和流程图(6)    主要数据结构及其说明(7)    源程序并附上注释(8)    程序运行时的初值和运行结果(9)    实习体会:实习中遇到的问题及解决过程、实习中产生的错误及原因分析、实习的体会及收获

q***9 9年前 上传576   0

操作系统实践报告

学 号: 实践课设计报告课程名称计算机操作系统题 目模拟设计存储管理的分配与回收学 院计算机科学与技术学院专 业计算机科学与技术班 级姓 名指导教师年月日模拟设计存储管理的分配与回收一、 需求分析 本次实验主要是要求实现动态的页式存储管理。根据本次实验的要求,可以分析出本次实验需要实现

文***享 1年前 上传464   0

西餐进餐礼仪

西餐进餐礼仪  从总体上来讲,吃西餐的礼节比中餐规定更为严格。  西餐中都要用到餐巾。餐巾分为午餐巾和晚餐巾。午餐巾可以完全打开铺在膝上,晚餐巾只打开到对折为止。餐巾打开后应平铺在大腿上,不能围在脖子上或折在腰间。已经启用了的餐巾应该一直放在大腿上,要等散席时才拿回到桌子上。用餐中途需离席时,稍微折一下放在椅上。  1. 西式餐具的选用  吃西餐最麻烦的是如何正确选用餐具。餐具的

F***g 11年前 上传561   0

中餐进餐礼仪

中餐进餐礼仪  有人说,判断一个人的教养只需看他的吃相就行了。吃相对于每位参加宴会的人来说,都是必须注意的。按照国际惯例,在宴会上不论吃东西,还是喝酒水,都不能发出刺耳的声响,这倒不是小题大作、求全责备,而是这种声响会破坏他人的食欲,同时也影响自己的形象。  吃中餐首先要注意筷子的使用。中式餐饮的主要进餐工具是筷子,标准的握筷姿势。过高或过低握筷,或者变换指法握筷都是不规范的。在使用筷子

1***9 9年前 上传399   0

西方的进餐礼仪

西方的进餐礼仪  欧美国家的餐桌大多是长方形,男主人(host)坐在桌子的一端,女主人(hostess)坐在另一端,通常安排座位时要尽量避免两位男宾或两位女宾并坐在一起。 就餐时,身体要坐得端正,身体和餐桌间距离以能使用刀(knife)、叉(fork)、匙(spoon)和饮食方便为度,手臂不要放在桌上,也不要张开妨碍别人。餐巾只用于擦嘴和手,切不可用来擦拭餐具和擦鼻涕、擦汗。用餐完毕后收起餐

小***藕 12年前 上传559   0

操作系统课程设计编程序模拟银行家算法

课程设计报告书 课程名称: 操作系统原理 题 目: 编程序模拟银行家算法 系 名: 信息工程系 专业班级: 软件 姓 名: 学 号:

文***品 3年前 上传726   0

操作系统课外实践报告Linux进程管理

操作系统课外实践报告项 目 名 称: Linux 进程管理 所 在 班 级: 软件工程(10.Net) 小 组 成 员: 指 导 教 师:

z***u 1年前 上传319   0

操作系统进程管理实验报告

操作系统进程管理实验报告实验一 进程管理1.实验目的:(1)加深对进程概念的理解,明确进程和程序的区别;(2)进一步认识并发执行的实质;(3)分析进程争用资源的现象,学习解决进程互斥的方法;(4)了解Linux系统中进程通信的基本原理。2.实验预备内容(1)阅读Linux的sched.h源码文件,加深对进程管理概念的理解;(2)阅读Linux的fork()源码文件,分析进程的

文***享 1年前 上传365   0

备战操作系统

操作系统 操作系统概念:操作系统是控制其他程序运行,管理资源并为用户提供操作界面的系统软件的集合。 操作系统的功能有:处理机管理、存储管理、外围设备管理(又称I/0设备管理)、文件管理和操作系统接口 操作系统的基本特征有:异步性、虚拟性、并发性和共享性 进程 进程的概念:进程是一个可拥有资源的独立单位,又是一个可独立和分配的基本单位。 进程的组成:由程序段,相关的数据段和进程控制块(

t***u 9年前 上传7531   0

进餐时打嗝 你会说“对不起”吗?

进餐时打嗝 你会说“对不起”吗?  “不论你是即将走入社会的大学生,还是职场老手,餐桌礼仪都会让你在众人面前更显魅力。”专家说,餐桌礼仪中最基本的一条就是准时赴宴,“太早到达或迟到都不礼貌。”如果你是主人,一定要记住先请客人入座上席,再请长者、领导入座客人旁。  进餐时,要注意先请客人、长者动筷,夹菜时每次少一些,离自己远的菜就少吃一些;吃饭、喝汤不要出声响。王皖豫表示,如果出现打喷嚏、

x***0 10年前 上传541   0

教师心得幼儿自己进餐

教师心得:幼儿自己进餐幼儿自己进餐  情节描述:阳阳是我们班的开心果,活泼开朗的一个小男孩。阳阳在鼓励吃饭从来不动手,就是等着爷爷奶奶来喂他,不喂他他就宁愿饿肚子。于是我想个方法改变阳阳的这一行为。今天我看见他旁边的小朋友在大口大口地吃饭,可是阳阳就看着这份饭菜一动不动,突然我看到了眼前的旺仔小馒头(阳阳非常喜欢的零食),于是我就跟他说:“你今天自己吃饭我就奖给你小馒头。〞他犹豫了一下,点

静***雅 3个月前 上传122   0