司机与售票员问题.docx
- 文档编号:27219177
- 上传时间:2023-06-28
- 格式:DOCX
- 页数:9
- 大小:183.76KB
司机与售票员问题.docx
《司机与售票员问题.docx》由会员分享,可在线阅读,更多相关《司机与售票员问题.docx(9页珍藏版)》请在冰豆网上搜索。
司机与售票员问题
1.需求分析
实验目的
掌握信号的利用方式和PV操作的概念,掌握利用PV操作实现进程之间同步和互斥的方式,加深对进程同步互斥概念的理解。
设计要求
设计程序模拟在公共汽车上,司机和售票员操作的同步。
司机:
启动车辆,正常行车,到站停车。
售票员:
上乘客,关车门,售票,开车门,下乘客。
用PV操作对其控制。
2.功能设计
本程序的设计原理比较简单,就是两大部份,一是司机的行车操作进程,另一个是售票员的开车门和关车门(和售票,本程序不讨论售票进程)的进程。
此刻来讲明如何具体实现司机开车和售票员售票的相关进程。
第一,设置2个私有信号量,别离是司机和售票员的。
其中,司机的私有信号量设置为sj,其初始值为0;售票员的私有信号量为spy,其初始值为1;以上的初值表示的是司机和售票员的行车和开关车门的一个具体初始状态,具体的说也就是当车子停着,车门开着的时候的状态,现在,司机不能开车,只有当售票员售完票以后,通知司机才能够。
流程图
用操作系统书上的方式写出的流程图如下:
(a)司机的工作流程(b)售票员的工作流程
数据结构
如此一来的话,仿照书上的P,V操作,实现司机和售票员之间的同步的进程如下:
begin
sj,spy;semaphore发平台及源程序代码
开发环境与工具
系统平台:
WINDOW环境
实现语言:
C++
开发工具:
VC++
源代码
目的:
掌握信号的利用方式和PV操作的概念,掌握利用PV操作实现进程之间同步和互斥的方式,加深对进程同步互斥概念的理解。
设计要求:
设计程序模拟在公共汽车上,司机和售票员操作的同步。
司机:
启动车辆,正常行车,到站停车。
售票员:
上乘客,关车门,售票,开车门,下乘客。
用PV操作对其控制。
其中源程序的代码如下:
#include
usingnamespacestd;
intspy=1,sj=0;< cout<<"键入s表示注销进程."< cout<<"键入f表示乘客上下车进程结束."< p1(); return0; } intp1()...."< cout<<"汽车运行中......"< cout<<"汽车到站! "< cout<<"汽车停! "< spy++;...."< cout<<"请进行乘客上下车操作! "< while (1) { cin>>ck; if((ck=='a')&&(n>0)){n--;cout<<"上一个乘客."< if((ck=='d')&&(n if(ck=='f'){break;}; if(ck=='s'){return0;}; if(n<=0){cout<<"车上座位已满,不能再上乘客了! "< if(n>=SIZE){cout<<"车上乘客已经都下完了! "< } cout<<"此刻关闭车门! "< } sj++;试及结果 本程序运行的结果如下: 图4-1程序运行开始界面 图4-2乘客上车直到满座 图4-3关车门开车 图4-4乘客下车直至下车完 图4-5关车门开车 图4-6注销进程 5.自我评价与总结 本次设计呢,整体来讲完成的还能够,由于程序本身不是很难,再加上时刻有限,我也就没有花大力气来完善它,下面我从以下几点来讲明本次课程设计的自我评价: 1,本次课程设计中做的比较好的地方: 做的好的地方就是在于对题目意思的正确理解,和在此基础之上的模型设计。 最开始一看题目的时候有点不明白如何着手,只是模糊的明白是这么回事,能够在思想上想清楚具体的运转进程,参照教科书以后,学会了如何用P,V原语操作。 然后最关键的就是如何用程序表现那个进程,最后我想出来的方式就是通过乘客上下车的进程来表现,我感觉如此是最好的表现方式。 2,得不太好的地方,和以后如何更正: 做的不太好的地方就是不能把自己所学的c++知识和本次课程设计的相关知识专门好的结合起来,以至于没有专门好的表达出本次课程设计的细节。 在以后的进程中,我会运用本次课程设计中所以学的知识,和试探问题的方式和方式,争取能够发扬长处,尽可能克服不细心,不严谨等缺点。 3,从本次设计中取得的收获(在编写,调试,执行进程中的经验和教训): 提及课程设计,就是一个综合运用所学知识的课题,对大学生的帮忙是专门大的,最大体的就是综合运用所学相关知识的能力。 然后就是动手能力,和独立试探问题的能力。 通过本次课程设计,我也固然学到了这些东西,不单单只是掌握了本次课程设计的相关知识,而且更重要的是自学能力,动手操作,和如何更好地表达自己的思想等的能力都取得了提高。 下面具体的说一个编写程序时碰到的困难,第一就是如何把想法变成做法的问题,最开始一拿到题目,我就感觉无从下手,因为以我的阅历,不明白如何把如此一个问题变成程序,变成能够让人一目了然的东西,于是,我就先写下了p,v操作的实现进程,因为那个对我来讲简单一些,然后,在此基础之上,就好办了,结果最后用了2个函数就解决问题了,所以,我感觉有时候试探问题不要太死脑筋,换一个角度的话,或许会更好,说不定就可以达到事半功倍的效果,还有就是,想问题要想明白,想透彻,不能似懂非懂,模模糊糊的,想透彻以后再去试探下一步问题如此办事效率会更高。 4,完本钱题是不是有其他方式(若是有,简要说明该方式); 上面我也提到过,本次课题其实不难,所以,肯定还有其他的方式能够实现;从编程语言上来讲的话,由于我最擅长的是C++,所以用的是c++实现的。 若是用java等其他编程语言应该也能够。 算法方面的话,我感觉自己的还不错,也就没有想过其他的。 5,对实验题的评价和改良意见,请你推荐设计题目。 实验题目出得精辟到位,点出了本次课程设计的重点—进程之间的同步和互斥问题。 本来这也是很精典的例子,我也感觉专门好,没必要再加以修改。 6.参考书目 《运算机操作系统》西安电子科技大学出版社 《操作系统实验教程》,张丽芬、刘利雄、王全玉等,清华大学出版社。 《操作系统原理与实践教程》,周湘贞、曾宪权编,清华大学出版社。 《Windows操作系统核心编程实验教程》,宋晓宇,中国铁道出版社。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 司机 售票员 问题