- 1、本文档共19页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统
课程设计报告
院 (系):
专 业: 计算机科学与技术
姓 名:
班 级:_ _
学 号:
题 目: 售票员与乘客
指导教师:
2019年11月20日至12月28日
目录
TOC \o 1-3 \h \z \u 一、需求分析 3
1.1问题概述 3
1.2理论分析 3
1.3问题分析 3
二、概要设计 4
2.1售票流程分析 4
2.2进程分析 5
2.3信号量机制实现设计 5
三、详细设计 6
3.1设计思路 6
3.2程序设计核心要点 7
3.3主要函数分析 7
3.4具体函数实现分析: 7
四、测试分析、测试结果 14
五、用户使用说明 16
5.1运行环境 16
5.2程序语言 16
5.2使用说明 16
六、 总结体会 18
6.1遇到的问题及解决方法 18
6.2总结心得 18
七、参考资料 19
一、需求分析
1.1问题概述
了解进程同步的概念,理解信号量机制的原理,掌握运用信号量解决进程同步问题的方法,进而学会运用进程的同步和互斥。
设计要求:编程序模拟车站售票厅进程同步问题,售票厅任何时刻最多可容纳20名购票者进入,否则需要在外面等待。每个购票者可以看成一个进程。
1.2理论分析
在多道程序环境下, 系统中可能存在许多的进程,在这些进程之间必定存在一些制约关系,这种制约关系表现为以下两种形式:
①资源共享关系。 进程之间不知道其他进程的存在,而这些进程又处在同一个系统中,对系统资源必须共享使用,而有些资源不允许进程同时访问,例如打印机。 系统只能保证进程间互斥地使用这种临界资源,称这种资源共享关系叫做互斥;
②相互合作关系。 在某些进程间还存在一种相互合作的关系。 例如在某个系统中存在两个进程,输入进程 A 和计算进程 B,A 负责向 B 提供数据,当缓冲区空时,B 进程因不能获得所需数据而等待。 当A 把数据送入缓冲区后,并向 B 发送一个信号将 B 唤醒,B 才能取走数据。 同样,当 B 没有提取数据,也就是说缓冲区满时, 进程 A 也无法向其中投入数据而等待。 这就是一种相互合作关系,称之为进程间的同步关系。
1.3问题分析
在售票大厅买票与卖票的过程其实是有共享缓存去的合作进程而引起的同步,而售票大厅就是这个缓存区,购票者进入售票大厅,由售票者给购票者票后,购票者离开,如图所示。
二、概要设计
2.1售票流程分析
售票厅任何时刻最多可容纳20名购票者进入,当售票大厅超过20人时,系统提示乘客需退出大厅等待;当大厅中人数少于或等于20人时,售票员开始售票,并提示等待的乘客进入大厅;
1、乘客购票操作过程:
①乘客先在售票厅外等候排队购票;
②当提示售票厅内人数不足20人时,则按排队顺序进入售票厅内进行购票动作;
③乘客购票完后则离开售票厅内,并提示等待的乘客进入大厅。
售票流程如图所示:
2.2进程分析
由于售票大厅是缓存区,最大容量为20,因此会出现3中情况:
① 若此时售票厅里人数为零时,则程序会提醒售票大厅为空,售票员的进程阻塞,直到购票者的进程运行完才唤醒该进程;
② 当进入售票厅内的人数还没有20时,进程将继续执行,则表示售票者的进程和购票者的进程都能执行;
③ 由于程序中的售票厅最大只能容纳20个人,所以,当售票厅内的人数进入将20时,则程序会提醒用户售票大厅的人数已满,请排队等候,购票者进程阻塞,直到售票者的进程运行完才唤醒该进程。
由于是多个购票者和多个售票者对应多个缓存区,因此,设置3个信号量:
同步信号量empty表示空缓存单元的个数,初值为20;
同步信号量full表示满缓冲单元的个数,初值为0;
互斥信号量mutex表示互斥使用的整个缓存池,初值为1;
售票员-乘客进程PV关系如图:
乘客 售票员
P(empty) P(full)
P(mutex)
文档评论(0)