ImageVerifierCode 换一换
格式:DOC , 页数:9 ,大小:84KB ,
资源ID:938863      下载积分:15 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-938863.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(课程设计任务书.DOC)为本站会员(天***)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

课程设计任务书.DOC

1、课程设计任务书学生姓名: 丁光明 专业班级: 计算机 0506 指导教师: 何克右 工作单位: 计算机科学与技术学院 题 目: 进程同步模拟设计司机和售票员问题 初始条件:1预备内容:阅读操作系统的进程管理章节内容,对进程的同步和互斥,以及信号量机制度有深入的理解。2实践准备:掌握一种计算机高级语言的使用。要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1模拟公共汽车司机和售票员开关门及行车操作的同步模型。2设计报告内容应说明: 课程设计目的与功能; 需求分析,数据结构或模块说明(功能与框图) ; 源程序的主要部分; 测试用例,运行结果与运行情况分析; 自我评

2、价与总结:i)你认为你完成的设计哪些地方做得比较好或比较出色;ii)什么地方做得不太好,以后如何改正;iii)从本设计得到的收获(在编写,调试,执行过程中的经验和教训) ;iv)完成本题是否有其他的其他方法(如果有,简要说明该方法) ;v)对实验题的评价和改进意见,请你推荐设计题目。时间安排:设计安排一周:周 1、周 2:完成程序分析及设计。周 2、周 3:完成程序调试及测试。周 4、周 5:验收、撰写课程设计报告。(注意事项:严禁抄袭,一旦发现,抄与被抄的一律按 0 分记)指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日题 目: 进程同步模拟设计司机和售票员问题 1.初始条件

3、:1预备内容:阅读操作系统的进程管理章节内容,对进程的同步和互斥,以及信号量机制度有深入的理解。2实践准备:掌握一种计算机高级语言的使用。2 要求完成的主要任务:2.1模拟公共汽车司机和售票员开关门及行车操作的同步模型。在汽车行驶过程中,司机活动与售票员活动之间的同步关系为:售票员关车门后,向司机发开车信号,司机接到开车信号后启动车辆,在汽车正常行驶过程中售票员售票,到站时司机停车,售票员在车停后开门让乘客上下车。因此,司机启动车辆的动作必须与售票员关车门的动作取得同步;售票员开车门的动作也必须与司机停车取得同步。司机 P1 售票员 P2 启动 关门 到站停 开门正常运行-售票-关门启动行驶停

4、开门 为了安全起见: (1)关车门后才能启动车辆 启动在关门之后 (2)到站停车后,才能开车门 开车门在到站停车之后 在计算机系统中可以将司机和售票员分别看作 P1、P2 两个进程,当它们并发地向前推进时,计算机系统所接受到的实际上是司机活动与售票员活动的许多交叉中的任意一个交叉,这些交叉有些满足上述要求,有些则不满足,而操作系统必须保证不发生不满足上述要求的交叉,即: 如 P2 尚未推进到处时,而 P1 已推进到处,则 P1 应等待直到 P2 推进到处为止; 如 P1 尚未推进到时,P2 已到,则 P2 应等待直到 P1 推进到处为止。 P1 在处发生了等待,则 P2 执行到处时应将 P1

5、唤醒; 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 课程设

6、计目的与功能;实验目的:对进程的同步和互斥,以及信号量机制度有深入的理解。一组相互合作的并发进程,为了协调其推进速度,有时需要相互等待与相互唤醒,进程之间这种相互制约的关系称作进程同步,虽然进程同步仅发生在相互有逻辑关系的进程之间,这种相互制约的关系称作进程同步,进程同步现象仅发生在相互有逻辑关系的进程之间,这点与进程互斥不同,进程互斥现象发生在任意两个进程之间。 与进程同步相关的另一概念是进程合作,一组进程如果它们单独执行不能正常进行,但并发执行可以正常进行,这种现象称为进程合作,参与进程合作的进程称为合作进程,如司机与售票员的例子,二者单独执行都不能正常进行,但二者并发反可以正常进行,成为

7、合作进程,这种进程合作的现象在操作系统中经常发生。实验功能:编写完程序后,通过输入程序给定的操作符对程序进行操作来实现司机与售票员之间的进程同步关系。对输入的错误操作符有识别功能给予正确的提示,对于那些不符合实际情况的操作给予限制和提示。例如车上人满的时候要给予不能再上车的提示,车上没人的时候要给予不能在下车的提示等等。2.2.2. 需求分析,数据结构或模块说明(功能与框图) ;问题描述:有两组并发进程:司机和售票员 ,共享一组数据区,进行司机开车和乘客上下车操作,要求任一时刻“只允许司机开车或乘客上下车操作。规则:允许乘客同时执行上下车操作;不允许司机开车、乘客上下车同时操作;司机和售票员的

8、相互关系:司机开车乘客上下车 互斥关系乘客上车乘客下车 允许具体分析: 司机进程:产生一个数据,当要送入缓冲区时,要检查缓冲区是否已满(),若未满,则可将数据送入缓冲区,并通知售票员进程;否则,等待; 售票员进程:当它去取数据时,要检查缓冲区中是否有数据可取,若不为空,则取走一个数据,并通知司机进程,否则,等待。 因为缓冲区是个临界资源,诸进程对缓冲区进行操作的临界区,需要进行 互斥操作的处理。程序流程图如下:其中 buffer 表示进程同步信号量n 表示车上的空余作为数p1 表示司机进程p2 表示售票员进程a 为输入的操作符2.2.3. 源程序的主要部分;#includeusing name

9、space std;int buffer=1;/进程同步信号量#define SIZE 36int n=SIZE;char a;int p1();int p2();int p1()/司机开车进程if(buffer=0)cout0a=2if(a=1)cout=SIZE)break;else cout4)cout=SIZE)cout“乘客已全部下车“endl;continue; ;cout“现在关闭车门“endl;buffer=0;if(a=4)cout“汽车到达终点站,乘客已全部下车,一天行程结束“endl;buffer=1;p1();return 0;int main()cout“使用说明:“

10、endl;cout“键入 1 表示乘客上车“endl;cout“键入 2 表示乘客下车“endl;cout“键入 3 表示乘客上下车过程结束“endl;cout“键入 4 表示汽车到达终点站,一天行程结束“endlendlendl;cout“行程开始,汽车在起点站准备启动“endl;p2();return 0;2.2.4 测试用例,运行结果与运行情况分析;运行结果:程序运行后结果如下:对程序操作后结果如下:运行情况分析:程序运行结果正确。但由于对程序的操作次数有限,所以并不能看到程序的全部功能。当输入的操作符不合要求的时候,程序会给出输入错误提示,由于车的容量有限,当乘客上满后,再对程序进行上

11、车操作,程序也会给出车上乘客已满无法上车的提示。当车上没有乘客时,再对程序进行下车操作,程序会给出车上乘客已全部下车的提示。2.2.5 自我评价与总结:设计的比较好和比较出色的地方:这次课程设计基本上完成了实验要求,实现了司机与售票员之间的同步关系。程序写的很简洁明了,少而精,很容易看懂,但达到了设计要求,并且有健全的判断错误操作的能力和对不正常操作给予提示的能力,也很切合实际情况。设计的不好的地方及如何改进:但是程序写得有些简单,只能进行有限的几个简单操作,局限性很大并不能应用于实际情况。再对乘客进行上下车操作时也未对乘客的情况进行统计和记录,仅仅是体现出同步关系,完成实验要求,而未考虑的更

12、深更远,使程序更加复杂,功能更加健全。在设计时我们应该考虑的更多一些,使得自己的设计更有用,像用在公交车上的无人售票系统中等等。iii)从本设计得到的收获(在编写,调试,执行过程中的经验和教训) ;这次设计实验使我懂得了如何用 C+代码来表示进程间的同步关系,而不是用 P,V 信号量来表示。程序编写时发现信号量只用一个就足以表达司机和售票员之间的同步关系,而不需要使用 2 个。刚做完时程序功能很不健全只有中间过程而无头无尾,p1,p2 2 个函数轮流调用程序始终终止不了,就像没有起点站和终点站的汽车一样,后来通过加入一个操作符和巧妙的应用同步信号量来实现了结束 2 个进程的操作。写程序时往往考虑的都不是很周全,有很多细节很可能自己没考虑到,这就需要我们再写完程序后在对程序的调试过程中发现这些细节并修正程序,这样才能写出更好功能更健全的程序。进程同步最典型的表示方法就时利用 PV 信号量来表示,这种表示方法在上文已经给出了。这次实验只是进程同步模拟设计的一个简单的例子,现实生活中还有很多这样的例子,书上也列举了很多像读者与写者的问题,生产者和消费者的问题,哲学家就餐问题等等,这些都是很好的设计题目

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。