1 / 20
文档名称:

操作系统课程设计--用多线程同步方法解决睡眠理发师问题.doc

格式:doc   大小:572KB   页数:20页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

操作系统课程设计--用多线程同步方法解决睡眠理发师问题.doc

上传人:mkjafow 2018/9/23 文件大小:572 KB

下载得到文件列表

操作系统课程设计--用多线程同步方法解决睡眠理发师问题.doc

文档介绍

文档介绍:学号:

XXXXXXXXXXXXXXX
课程设计
题目
用多线程同步方法解决睡眠理发师问题(Sleeping-Barber Problem)
学院
计算机科学与技术学院
专业
软件工程
班级
姓名
指导教师
2010

6

28

课程设计任务书
学生姓名: 专业班级:
指导教师: 工作单位:
题目: 用多线程同步方法解决睡眠理发师问题(Sleeping-Barber Problem)
初始条件:
操作系统:Linux
程序设计语言:C语言
3. 设有一个理发师,5把椅子(另外还有一把理发椅),几把椅子可用连续存储单元。
要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
:
1)为每个理发师/顾客产生一个线程,设计正确的同步算法
2)每个顾客进入理发室后,即时显示“Entered”及其线程自定义标识,还同时显示理发室共有几名顾客及其所坐的位置。
3)至少有10个顾客,每人理发至少3秒钟。
4)多个顾客须共享操作函数代码。
2. 设计说明书内容要求:
1)设计题目与要求
2)总的设计思想及系统平台、语言、工具等。
3)数据结构与模块说明(功能与流程图)
4)给出用户名、源程序名、目标程序名和源程序及其运行结果。(要注明存储各个程序及其运行结果的主机IP地址和目录。)
5)运行结果与运行情况
(提示: (1)连续存储区可用数组实现。
(2)编译命令可用: cc -lpthread -o 目标文件名源文件名
(3)多线程编程方法参见附件。)
3. 调试报告:
1) 调试记录
自我评析和总结
上机时间安排:
18周一 ~ 五 08:0 - 12:00
指导教师签名: 年月日
系主任(或责任教师)签名: 年月日
目录
1设计题目与要求 4
设计题目 4
设计要求 4
初始条件 4
技术要求 4
2 总体设计思想及开发环境与工具 4
总体设计思想 4
多线程编程原理 5
创建一个线程 5
等待一个线程结束 5
信号量 6
伪码实现 6
开发环境与工具 7
3数据结构与模块说明 8
数据结构 8
8
8
理发师模块 9
顾客模块 9
4源程序 10
、源程序名和目标程序名 10
11
5运行结果 14
14
15
编辑,编译和运行的过程图 15
错误部分截图 16
正确运行结果图 16
6调试记录 18
18
19
7参考文献 19
1设计题目与要求
设计题目
用多线程同步方法解决睡眠理发师问题(Sleeping-Barber Problem)
设计要求
初始条件
(1)操作系统:Linux
(2)程序设计语言:C语言
(3)设有一个理发师,5把椅子(另外还有一把理发椅),几把椅子可用连续存储单元。
技术要求
(1)为每个理发师/顾客产生一个线程,设计正确的同步算法
(2)每个顾客进入理发室后,即时显示“Entered”及其线程自定义标识,还同时显示理发室共有几名顾客及其所坐的位置。
(3)至少有10个顾客,每人理发至少3秒钟。
(4)多个顾客须共享操作函数代码。
2 总体设计思想及开发环境与工具
总体设计思想
题目中要求描述理发师和顾客的行为,因此需要两类线程barber()和customer ()分别描述理发师和顾客的行为。其中,理发师有活动有理发和睡觉两个事件;等待和理发二个事件。店里有固定的椅子数,上面坐着等待的顾客,顾客在到来这个事件时,需判断有没有空闲的椅子,理发师决定要理发或睡觉时,也要判断椅子上有没有顾客。所以,顾客和理发师之间的关系表现为:
(1)理发师和顾客之间同步关系:当理发师睡觉时顾客近来需要唤醒理发师为其理发,当有顾客时理发师为其理发,没有的时候理发师睡觉。
(2)理发师和顾客之间互斥关系:由于每次理发师只能为一个人理发,且可供等侯的椅子有限只有n把,即理发师和椅子是临界资源,所以顾客之间是互斥的关系。
(3)故引入3个信号量和一个控制变量:
ⅰ控制变量waiting用来记录等候理发的顾客数,初值为0;
ⅱ信号量customers用来记录等候理发的顾客数,并用作阻塞理发师进程,初值为0;