课程设计任务书[001]

上传人:无*** 文档编号:115136936 上传时间:2022-07-01 格式:DOC 页数:7 大小:54KB
返回 下载 相关 举报
课程设计任务书[001]_第1页
第1页 / 共7页
课程设计任务书[001]_第2页
第2页 / 共7页
课程设计任务书[001]_第3页
第3页 / 共7页
点击查看更多>>
资源描述
课程设计任务书学生姓名:丁光明 专业班级: 计算机0506 指导教师:何克右 工作单位: 计算机科学与技术学院 题 目: 进程同步模拟设计司机和售票员问题初始条件:1预备内容:阅读操作系统的进程管理章节内容,对进程的同步和互斥,以及信号量机制度有深入的理解。2实践准备:掌握一种计算机高级语言的使用。要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1模拟公共汽车司机和售票员开关门及行车操作的同步模型。2设计报告内容应说明: 课程设计目的与功能; 需求分析,数据结构或模块说明(功能与框图); 源程序的主要部分; 测试用例,运行结果与运行情况分析; 自我评价与总结:i)你认为你完成的设计哪些地方做得比较好或比较出色;ii)什么地方做得不太好,以后如何改正;iii)从本设计得到的收获(在编写,调试,执行过程中的经验和教训);矚慫润厲钐瘗睞枥庑赖賃軔。iv)完成本题是否有其他的其他方法(如果有,简要说明该方法);v)对实验题的评价和改进意见,请你推荐设计题目。时间安排:设计安排一周:周1、周2:完成程序分析及设计。周2、周3:完成程序调试及测试。周4、周5:验收、撰写课程设计报告。(注意事项:严禁抄袭,一旦发现,抄与被抄的一律按0分记)指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日题 目: 进程同步模拟设计司机和售票员问题1.初始条件:1预备内容:阅读操作系统的进程管理章节内容,对进程的同步和互斥,以及信号量机制度有深入的理解。2实践准备:掌握一种计算机高级语言的使用。2要求完成的主要任务:2.1模拟公共汽车司机和售票员开关门及行车操作的同步模型。在汽车行驶过程中,司机活动与售票员活动之间的同步关系为:售票员关车门后,向司机发开车信号,司机接到开车信号后启动车辆,在汽车正常行驶过程中售票员售票,到站时司机停车,售票员在车停后开门让乘客上下车。因此,司机启动车辆的动作必须与售票员关车门的动作取得同步;售票员开车门的动作也必须与司机停车取得同步。聞創沟燴鐺險爱氇谴净祸測。司机 P1 售票员 P2 启动关门到站停开门正常运行-售票-关门启动行驶停开门 为了安全起见: (1)关车门后才能启动车辆 启动在关门之后 (2)到站停车后,才能开车门 开车门在到站停车之后 在计算机系统中可以将司机和售票员分别看作P1、P2两个进程,当它们并发地向前推进时,计算机系统所接受到的实际上是司机活动与售票员活动的许多交叉中的任意一个交叉,这些交叉有些满足上述要求,有些则不满足,而操作系统必须保证不发生不满足上述要求的交叉,即: 残骛楼諍锩瀨濟溆塹籟婭骒。如P2尚未推进到处时,而P1已推进到处,则P1应等待直到P2推进到处为止; 如P1尚未推进到时,P2已到,则P2应等待直到P1推进到处为止。 P1在处发生了等待,则P2执行到处时应将P1唤醒; P2在处发生了等待,P1到处应将P2唤醒应设置两个信号量:S1 、S2 ;S1 表示是否允许司机启动汽车(其初值为0 ) ;S2 表示是否允许售票员开门(其初值为0 )。用P 、v 原语描述如下:int s1=O; int s2=O; main() cobegin driver(); conductor(); coend driver() while(1) p(s1); 启动车辆; 正常行车; 到站停车; v(s2); conductor() while(1) 关车门; v(s1); 售票;p(s2); 开车门; 上下乘客; 2.2设计报告内容应说明:2.2.1课程设计目的与功能;实验目的:对进程的同步和互斥,以及信号量机制度有深入的理解。一组相互合作的并发进程,为了协调其推进速度,有时需要相互等待与相互唤醒,进程之间这种相互制约的关系称作进程同步,虽然进程同步仅发生在相互有逻辑关系的进程之间,这种相互制约的关系称作进程同步,进程同步现象仅发生在相互有逻辑关系的进程之间,这点与进程互斥不同,进程互斥现象发生在任意两个进程之间。 酽锕极額閉镇桧猪訣锥顧荭。与进程同步相关的另一概念是进程合作,一组进程如果它们单独执行不能正常进行,但并发执行可以正常进行,这种现象称为进程合作,参与进程合作的进程称为合作进程,如司机与售票员的例子,二者单独执行都不能正常进行,但二者并发反可以正常进行,成为合作进程,这种进程合作的现象在操作系统中经常发生。彈贸摄尔霁毙攬砖卤庑诒尔。 实验功能: 编写完程序后,通过输入程序给定的操作符对程序进行操作来实现司机与售票员之间的进程同步关系。对输入的错误操作符有识别功能给予正确的提示,对于那些不符合实际情况的操作给予限制和提示。例如车上人满的时候要给予不能再上车的提示,车上没人的时候要给予不能在下车的提示等等。謀荞抟箧飆鐸怼类蒋薔點鉍。2.2.2. 需求分析,数据结构或模块说明(功能与框图);问题描述: 有两组并发进程:司机和售票员,共享一组数据区,进行司机开车和乘客上下车操作,要求任一时刻“只允许司机开车或乘客上下车操作。厦礴恳蹒骈時盡继價骚卺癩。规则: 允许乘客同时执行上下车操作; 不允许司机开车、乘客上下车同时操作;司机和售票员的相互关系:司机开车乘客上下车 互斥关系乘客上车乘客下车 允许具体分析:司机进程:产生一个数据,当要送入缓冲区时,要检查缓冲区是否已满(),若未满,则可将数据送入缓冲区,并通知售票员进程;否则,等待;茕桢广鳓鯡选块网羈泪镀齐。售票员进程:当它去取数据时,要检查缓冲区中是否有数据可取,若不为空,则取走一个数据,并通知司机进程,否则,等待。鹅娅尽損鹌惨歷茏鴛賴縈诘。因为缓冲区是个临界资源,诸进程对缓冲区进行操作的临界区,需要进行互斥操作的处理。程序流程图如下:其中buffer表示进程同步信号量n表示车上的空余作为数p1表示司机进程p2表示售票员进程a为输入的操作符开始buffer=1,n=36P2buffer=1输入操作数aa=1&n0a=2&n36n=36a4a=3a=4n-n+buffer=0a=4P1buffer=1结束buffer=1YYNNY籟丛妈羥为贍偾蛏练淨槠挞。2.2.3. 源程序的主要部分;#includeusing namespace std;int buffer=1;/进程同步信号量#define SIZE 36int n=SIZE;char a;int p1();int p2();int p1()/司机开车进程if(buffer=0)cout汽车启动准备离站endl;cout汽车正在行驶endl;cout汽车到站了endl;cout汽车已停止endl;buffer=1;p2();return 0;int p2()/乘客上下车进程if(buffer)cout售票员已打开车门endl;cout请乘客上下车a;if(a=1)&(n0)n-;cout上了一名乘客endl;continue;if(a=2)&(nSIZE)n+;cout下了一名乘客=SIZE)break;else cout乘客未全部下车,等待乘客下车endl;if(a4)cout操作错误,请输入正确的操作符1-4endl;if(n=0)cout车上座位已满,无法再上乘客了=SIZE)cout乘客已全部下车endl;continue;cout现在关闭车门endl;buffer=0;if(a=4)cout汽车到达终点站,乘客已全部下车,一天行程结束endl;buffer=1;p1();return 0;int main()cout使用说明:endl;cout键入1表示乘客上车endl;cout键入2表示乘客下车endl;cout键入3表示乘客上下车过程结束endl;cout键入4表示汽车到达终点站,一天行程结束endlendlendl;cout行程开始,汽车在起点站准备启动endl;p2();return 0;2.2.4测试用例,运行结果与运行情况分析;运行结果:程序运行后结果如下:对程序操作后结果如下:运行情况分析:程序运行结果正确。但由于对程序的操作次数有限,所以并不能看到程序的全部功能。当输入的操作符不合要求的时候,程序会给出输入错误提示,由于车的容量有限,当乘客上满后,再对程序进行上车操作,程序也会给出车上乘客已满无法上车的提示。当车上没有乘客时,再对程序进行下车操作,程序会给出车上乘客已全部下车的提示。預頌圣鉉儐歲龈讶骅籴買闥。2.2.5 自我评价与总结:设计的比较好和比较出色的地方:这次课程设计基本上完成了实验要求,实现了司机与售票员之间的同步关系。程序写的很简洁明了,少而精,很容易看懂,但达到了设计要求,并且有健全的判断错误操作的能力和对不正常操作给予提示的能力,也很切合实际情况。渗釤呛俨匀谔鱉调硯錦鋇絨。设计的不好的地方及如何改进: 但是程序写得有些简单,只能进行有限的几个简单操作,局限性很大并不能应用于实际情况。再对乘客进行上下车操作时也未对乘客的情况进行统计和记录,仅仅是体现出同步关系,完成实验要求,而未考虑的更深更远,使程序更加复杂,功能更加健全。在设计时我们应该考虑的更多一些,使得自己的设计更有用,像用在公交车上的无人售票系统中等等。铙誅卧泻噦圣骋贶頂廡缝勵。iii)从本设计得到的收获(在编写,调试,执行过程中的经验和教训);擁締凤袜备訊顎轮烂蔷報赢。这次设计实验使我懂得了如何用C+代码来表示进程间的同步关系,而不是用P,V信号量来表示。程序编写时发现信号量只用一个就足以表达司机和售票员之间的同步关系,而不需要使用2个。刚做完时程序功能很不健全只有中间过程而无头无尾,p1,p2 2个函数轮流调用程序始终终止不了,就像没有起点站和终点站的汽车一样,后来通过加入一个操作符和巧妙的应用同步信号量来实现了结束2个进程的操作。写程序时往往考虑的都不是很周全,有很多细节很可能自己没考虑到,这就需要我们再写完程序后在对程序的调试过程中发现这些细节并修正程序,这样才能写出更好功能更健全的程序。贓熱俣阃歲匱阊邺镓騷鯛汉。进程同步最典型的表示方法就时利用PV信号量来表示,这种表示方法在上文已经给出了。这次实验只是进程同步模拟设计的一个简单的例子,现实生活中还有很多这样的例子,书上也列举了很多像读者与写者的问题,生产者和消费者的问题,哲学家就餐问题等等,这些都是很好的设计题目坛摶乡囂忏蒌鍥铃氈淚跻馱。7 / 7
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!