燕山大學(xué)操作系統(tǒng)課程設(shè)計(jì)說明書_第1頁
燕山大學(xué)操作系統(tǒng)課程設(shè)計(jì)說明書_第2頁
燕山大學(xué)操作系統(tǒng)課程設(shè)計(jì)說明書_第3頁
燕山大學(xué)操作系統(tǒng)課程設(shè)計(jì)說明書_第4頁
燕山大學(xué)操作系統(tǒng)課程設(shè)計(jì)說明書_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

題目:多道程序緩沖區(qū)協(xié)調(diào)操作(模擬生產(chǎn)者消費(fèi)者問題)課題負(fù)責(zé)人:班級(jí):姓名:學(xué)號(hào):A課題開發(fā)日期:2014年1月13日自評(píng)成績(jī):學(xué)院:信息科學(xué)與工程學(xué)院燕山大學(xué)課程設(shè)計(jì)說明書課程設(shè)計(jì)名稱:操作系統(tǒng)目錄TOC\o"1-5"\h\z1概述3目的3\o"CurrentDocument"主要完成的任務(wù)3\o"CurrentDocument"使用的開發(fā)工具、開發(fā)語言3\o"CurrentDocument"本軟件解決的主要問題42設(shè)計(jì)的基本理念、概念和原理4\o"CurrentDocument"設(shè)計(jì)的基本理念4基本概念4\o"CurrentDocument"基本原理53總體設(shè)計(jì)5基本的技術(shù)路線:面向?qū)ο?\o"CurrentDocument"模塊關(guān)系及總體流程54詳細(xì)設(shè)計(jì)7變量設(shè)計(jì)7\o"CurrentDocument"線程的設(shè)計(jì)7button按鈕的設(shè)計(jì)85編碼設(shè)計(jì)9開發(fā)環(huán)境9注意事項(xiàng)9\o"CurrentDocument"主要代碼設(shè)計(jì)9PUTTER線程的設(shè)計(jì)9MOVER1線程的設(shè)計(jì)10GETTER1線程的設(shè)計(jì)11“開始”按鈕的設(shè)計(jì)12“結(jié)束”按鈕的設(shè)計(jì)14解決的主要難題166測(cè)試出現(xiàn)的問題及其解決方案167工程總結(jié)168參考文獻(xiàn)16多道程序緩沖區(qū)協(xié)調(diào)操作演示程序設(shè)計(jì)說明書1概述目的計(jì)算機(jī)操作系統(tǒng)是計(jì)算機(jī)系統(tǒng)中最不可缺少的,最常用的軟件,也是核心的,最接近于計(jì)算機(jī)硬件的軟件。其特點(diǎn)是內(nèi)容繁多,概念抽象,因此造成理解困難,掌握不易。本軟件的主要目的是通過直觀的演示,使學(xué)生能夠感性的明白掌握多道程序及其進(jìn)程同步和互斥的程序設(shè)計(jì)的基本方法。主要完成的任務(wù)可隨機(jī)產(chǎn)生字符數(shù)據(jù),由生產(chǎn)者的put操作不斷將生產(chǎn)的字符數(shù)據(jù)放入容器1(Buffer1)中。通過搬運(yùn)者的Move1操作要不斷地將容器1(Buffer1)的數(shù)據(jù)取到容器2(Buffer2)中。通過搬運(yùn)者的Move2操作要不斷地將容器1(Buffer1)的數(shù)據(jù)取到容器3(Buffer3)中。通過消費(fèi)者1的GET操作不斷的從容器2(buffer2)中取出數(shù)據(jù)通過消費(fèi)者2的GET操作不斷地從容器3(Buffer3)中取出數(shù)據(jù)。生產(chǎn)者,搬運(yùn)者,消費(fèi)者的數(shù)目,buffer容量可自己設(shè)定,但數(shù)目不宜過多;默認(rèn)為生產(chǎn)者5,消費(fèi)者1為5,消費(fèi)者2為5,Move1為2,Move2為2,buffer1容量為10,buffer2容量為10,buffer3容量為10。PUT、Move1、Move2、GET1,GET2每次操作一個(gè)數(shù)據(jù),在操作的過程中數(shù)據(jù)不丟失,每個(gè)Buffer每次只能接受一個(gè)PUT或一個(gè)Move或一個(gè)Get,多個(gè)操作不能同時(shí)操作同一BUFFER。能夠?qū)崟r(shí)顯示Buffer的操作過程,以及每個(gè)Buffer的當(dāng)前放入的數(shù)據(jù),每個(gè)buffer中的數(shù)據(jù)的個(gè)數(shù)。能夠?qū)ιa(chǎn)者,搬運(yùn)者,消費(fèi)者的速度進(jìn)行自由控制。當(dāng)程序運(yùn)行開始后,計(jì)時(shí)器就開始計(jì)時(shí),直到運(yùn)行結(jié)束,顯示運(yùn)行的總時(shí)間。運(yùn)行結(jié)束后,能夠匯總總運(yùn)行時(shí)時(shí)間、已生產(chǎn)產(chǎn)品數(shù)、消費(fèi)者1已消費(fèi)產(chǎn)品數(shù)、消費(fèi)者2已消費(fèi)的產(chǎn)品數(shù)、總消費(fèi)的產(chǎn)品數(shù)。使用的開發(fā)工具、開發(fā)語言開發(fā)工具:VS2010開發(fā)語言:C++C++是面向?qū)ο蟮囊环N編程語言,窗口程序設(shè)計(jì)中MFC已經(jīng)將windows最底層的API函數(shù)以類的形式封裝好,使用方便。其特點(diǎn)有:1.面向?qū)ο?;平臺(tái)無關(guān)性;安全性;健壯性;本軟件解決的主要問題對(duì)Buffer操作的多線程同步問題,利用操作系統(tǒng)的P、V原語操作和C++語言的Thread線程對(duì)put、move、get等多線程進(jìn)行協(xié)調(diào)處理,實(shí)現(xiàn)了多線程并發(fā)執(zhí)行的原理。用程序演示了操作系統(tǒng)中經(jīng)典的生產(chǎn)者和消費(fèi)者問題。2設(shè)計(jì)的基本理念、概念和原理設(shè)計(jì)的基本理念使用VS2010創(chuàng)建了一個(gè)基本對(duì)話框類,并在對(duì)話框中添加了基本需要的所有控件:(1)buffer1,buffer2,buffer3三個(gè)LISTBOX控件,用于顯示各個(gè)buffer中的當(dāng)前內(nèi)容。(2)添加了3個(gè)編輯框控件,分別用于對(duì)3個(gè)容器(buffer)容量的控制。(3)添加1個(gè)編輯框控件用于輸入數(shù)值確定線程執(zhí)行速度。(4)添加5個(gè)編輯框控件,用于對(duì)生產(chǎn)者,移動(dòng)物流,消費(fèi)者數(shù)量的控制。五個(gè)線程用于對(duì)buffer容器的控制(PUTTER,MOVER1,MOVER2,GETTER1,GETTER2):(1)PUTTER線程產(chǎn)生隨機(jī)字符,并放入buffer1中,實(shí)現(xiàn)生產(chǎn)者的生產(chǎn)過程。(2)MOVER1,MOVER2線程分別將buffer1中的數(shù)據(jù)移動(dòng)至buffer2和buffer3中。(3)GETTER1,GETTER2線程分別將buffer2和buffer3中的數(shù)據(jù)字

符移出,實(shí)現(xiàn)消費(fèi)者的消費(fèi)過程。多個(gè)變量分別統(tǒng)計(jì)需要顯示的數(shù)據(jù):(1)三個(gè)變量分別統(tǒng)計(jì)buffer1,buffer2,buffer3中的數(shù)據(jù)并實(shí)時(shí)顯示出來。(2)五個(gè)變量進(jìn)行數(shù)據(jù)匯總,顯示最后的運(yùn)行總時(shí)間,生產(chǎn)者生產(chǎn)數(shù)量,消費(fèi)者消費(fèi)數(shù)量。通過MFC的對(duì)話框中按鈕實(shí)現(xiàn)對(duì)所有線程的控制:(1)“開始”按鈕:開始所有線程,實(shí)現(xiàn)多線程程序同步。(2)“結(jié)束”按鈕:結(jié)束所有線程,并顯示數(shù)據(jù)匯總情況。2.2基本概念面向?qū)ο?,進(jìn)程,線程,線程的同步,線程的互斥,多道程序?;驹斫?jīng)典的生產(chǎn)者與消費(fèi)者同步原理,通過互斥體和互斥信號(hào)來實(shí)現(xiàn)線程的等待,線程間的同步問題,線程之間的協(xié)調(diào)的問題。總體設(shè)計(jì)基本的技術(shù)路線:面向?qū)ο筮\(yùn)用面向?qū)ο蟮脑O(shè)計(jì)理念,設(shè)計(jì)所要求的PUTTER,MOVER1,MOVER2,GETTER1,GETTER2五個(gè)線程,達(dá)到信號(hào)量的控制,變量的值確定,實(shí)現(xiàn)BUFFER一次只能操作一個(gè)動(dòng)作,實(shí)現(xiàn)線程的同步,阻塞以及他們之間的協(xié)調(diào)問題。模塊關(guān)系及總體流程Pca對(duì)話框類:主界面設(shè)計(jì)、顯示數(shù)據(jù)、過程演.示—?―kPUTTER線程:生產(chǎn)者:執(zhí)行put操作—?MOVER1線程:搬運(yùn)者1:執(zhí)行move1操作―?MOVER2線程:搬運(yùn)者2:執(zhí)行move2操作—AGETTER1線程:消費(fèi)者1:執(zhí)行g(shù)et操作—?GETTER2線程:消費(fèi)者2:執(zhí)行g(shù)et操作圖1.模塊關(guān)系圖2.總體流程詳細(xì)設(shè)計(jì)變量設(shè)計(jì)g_hMutex1,g_hMutex2,g_hMutex3:三個(gè)互斥體,分別控制一次只能對(duì)buffer實(shí)現(xiàn)一次操作。g_hFullItems1,g_hFullItems2,g_hFullItems3g_hEmptyItems1,g_hEmptyItems2,g_hEmptyItems3:六個(gè)信號(hào)量,分別控制buffer中是否有空閑空間以及是否有數(shù)據(jù)可供移動(dòng),并進(jìn)行互斥操作。clock_t類型的start,finish變量,通過調(diào)用clock()函數(shù)得到線程運(yùn)行的總時(shí)間。structPThread{intptid;CpacDlg*dlg;};定義線程的結(jié)構(gòu)體,用于線程通過結(jié)構(gòu)體參數(shù)調(diào)用窗口類,從而實(shí)現(xiàn)線程對(duì)窗口的控制。SIZE_1,SIZE_2,SIZE_3:編輯框控件添加的變量,從而實(shí)現(xiàn)動(dòng)態(tài)對(duì)容器buffer容量的控制。SPEED:控件添加的變量,實(shí)現(xiàn)對(duì)線程速度的控制。Produce_Num,Consumer1_Num,Consumer2_Num,Move1_Num,Move2_Num:控件添加的變量,實(shí)現(xiàn)對(duì)生產(chǎn)者,消費(fèi)者,物流移動(dòng)數(shù)量的控制。Con1_Num,Pro_Num,Con2_Num,Con_Num:控件添加的變量,實(shí)現(xiàn)最終的數(shù)據(jù)統(tǒng)計(jì)匯總顯示。Buffer1,buffer2,buffer3:ListBox控件添加的控制變量,用于顯示各個(gè)buffer中的字符數(shù)據(jù)內(nèi)容。線程的設(shè)計(jì)PUTTER線程產(chǎn)生隨機(jī)字符,并放入buffer1中,實(shí)現(xiàn)生產(chǎn)者的生產(chǎn)過程。DWORDWINAPIPUTTER(LPVOIDpara)編寫代碼要有良好

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論