燕山大学操作系统课程设计说明书样本.doc
《燕山大学操作系统课程设计说明书样本.doc》由会员分享,可在线阅读,更多相关《燕山大学操作系统课程设计说明书样本.doc(24页珍藏版)》请在咨信网上搜索。
1、 燕山大学课程设计阐明书课程设计名称:操作系统 题目:多道程序缓冲区协调操作 (模仿生产者消费者问题) 课题负责人: 学院: 信息科学与工程学院 班级: 姓名: 学号: 课题开发日期:1月13日 自评成绩: A 目录1 概述-31.1 目-31.2 重要完毕任务-31.3 使用开发工具、开发语言-31.4 本软件解决重要问题 -42 设计基本理念、概念和原理-42.1 设计基本理念-42.2 基本概念-42.3 基本原理-53 总体设计-53.1基本技术路线:面向对象-53.2模块关系及总体流程-54 详细设计-74.1 变量设计-74.2 线程设计-74.3 button按钮设计-85编码设
2、计-95.1开发环境-95.2注意事项-95.3重要代码设计-9PUTTER线程设计-9MOVER1线程设计-10GETTER1线程设计-11“开始”按钮设计-12“结束”按钮设计-145.4解决重要难题-166测试浮现问题及其解决方案-167工程总结-168参照文献-16多道程序缓冲区协调操作演示程序设计阐明书1 概述1.1 目计算机操作系统是计算机系统中最不可缺少,最惯用软件,也是核心,最接近于计算机硬件软件。其特点是内容繁多,概念抽象,因而导致理解困难,掌握不易。本软件重要目是通过直观演示,使学生可以感性明白掌握多道程序及其进程同步和互斥程序设计基本办法。1.2 重要完毕任务(1) 可随
3、机产生字符数据,由生产者put操作不断将生产字符数据放入容器1(Buffer1)中。(2) 通过搬运者Move1操作要不断地将容器1(Buffer1)数据取到容器2(Buffer2)中。(3) 通过搬运者Move2操作要不断地将容器1(Buffer1)数据取到容器3(Buffer3)中。(4) 通过消费者1GET操作不断从容器2(buffer2)中取出数据(5) 通过消费者2GET操作不断地从容器3(Buffer3)中取出数据。(6) 生产者,搬运者,消费者数目,buffer容量可自己设定,但数目不适当过多;默以为生产者5,消费者1为5,消费者2为5,Move1为2,Move2为2,buffe
4、r1容量为10,buffer2容量为10,buffer3容量为10。(7) PUT、Move1、Move2、GET1,GET2每次操作一种数据,在操作过程中数据不丢失,每个Buffer每次只能接受一种PUT或一种Move或一种Get,各种操作不能同步操作同一BUFFER。(8) 可以实时显示Buffer操作过程,以及每个Buffer当前放入数据,每个buffer中数据个数。(9) 可以对生产者,搬运者,消费者速度进行自由控制。(10) 当程序运营开始后,计时器就开始计时,直到运营结束,显示运营总时间。(11) 运营结束后,可以汇总总运营时时间、已生产产品数、消费者1已消费产品数、消费者2已消费
5、产品数、总消费产品数。1.3使用开发工具、开发语言开发工具:VS开发语言:C+C+是面向对象一种编程语言,窗口程序设计中MFC已经将windows最底层API函数以类形式封装好,使用以便。 其特点有:1.面向对象; 2.平台无关性; 3.安全性; 4.健壮性;1.4本软件解决重要问题对Buffer操作多线程同步问题,运用操作系统P、V原语操作和C+语言Thread线程对put、move、get等多线程进行协调解决,实现了多线程并发执行原理。用程序演示了操作系统中典型生产者和消费者问题。2 设计基本理念、概念和原理2.1 设计基本理念使用VS创立了一种基本对话框类,并在对话框中添加了基本需要所有
6、控件:(1) buffer1,buffer2,buffer3三个LISTBOX控件,用于显示各个buffer中当前内容。(2) 添加了3个编辑框控件,分别用于对3个容器(buffer)容量控制。(3) 添加1个编辑框控件用于输入数值拟定线程执行速度。(4) 添加5个编辑框控件,用于对生产者,移动物流,消费者数量控制。五个线程用于对buffer容器控制(PUTTER,MOVER1,MOVER2,GETTER1,GETTER2):(1) PUTTER线程产生随机字符,并放入buffer1中,实现生产者生产过程。(2) MOVER1,MOVER2线程分别将buffer1中数据移动至buffer2 和
7、buffer3中。(3) GETTER1,GETTER2线程分别将buffer2和buffer3中数据字符移出,实现消费者消费过程。各种变量分别记录需要显示数据:(1) 三个变量分别记录buffer1,buffer2,buffer3中数据并实时显示出来。(2) 五个变量进行数据汇总,显示最后运营总时间,生产者生产数量,消费者消费数量 。 通过MFC对话框中按钮实现对所有线程控制:(1) “开始”按钮:开始所有线程,实现多线程程序同步。(2) “结束”按钮:结束所有线程,并显示数据汇总状况。2.2 基本概念面向对象,进程,线程,线程同步,线程互斥,多道程序。2.3 基本原理典型生产者与消费者同步
8、原理,通过互斥体和互斥信号来实现线程等待,线程间同步问题,线程之间协调问题。3.总体设计3.1基本技术路线:面向对象运用面向对象设计理念,设计所规定PUTTER,MOVER1,MOVER2,GETTER1,GETTER2五个线程,达到信号量控制,变量值拟定,实现BUFFER一次只能操作一种动作,实现线程同步,阻塞以及她们之间协调问题。Pca对话框类:主界面设计、显示数据、过程演示PUTTER线程:生产者:执行put操作MOVER1线程:搬运者1:执行move1操作GETTER1线程:消费者1:执行get 操作MOVER2线程:搬运者2:执行move2操作GETTER2线程:消费者2:执行get
9、操作3.2 模块关系及总体流程 图1. 模块关系参数设定(或使用默认数据)开始运营(速度控制)结束动态显示每个buffer中字符数据内容,移动过程以及数量数据汇总显示退出 图2.总体流程4.详细设计 4.1变量设计 g_hMutex1,g_hMutex2,g_hMutex3:三个互斥体,分别控制一次只能对buffer实现一次操作。 g_hFullItems1,g_hFullItems2,g_hFullItems3 g_hEmptyItems1,g_hEmptyItems2,g_hEmptyItems3: 六个信号量,分别控制buffer中与否有空闲空间以及与否有数据可供移动,并进行互斥操作。
10、clock_t类型 start,finish变量,通过调用clock()函数得到线程运营总时间。 struct PThread int ptid; CpacDlg * dlg;; 定义线程构造体,用于线程通过构造体参数调用窗口类,从而实现线程对窗口控制。 SIZE_1,SIZE_2,SIZE_3:编辑框控件添加变量,从而实现动态对容器buffer容量控制。 SPEED:控件添加变量,实现对线程速度控制。 Produce_Num ,Consumer1_Num ,Consumer2_Num ,Move1_Num ,Move2_Num:控件添加变量,实现对生产者,消费者,物流移动数量控制。 Con1
11、_Num ,Pro_Num ,Con2_Num ,Con_Num:控件添加变量,实现最后数据记录汇总显示。 Buffer1,buffer2,buffer3:ListBox控件添加控制变量,用于显示各个buffer中字符数据内容。4.2线程设计 PUTTER线程产生随机字符,并放入buffer1中,实现生产者生产过程。 DWORD WINAPI PUTTER(LPVOID para)/PUT线程其参数为 LPVOID para ,在创立线程时通过P_hThreadsi =CreateThread(NULL,0,PUTTER,(LPVOID)&pthread0,0,&putIDi);语句,第四个参
12、数传递了构造体参数,将当前对话框窗口类指针传递给线程函数,通过PThread * pthread = (PThread *)para;/规范化参数CpacDlg * dlg = pthread-dlg; 语句来实现对当前对话框窗口中所有参数调用。 MOVER1,MOVER2,GETTER1,GETTER2线程与PUTTER线程类似。4.3 button按钮设计 “开始”按钮: 创立每个互斥体,互斥信号以及线程。 void CpacDlg:OnBnClickedButton1()/ TODO:在此添加控件告知解决程序代码UpdateData(1);g_hMutex1 = :CreateMutex
13、(NULL,FALSE,NULL);/buff1互斥锁 g_hFullItems1 = :CreateSemaphore(NULL,0,SIZE_1,NULL); /buff1信号量 g_hEmptyItems1 = :CreateSemaphore(NULL,SIZE_1, SIZE_1,NULL); 。 。 /创立PUT线程 for (int i=0;iProduce_Num;+i)pthread0.dlg = this;pthread0.ptid = i; P_hThreadsi =CreateThread(NULL,0,PUTTER,(LPVOID)&pthread0,0,&putID
14、i);/if(P_hThreadsi = NULL) MessageBox(TEXT(线程创立错误!); 。 。 “结束”按钮: 结束每一种线程,并进行数据汇总显示到对话框上。void CpacDlg:OnBnClickedButton2() / TODO:在此添加控件告知解决程序代码/UpdateData(1);DWORD KP_Thread10;for(int i=0;idlg;int i = pthread-ptid;int j=dlg-SPEED;int speed = 1000*j;LARGE_INTEGER nFrequency;/设立随机数种子 if(:QueryPerforma
15、nceFrequency(&nFrequency) / 如果支持高性能精度计数器,则使用其初始化随机种子(微秒级) LARGE_INTEGER nStartCounter; :QueryPerformanceCounter(&nStartCounter); :srand(unsigned)nStartCounter.LowPart); else / 否则使用当前系统时间初始化随机种子(毫秒级) :srand(unsigned)time(NULL); while(true) CString buf; WaitForSingleObject(g_hEmptyItems1,INFINITE); /进
16、行P操作 WaitForSingleObject(g_hMutex1,INFINITE); /产生随机字符(A-Z)char ch;ch = char ( (rand() % 26) + 65 );buf.Format(_T(put-%c),ch);dlg-buffer1.InsertString(0,buf);dlg-Pro_Num+;/拟定生产总数量int buf1c;/拟定当前buffer1中产品数量CString str;buf1c = dlg-buffer1.GetCount();str.Format(_T(%d个),buf1c);dlg-Buffer_C.SetWindowText
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 燕山 大学 操作系统 课程设计 说明书 样本
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。