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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

溫馨提示

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

評論

0/150

提交評論