进程同步模拟课程设计——司机和售票员问题.doc

进程同步模拟课程设计——司机和售票员问题.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
附件1: 学 号: 课 程 设 计 题 目 进程同步模拟设计——司机和售票员问题 学 院 计算机科学与技术 专 业 计算机科学与技术 班 级 姓 名 指导教师 2011 年 1 月 21 日 课程设计任务书 学生姓名: 专业班级: 计算机科学与技术 指导教师: 工作单位: 计算机科学与技术学院 题 目: 进程同步模拟设计——司机和售票员问题 初始条件: 1.预备内容:阅读操作系统的进程管理章节内容,对进程的同步和互斥,以及信号量机制度有深入的理解。 2.实践准备:掌握一种计算机高级语言的使用。 要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) 1.模拟公共汽车司机和售票员开关门及行车操作的同步模型。 2.设计报告内容应说明: ⑴ 课程设计目的与功能; ⑵ 需求分析,数据结构或模块说明(功能与框图); ⑶ 源程序的主要部分; ⑷ 测试用例,运行结果与运行情况分析; ⑸ 自我评价与总结: i)你认为你完成的设计哪些地方做得比较好或比较出色; ii)什么地方做得不太好,以后如何改正; iii)从本设计得到的收获(在编写,调试,执行过程中的经验和教训); iv)完成本题是否有其他的其他方法(如果有,简要说明该方法); v)对实验题的评价和改进意见,请你推荐设计题目。 时间安排: 设计安排一周:周1、周2:完成程序分析及设计。 周2、周3:完成程序调试及测试。 周4、周5:验收、撰写课程设计报告。 (注意事项:严禁抄袭,一旦发现,抄与被抄的一律按0分记) 指导教师签名: 年 月 日 系主任(或责任教师)签名: 年 月 日 课程设计目的与功能 1.1课程设计目的: 通过课程设计,运用信号量,模拟公共汽车司机和售票员开关门及行车操作的同步模型。 1.2课程设计能够实现以下功能: 设置信号量,保证以下四点: 公交运行的时候售票员不能开车门; 公交停下,售票员方可打开车门; 公交车门打开时,司机不能开车; 公交车门关上时,司机方能启动公交 需求分析,数据结构或模块说明(功能与框图) 2.1 需求分析 为了保证公交运行的时候车门不能开,应该设置一个表示公交运行的信号量,1表示公交运行在,0表示车已停下; 为了保证车门打开的时候司机不能启动公交,所以应设置一个表示车门是否打开的信号量,0表示公交门打开,1表示公交门关上 按照以上分析,两个信号量在同一时刻必定相反,由此得到结论:设置一个信号量,1表示车停门开,0表示车开门关 2.2 数据结构 Bus类 成员变量:int flag表示公共的信号量,1表示车停门开,0表示车开门关 方法: public synchronized void open(),表示乘务员开车门的动作 public synchronized void drive(),表示司机启动车辆的动作 Driver类,继承于Thread类 成员变量:private Bus c,表示该司机所驾驶的公交是c 方法:public void run(),执行Bus c的driver()方法 Conductor类,继承于Thread类 成员变量:private Bus c,表示该司机所驾驶的公交是c 方法:public void run(),执行Bus c的open()方法 2.3 模块说明 Bus模块 这里主要介绍Bus模块中的open()与driver()方法: open(): 方法open()具有synchronized关键字,表示该方法在执行的过程中,其 他方法不能够改变该方法所在对象中所拥有的值,因此保证了时间的 同步性。 While(车还在开){ 等待,运用wait()方法 } //车停下了 乘客上下车 车门关上 改变信号量flag为0 告诉司机车门关上了,可以启动车辆,运用notify()方法 drive(): 类似于open()方法,方法drive ()具有synchronized关键字,表示该方法 在执行的过程中,其他方法不能够改变该方法所在对象中所拥有的值, 因此保证了时间的同步性。 While(车门还没关){ 等待,运用wait()方法 } //车门关了 司机开车 改变信号量flag为1 车停下,告诉售票员可以开门了,运用notify()方法 Driver模块 设置count,表示该模拟过程执行的次数, run()方法,执行私有成员bus的drive()方法,执行count次后停止。 Condu

文档评论(0)

li455504605 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档