1 / 14
文档名称:

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

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

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

分享

预览

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

上传人:一花一世 2019/2/13 文件大小:99 KB

下载得到文件列表

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

文档介绍

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