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

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

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:400-050-0739(电话支持时间:9:00-19:00)。
附件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
该用户很懒,什么也没介绍

相关文档

相关课程推荐