成绩操作系统》课程设计报告专业:计算机科学与技术班级:08计本(2)班完成日期:2011・6甘肃政法学院计算机科学学院一.....................................................题目内容错误!未定义书签。二.....................................................课程设计目的错误!未定义书签三.....................................................设计思想说明错误!未定义书签四.....................................................系统结构的说明错误!未定义书签(一)头文件声明错误!未定义书签(二)定义各种变量错误!未定义书签(三)信号量的定义错误!未定义书签(四)相关函数及线程的定义错误!未定义书签五.....................................................数据结构说明错误!未定义书签六•程序用到的系统调用(API)错误!未定义书签。七.程序总体算法流程图错误!未定义书签八.程序运行错误!未定义书签九.使用说明书错误!未定义书签十.程序设计总结错误!未定义书签参考文献错误!未定义书签附录错误!未定义书签(一)代码清单错误!未定义书签(二)课程设计分工表错误!未定义书签睡眠理发师问题一.题目内容有一个理发师,一把理发椅和n把提供给等候理发的顾客座的椅子。如果没有顾客,则理发师便在理发椅子上睡觉;当第一个顾客到来时,必须唤醒该理发师进行理发;如果理发师正在理发时又有顾客到来,则如果有空椅子可坐,他就坐下来等待,如果没有空椅子,他就离开理发店。为理发师和顾客各编一段程序描述他们的行为,要求不能带有竞争条件,试用P、V操作实现。二.课程设计目的通过本次课程设计,能深入彻底的弄清楚睡眠理发师问题,能够举一反三,遇到同样的问题能够很快解决。通过自己的实际操作,认真分析,理解进程,线程,信号量之间的关系和他们的实现过程,掌握一些基本的系统调用的用法及其所实现的功能。用C++来实现睡眠理发师的课程设计,达到复习C++相关知识的目的。三.设计思想说明此题可看作是n个生产者和1个消费者问题。顾客作为生产者,每到来一个就使计数器count增加1,以便让理发师理发(相当于消费)至最后一个顾客(相当于产品)。并且,第1个到来的顾客应负责唤醒理发师;如果不是第1个到达的顾客,则在有空椅子的情况下坐下等待,否则离开理发店(该消息可由计数器count获得)。主要有以下一些函数来实现整个问题的实现过程:(1)用随机函数random()来产生进入理发店的顾客。(2)定义理发师的理发函数cuthair()用来实现理发操作。(3)定义顾客被理发的函数gethaircut()用来实现顾客被理发的操作。(4)用顾客线程customer实现对顾客行为的控制。(5)用理发师线程barber实现对理发师行为的控制。(6)定义主函数main实现对两个线程的控制和执行操作。四.系统结构的说明(一)头文件声明#include"stdafx.h"#include"windows.h"#include"iostream.h"#include"math.h"(二)定义各种变量intlongwaiting(0);intchairs;charopen_door;charclose_door;intcount(0);intfinish(0);(三)信号量的定义DWORDa;%互斥信号量:mutex用来互斥对临界变量count的访问计数信号量customers用来记录等候的顾客数据,barbers用来记录等待的理发师数,这里barbers只有两种取值,要不是0要不是1临界变量:count由理发师进程和顾客进程共同访问,用来记录在椅子上等着的顾客数N椅子数,为最多等候的顾客数HANDLEMutex=::CreateMutex(NULL,FALSE,"Mutex");HANDLEbarbers=::CreateSemaphore(NULL,1,1,"barbers");HANDLEcustomers=::CreateSemaphore(NULL,0,3,"customers");(四)相关函数及线程的定义定义随机函数intrandom()来产生顾客,并使两个顾客间的时间少于15秒定义理发师的理发函数voidcuthair(),用时15秒定义顾客被理发的函数voidgethaircut()定义顾客线程DWORDWINAPIcustomer(LPVOIDpParm2)定义理发师线程DWORDWINAPIbarber(LPVOIDpParm1)定义主函数实现线程的操作intmain(intargc,char*argv[])五.数据结构说明本程序用到了数据结构中的队列,理发的顾客由随机函数产生,顾客遵从先到先理发的原则,但队列的长度限制为输入的理发店中的椅子的个数,当理发店的椅子没有空位的时候,到...