1-网络操作系统课程设计题目.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1-网络操作系统课程设计题目

网络操作系统课程设计题目 从题目一到五中选择一个题目实现操作系统原理的程序设计,从题目六到八选择一个完成网络程序设计,两个题目交一份课程设计报告,要求附程序流程图及源代码! 题目选择规则:1、操作系统原理题目:学号除以6,余数为题目号,余数为0选题目一。2、网络程序设计题目:学号除以3,余数为1选题目六、余数为2选题目七、余数为0选题目八。 三、P、V操作及进程同步的实现 掌握信号量通信方式的一般方法,了解系统实现“阻塞”和“唤醒”功能的方法和技巧。同时掌握进程同步和互斥的概念及实现技术。 题目内容 (1)用C语言或C++语言编程实现P、V原语并用P、V原语描述如下生产者-消费者问题: 有一个理发师,一把理发椅和n把提供给等候理发的顾客座的椅子。如果没有顾客,则理发师便在理发椅子上睡觉;当第一个顾客到来时,必须唤醒该理发师进行理发;如果理发师正在理发时又有顾客到来,则如果有空椅子可坐,他就坐下来等待,如果没有空椅子,他就离开理发店。 为理发师和顾客各编一段程序描述他们的行为,要求不能带有竞争条件,试用P、V操作实现。 (2)分析 此题可看作是n个生产者和1个消费者问题。 顾客作为生产者,每到来一个就使计数器rc增加1,以便让理发师理发(相当于消费)至最后一个顾客(相当于产品)。并且,第1个到来的顾客应负责唤醒理发师;如果不是第1个到达的顾客,则在有空椅子的情况下坐下等待,否则离开理发店(该消息可由计数器rc获得)。 (3)理发师(barber)与顾客(customer)的并发程序的描述 begin mutex:=1; wakeup:=0; wait:=0; cobegin customer I(I=1,2,3,…n) begin P(mutex); rc:=rc+1; if rc=1 then V(wakeup) else if rc=n then P(wait) /*顾客人数小于等于n时在椅子上等待*/ else begin rc:=rc-1; /*第n+1个顾客离开理发店*/ 该顾客离开理发店; end; V(mutex); end; barber: begin P(wakeup);/*没有顾客时理发师睡觉(阻塞),直到第1个顾客来时唤醒*/ repeat 理发; P(mutex); rc:=rc-1; if rc0 then V(mutex); /*让等待中的一个顾客理发*/ V(mutex); until rc=0; end coend end; 题目要求: (1)定义信号量并将P、V操作定义为带参数 (2)以输出字符串的形式表示理发师和顾客的行为。 (3)设计适当的数据结构和函数描述顾客等待队列和“唤醒”理发师理发过程,以及没有顾客时的“阻塞”理发师过程。 (4)编程时需考虑理发师和顾客对应的程序是并发操作的。 提示:可利用随机函数模拟并发操作。 (5)理发师和顾客两个进程各自调用一个函数模拟生产及消费的操作。 消费者进程开始时首先测试生产者是否存在,若不存在,则循环测试直到生产者出现为止。消费者如果是第一次执行即转为睡眠状态,则直到生产者完成产品后再唤醒消费者,然后两者协调地工作下去。 #include iostream using namespace std; //模拟理发店问题 class HaircutShop{ //理发师的两种状态 enum BarberType{ BUSY, SHEEP }; public: //构造函数n代表椅子数目 HaircutShop(int n){ MAXnum = n; num = 0; Barber = SHEEP; } //进入一个客户 void InputCustomer(); //服务一个客户 void ServiceCustomer(); private: //理发师处理 BarberType Barber; //理发店座位情况 int num; //当前使用数目 int MAXnum;//最大使用数目 }; void HaircutShop::ServiceCustomer(){ if(num==0){ cout没有客户在,理发师继续睡觉endl; coutendl; return; } cout一个客户来到理发椅endl; //如果理发师在休息 if(Barber == SHEEP){ cout^^叫醒在睡眠的理发师endl; Barber = BUSY; } num--; cout^^完成一个客户理发工作endl; if(num==0){ c

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档