- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
- 高速公路软基设计开题报告.doc
- 高速公路暑期实习报告.doc
- 高校大学生消费情况调查实习报告.doc
- 高校人事管理系统课程设计代码.docx
- 高校职工管理系统毕业论文(含外文翻译).doc
- 高压共轨试验台的设计与开发开题报告.doc
- 高原夏菜毕业论文5.doc
- 辊轧机毕业设计.doc
- 锅炉课程设计说明书---锅炉房及供热工程室外管网设计.doc
- 锅炉压力容器安全课程设计.doc
- 仓库保管员述职报告 仓库保管员述职报告总结 (21篇).docx
- 教师高级职称述职报告 教师高级职称述职报告要求字数多少 (17篇).docx
- 加油站经理述职报告 加油站经理述职报告2023年 (17篇).docx
- 销售主管述职报告范文 销售主管述职报告范文大全 (17篇).docx
- 机修班长述职报告 机修班长述职报告 (20篇).docx
- 村干部半年述职报告 村干部半年述职报告 (17篇).docx
- 学生会组织部述职报告 (15篇).docx
- 教师职称评定述职报告 初中教师职称评定述职报告 (17篇).docx
- 信贷述职报告 信贷述职报告怎么写 (17篇).docx
- 入党述职报告范文 入党述职报告范文大全 (19篇).docx
文档评论(0)