操作及进程同步的实现 哲学家就餐问题

上传人:新** 文档编号:508672341 上传时间:2022-11-17 格式:DOCX 页数:13 大小:82.02KB
返回 下载 相关 举报
操作及进程同步的实现 哲学家就餐问题_第1页
第1页 / 共13页
操作及进程同步的实现 哲学家就餐问题_第2页
第2页 / 共13页
操作及进程同步的实现 哲学家就餐问题_第3页
第3页 / 共13页
操作及进程同步的实现 哲学家就餐问题_第4页
第4页 / 共13页
操作及进程同步的实现 哲学家就餐问题_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《操作及进程同步的实现 哲学家就餐问题》由会员分享,可在线阅读,更多相关《操作及进程同步的实现 哲学家就餐问题(13页珍藏版)》请在金锄头文库上搜索。

1、课程设计课程设计名称:_专业班级:学生姓名:学 号:指导教师:课程设计时间:2010/12/23计算机科学专业课程设计任务书学生姓名专业班级学号题目P、V操作及进程同步的实现2课题性质其它课题来源自拟课题指导教师同组姓名主要内容用语言编程实现P、V原语并用P、V原语哲学家就餐问题:为每个哲学家各编一段程序描述他们的行为,试用P、V操作实现。任务要求掌握信号量通信方式的一般方法,了解系统实现阻塞和唤醒功能的方法和 技巧。同时掌握进程同步和互斥的概念及实现技术。参考文献任满杰等操作系统原理实用教程电子工业出版社2006汤子瀛计算机操作系统(修订版)西安电子科技大学出版社2001张尧学史美林计算机操

2、作系统教程实验指导清华大学出版社2000罗宇等操作系统课程设计机械工业出版社2005审查意见指导教师签字:教研室主任签字:年月日说明:本表由指导教师填写,由教研室主任审核后下达给选题学生,装订在设计(论文)首页1 需求分析哲学家就餐问题是一种典型的同步问题,它是由Dijstra提出并解决的。该 问题描述如下:有五个哲学家,他们的生活方式是交替的进行思考和进餐。哲学 家们公用一张圆桌,设5个哲学家分别为A,B,C,D,E,桌子上放着5把筷子,编 号分别编号为0,1,2,3,4,桌子中央有一盘饭菜。5个哲学家都很有礼貌,都要等 同时拿到身旁的两只筷子才进餐,不然就只是等着继续思考,而且吃了一口之后

3、 又马上放下拿起的两根筷子,继续思考。由于筷子数目有限,不能让5个哲学家同事进餐,而且甚至只能让其中的少 数哲学家进餐,其他的哲学家只能轮流享用。为每个哲学家各编一段程序描述他们的行为,解决哲学家就餐问题。2 概要设计源程序中各个函数的作用说明:int Readcountn;int chops tickn;/筷子状态标志void Getchopstick(int nextw)/拿起筷子函数。nextw为哲学家标号 void Dropchops ti ck(i nt nex tr)/放下筷子函数int select();int main()/主函数操作实验结构图:3 运行环境硬件环境:基于Xp的

4、PC 软件环境:Windows XP4 开发工具和编程语言开发工具:Visual C+ 6.0编程语言:Visual C+5 详细设计#include#define n 5int in=0;int out=0;int Readcountn;int chopstickn;筷子状态标志void Getchopstick(int nextw)/拿起筷子函数。nextw为哲学家标号printf(”第小名哲学家肚子饿了,申请左边的筷子。n,nextw);if(chopsticknextw-1=0|chopsticknextw-1=nextw)in=nextw-1;chopstickin=nextw;pr

5、intf(”申请成功!第%d名哲学家已经拿起左边一支编号为%d筷子,申请右边编号 为d 的筷子。n,nextw,in,(in+l)%n);in=(in+1)%n;Readcountnextw-l=Readcountnextw-l+l; if(chopstickin=0|chopstickin=nextw)chopstickin=nextw;Readcountnextw-l=Readcountnextw-l+l;printf(”申请成功!第小名哲学家再拿起右边一支编号为d筷子,开开心心的吃饭 啦! n,nextw,in);else printf(申请失败!第小名哲学家只有一支筷子,只好干巴巴的盼

6、着旁边的那位 哲学家赶快吃完。 n,nextw);else printf(“申请失败!第小名哲学家没有拿到筷子,只好干巴巴的等着旁边的那位哲学 家赶快吃完。 n,nextw);void Dropchopstick(int nextr)/放 下筷子函数。/ nextr 为放下筷子的哲学家的编号 if(Readcountnextr-1!=0)判断筷子是否已经占用if(Readcountnextr-1=2)printf(”该名哲学家吃饱啦!准备放下筷子。n);chopsticknextr-1=0;chopsticknextr=0;printf(”该名哲学家已经放下筷子。n);else printf(

7、该名哲学家只有一支筷子!又不能吃饭,只好准备放下筷子。n); chopsticknextr-1=0;printf(”该名哲学家已经放下筷子。n);else printf(该名哲学家没有筷子你还让他放下。你好可恶啊,鄙视一下n);int select()int i,nextw,nextr;printf(”请输入编号:n1-拿筷子过程52-放筷子过程n3-退出n); scanf(%d,&i);switch(i)case 1:printf(现在进行哲学家拿筷子过程,请输入要申请筷子的哲学家编号(1-5)。n); scanf(%d,&nextw);if(nextw0)&(nextw0)&(nextr6

8、)Dropchopstick(nextr);/放筷子过程else printf(”输入超出范围,请重新输入!n); break;case 3:return(0);default:printf(输入超出范围,请重新输入.n); scanf(%d,&i);return(1);int main()主函数操作printf(哲学家就餐问题。n规则:每个人只有申请到了左边的筷子才可以申请右边的筷 子。 n);for(int m=0;mn;m+)chopstickm=0;for(int c=0;cn;c+)Readcountc=0;int i;printf(”请输入编号:n1-拿放筷子操作n2-退出n);s

9、canf(%d,&i);while(i!=2)select();printf(n);printf(”请输入编号:n1-拿放筷子操作n2-退出n);printf(n);scanf(%d,&i);return(1);6 调试分析实验调试过程中遇到的问题:起初认为这个设计题目还是比较简单的,但实验中还是遇 到很多问题,容易绕弯路,实验要求用语言编程实现P、V原语并用P、V原语哲学家就餐 问题:为每个哲学家各编一段程序描述他们的行为,试用 P、 V 操作实现。特别是实现“阻 塞和唤醒功能过程中,频繁出错。后来尝试添加chopstickn;筷子状态标志,解决 了不能直观了解筷子状态这个问题。7 测试结果

10、源程序算法选择界面运行结果:州C:Docunients and Setting百、路过叭桌面、课程设计相关表格sssc十巧015四:|脣学家就餐问题。WJ:莓个人只有申请到了左边的筷子才可以申请右边的筷子。 情輸入编号:一一拿放匾子操作 P-退由拿筷子操作:放筷子操作:. .T ,.申请右边编号为2的筷子。2名哲学篆再拿起右边一支编号为玄筷子,开弃也心的奁反畅步舉沁斗号为筷子甦擬工操作2退由情输入编号:卜韋取楼子操作2退出1请输翹号口1 髦触子过粪2 歳検子过桓3 退岀1现在进行哲学家羣筷子过程,请输入要申请筷子的哲学家编号Q第2E坏申请成功!瞬鹦馨放下筷子拿筷子失败:操作b退由幘输飆号(Fl

11、l?S pi&irl 员在进行哲学家放筷子过程,请输入要放筷子的哲学家编号幘输冬邂冇Llhi卜一退出軌衽进行哲学家拿筷子过程,请输入要申请筷子的哲学家编号1-51悽1名哲学家肚壬饿申请左边的筷子“臼请叔I臺右哲申塞己经拿起左边一支编号为祇子,申请右边编号为的筷子= 由请歳功I錯1居善孝豪再拿起右边一支编号知筷土 开弃b心的fetS1 I现錢辭操作2退出蛛軽攀翳驟曙食编号为4筷子,申请右边编号为0的產子。5名暑率豪只有一支筷子,只好干巴巴的盼着芳边的那位哲学家趙快吃完。1 情输霾号=j-nB-退出a.现在进行哲学家拿筷子过程,请输入要申请筷子的哲学家编号l-5o隔吕名哲学家Em请成功I 1由请失

12、败! 1 聶输入编寻卜拿幣儼子操作2退由放筷子失败:幘输冬霾号=Bps现在进行哲学家放筷子过程,请输入要放筷子的哲学家编号l-5o 该名哲学家没有筷子你还让他放下。你好可恶啊,鄙视一下啓邇詹操作2區出退出:星聲覆H操作2退由 2Piess any key to continue参考文献1任满杰等,操作系统原理实用教程, 电子工业出版社 , 20063 汤子瀛 汤小丹 梁红兵等,计算机操作系统(修订版),西安电子科 技大学出版社 ,20014 张尧学 史美林,计算机操作系统教程实验指导 ,清华大学出版 社 ,20005 罗宇等 ,操作系统课程设计,机械工业出版社 , 2005心得体会本次设计收获

13、很多,基本掌握了信号量通信方式的一般方法,对同步和互斥 的概念及实现技术也有了一定理解,特别是设计中用到的系统实现“阻塞”和“唤 醒”功能的方法和技巧。设计过程中遇到的一些问题,通过咨询老师、请教同学都一一解决。以前不 太懂的问题也通过本次设计予以解决,本次课程设计让我受益匪浅。信息科学与工程学院课程设计成绩评价表课程名称:操作系统系统原理设计题目:处理机调度程序专业:计算机科学与技术 班级: 1 姓名: 学号序号评审项目分数满分标准说明1内容思路清晰,语言表达准确,概念清楚,论点正确;设计方法科学,分析归 纳合理;结论严谨,设计有应用价值。任务饱满,工作量适中2仓U 新内容新颖,设计能反映新技术,对前人工作有改进或突破,或有独特见解3完整性、实用性整体构思后合理,理论依据充分,设计完整,实用性强4数据准确、可靠数据准确,算法设计合理5规范性设计格式、绘图、实验数据、标准的运用等符合有关标准和规定6纪律性遵守课程设计纪律,听从指导教师安排,设

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号