- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统实验1 银行柜员服务问题
操作系统实验一 银行柜员服务问题
实验报告
邵鑫
2016011111
2018 年11 月5 日
一、实验目的
1. 通过对进程间通信同步/互斥问题的编程实现,加深理解信号量和P、V 操作的原理;
2. 对Windows 或Linux 涉及的几种互斥、同步机制有更进一步的了解;
3. 熟悉Windows 或Linux 中定义的与互斥、同步有关的函数。
二、实验内容
·问题描述:
银行有n 个柜员负责为顾客服务,顾客进入银行先取一个号码,然后等着叫号。当某个
柜员空闲下来,就叫下一个号。
编程实现该问题,用P、V 操作实现柜员和顾客的同步。
·实现要求:
1. 某个号码只能由一名顾客取得;
2. 不能有多于一个柜员叫同一个号;
3. 有顾客的时候,柜员才叫号;
4. 无柜员空闲的时候,顾客需要等待;
5. 无顾客的时候,柜员需要等待。
·实现提示:
1. 互斥对象:顾客拿号,柜员叫号;
2. 同步对象:顾客和柜员;
3. 等待同步对象的队列:等待的顾客,等待的柜员;
4. 所有数据结构在访问时也需要互斥。
第 1 页 共 9 页
操作系统实验1 银行柜员服务问题
三、设计思路
①怎样输入输出?
输入输出数据的保存:使用结构体数组,非常方便
②如何模拟银行排队的过程?
对每一个柜员和顾客创建一个线程来模拟他们的行为。进程间通信使用WINDOWS提供的
同步和互斥量semaphore和Mutex:创建同步信号量sema,确保柜员处于等待状态,创建顾客
互斥量cusmutex,防止多个顾客同时进入银行的时候拿到一样的号。创建柜员互斥量
servermutex,防止一个柜员服务多个顾客。
③进程间同步与互斥的操作顺序和逻辑关系?
·顾客进程睡眠相应时长模拟不同时间进入银行的过程
·顾客进入银行:
customermutex:P
·顾客取到号码:
sema:V
·柜台开始服务时:
servermutex:P
sema:P
·柜台结束服务:
servermutex:V
customermutex:V
四、程序结构与主要代码分析
程序结构基本如下
确定参数:最大服务顾客数和柜台数目
初始化 建立核心变量:待服务顾客数、已服务顾客数、顾客柜员编号
定义输入顾客、输出顾客、互斥 同步量数据类型
/
定义柜台服务线程
定义线程
定义顾客排号线程
读入数据
文档评论(0)