燕山大学课程设计说明书概要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 概述 1.1 课程设计目的 通过编写一个生产者消费者的实例,了解多线程的创建,运行原理,通过信号量机制的运用了解各线程间的协调工作机制;通过实现界面编程,了解MFC编程思想。 1.2 主要完成的任务 如下图所示,有个PUT操作要不断循环地向Buffer1送数据,有Move操作不断地将Buffer1的数据取到Buffer2操作不断地将Buffer数据取到,有GET操作要不断地从中取数据。PUT、 MOVE、 GET每次操作一个数据,为了在操作的过程中要保证数据不丢失, 每个Buffer每次只能接受一个PUT或一个Move或一个Get。设计一个多道程序完成上述操作。 图1 Buffer操作 Buff1,buffer中容量单位是字符。 (2)提供良好图形界面,显示Buffer的操作过程 (3) 可以Buffer的容量、PUT、GET、操作的个数; 可以PUT、GET、速度; 实时显示每个Buffer中数据的个数,Buffer的个数实时显示程序运行结束,显示汇总数据: 总的运行时间; Buffer中数据的个数; 已放入BUFFER的数据个数; 已取的数据个数; 平均buffer中的数据个数。 MFC MFC是Windows下程序设计的最流行的一个类库它合理的封装了WIN32 API函数,并设计了一套方便的消息映射机制。 在MFC的框架结构下,可以进行消息处理的类的头文件里面都会含有DECLARE_MESSAGE_MAP()宏,这里主要进行消息映射和消息处理函数的声明。 所有能够进行消息处理的类都是基于CCmdTarget类的,也就是说CCmdTarget类是所有可以进行消息处理类的父类。CCmdTarget类是MFC处理命令消息的基础和核心。 基本的技术路线软件的总体结构 图模块关系总体流程Mutex1信号量来协调生产者线程和MOVE1和MOVE2线程;因为MOVE1线程和MOVE2线程共同使用临界资源BUFFER1,因为MOVE1线程和消费者线程GET1共同使用临界资源BUFFER2,MOVE2线程和消费者线程GET2共同使用临界资源BUFFER2,所以用Mutex23信号量来协调MOVE1线程和消费者线程GET1,用Mutex3信号量来协调MOVE2线程和消费者线程GET2。 4 详细设计 4.1r ThreadInfo结构体 typedef stuct ThreadInfo{ CListBox *pList; }thread,*lpthread; 此结构体用来保存在线程建立时往线程中传送的参数信息(如该线程指定的操作控件),以供在本线程中使用。 4.2 线程操作函数 4.2.1 执行函数的声明 //声明PUT线程。 DWORD WINAPI ThreadPut(LPVOID lpParameter); //声明MOVE1线程。 DWORD WINAPI ThreadMove1(LPVOID lpParameter); //声明MOVE2线程。 DWORD WINAPI ThreadMove2(LPVOID lpParameter); //声明GET线程,主要区别是能分别输出该消费的字符是哪个消费者消费的。 DWORD WINAPI ThreadGet(LPVOID lpParameter); 4.2.2 各信号量的定义 Mutex = CreateMutex(NULL,false,NULL); Mutex1 = CreateMutex(NULL,false,NULL); Mutex2 = CreateMutex(NULL,false,NULL); SemaphoreEmpty1=CreateSemaphore(NULL,m_buffer1,m_buffer1,NULL); SemaphoreFULL1=CreateSemaphore(NULL,0,m_buffer1,NULL); SemaphoreEmpty2=Cr

文档评论(0)

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

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

1亿VIP精品文档

相关文档