freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

操作系統(tǒng)進程管理演示系統(tǒng)開發(fā)(生產(chǎn)者-消費者)畢業(yè)論文(編輯修改稿)

2024-10-02 12:14 本頁面
 

【文章內(nèi)容簡介】 j≤ n), i≠ j, s( 1≤ s≤ m), t( 1≤ t ≤ m), s≠ t,盡管 ProducerI 和 ProducerJ 之間、 ConsumerS 和 ConsumerT 之間、 ProducerI 和 ConsumerS 之間不存在針對緩沖區(qū)的互斥關(guān)系 ,但由于 ProducerI、 ProducerJ、 ConsumerS 和ConsumerT 都需要在操作緩沖區(qū)的同時對緩沖區(qū)隊列進行維護,緩沖區(qū)隊列成為所有進程間的新的臨界資源,因此 ProducerI 和 ProducerJ 之間、 ConsumerS 和 ConsumerT 之間、ProducerI 和 ConsumerS 之間出現(xiàn)了針對緩沖區(qū)隊列的互斥關(guān)系。 以上這四種情形是逐個包含關(guān)系,所以我們只要設計出能完成第四種條件下的生產(chǎn)者 消費者模擬系統(tǒng)。 浙江林學院天目學院本科生畢業(yè)設計(論文) 7 2 系統(tǒng)需求分析 任務概述 目標 學生通過該演示系統(tǒng)能形象的看到進程的調(diào)度 ,以便能更加透徹的理解操作系統(tǒng)中消費者 生產(chǎn)者的同步互斥問題。 運行環(huán)境 操作系統(tǒng): WINDOWS 98/2020/XP。 編程工具 編程工具 : microsoft visual c++。 Visual C++是一個功能強大的可視化軟件開發(fā)工具。自 1993年 Microsoft公司推出Visual C++,隨著其新版本的不斷問世, Visual C++已成為專業(yè)程序員進行軟件開發(fā)的首選工具。 Visual C++ C++編譯器,而且是一個基于 Windows操作系統(tǒng)的可視化集成開發(fā)環(huán)境( integrated development environment,IDE)。 Visual C++件組成,包括編輯器、調(diào)試器以及程序向?qū)?AppWizard、類向?qū)?Class Wizard等開發(fā)工具。 這些組件通過一個名為 Developer Studio的組件集成為和諧的開發(fā)環(huán)境。 演示系統(tǒng)的分析 功能需求分析 1. 操作系統(tǒng)進程管理演示系統(tǒng)是 采用動畫和交互的方式對 生產(chǎn)者 消費者 問題 進行演示、教學 。 2. 學生可以輸入生產(chǎn)者,消費者的數(shù)量 來進行不同情形的 的演示。 系統(tǒng)功能模塊劃分 系統(tǒng)已經(jīng)設定一個大小固定的緩沖池 (緩沖池大小 11) ,緩沖池可以實時的顯示生產(chǎn)者生產(chǎn)情況和消費者的消費情況,同時 用戶可以設定生產(chǎn)者的數(shù)目來進行生產(chǎn) (生產(chǎn)者數(shù)目110);設定消費者的數(shù)目來進行消費(消費者數(shù)目 110) ,由此系統(tǒng)可以模擬上面所描述的四種 生產(chǎn)者 消費者模型 ,同時用戶可以實時的停止生產(chǎn)者及消費者的動作,做到分步展示的效果, 有效率的 起到教學 的作用。 浙江林學院天目學院本科生畢業(yè)設計(論文) 8 系統(tǒng)流程分析 P,V原語 是操作系統(tǒng)中定義的 ,通過對信號量控制從而實現(xiàn)進程間同步的最基本操作。采用 P、 V 原語解決生產(chǎn)者 消費者問題的算法 描述 [4]。 采用 P、 V 原語解決生產(chǎn)者 / 消費者問題的算法如下 : (1)信號量和互斥量的設置 :設代表緩沖池中空白緩沖區(qū)和滿緩沖區(qū)的信號量分別為Empty 和 Full ,Empty 和 Full 的初值分別為 n (緩沖池中緩沖區(qū)數(shù) ) 和 0 。設兩個互斥 量MuxProducer 和 MuxCustomer ,它們的初值都為 1。 (2) 生產(chǎn)者算法 :采集生成 數(shù) 據(jù) 。 P( Empty) 申請一個空白緩沖 ; P (MuxPro2ducer)申請對空白緩沖資源獨占使用 ; 找出一空白緩沖區(qū) ,把數(shù)據(jù)拷貝到緩沖區(qū) 。V(MuxPro2ducer)釋放對空白緩沖資源獨占使用 ; V(Full)產(chǎn)生一個滿緩沖區(qū) 。 消費者算法 :做好接收準備 。P( Full)申請一個滿緩沖 ; P(MuxCustomer)申請對滿緩沖資源獨占使用 。 找出一滿緩沖區(qū) 。把滿緩沖區(qū)中數(shù)據(jù)拷貝到用戶數(shù)據(jù)區(qū) 。 V (MuxCustomer) 釋放對滿緩沖資源獨占使用 ; V(Empty)產(chǎn)生一個空白緩沖區(qū)進行數(shù)據(jù)處理。 圖 P操作流程圖 入 口 sem=sem1 sem=sem1 S=0 喚醒等待隊列中的一個進程式 返回或轉(zhuǎn)進程調(diào)度 返回 否 是 浙江林學院天目學院本科生畢業(yè)設計(論文) 9 圖 V操作流程圖 WINDOWS 系統(tǒng)中的具體實現(xiàn)方法 在 WINDOWS 系統(tǒng)中 ,實現(xiàn)內(nèi)存共享的辦法可以采用共享變量 [5] 和共享內(nèi)存文件 [6] 等方 法。為了通用性 ,采用了以上兩種方法的結(jié)合 ,并把生產(chǎn)者和消費者中的加入數(shù)據(jù)到緩沖區(qū)和從緩沖區(qū)中取出數(shù)據(jù)的過程封裝到一個 DLL 中 [7] ,這樣 ,可以大大方便應用程序的編制 ,也使進行應用程序設計的人員不必關(guān)心該問題中具體實現(xiàn)過程。用戶程序中只需要調(diào)用該 DLL 的函數(shù)就可以實現(xiàn)所需功能 ,而且由于這些函數(shù)是在 DLL 中 ,它們在內(nèi)存中只有一個副本 ,這對當生產(chǎn)者和消費者群體數(shù)目較大時對內(nèi)存空間的節(jié)省也是很可觀的。 入 口 sem=sem1 sem=sem1 S=0 喚醒等待隊列中的一個進程式 返回或轉(zhuǎn)進程調(diào)度 返回 否 是 浙江林學院天目學院本科生畢業(yè)設計(論文) 10 3 系統(tǒng)實現(xiàn) 程序結(jié)構(gòu) 程序分為一個主函數(shù)、分別用于模擬消費和生產(chǎn)者的兩個函數(shù)以及三個輔助性的函數(shù)。主函數(shù)用于初始化緩沖區(qū)和各個同步對象,并完成線程信息的讀入和記錄,最后根據(jù)該組線程記錄啟動模擬 線程,并等待所有線程的運行結(jié)束后退出整個程序。消費者和生產(chǎn)者函數(shù)運行于相應線程中完成對緩沖區(qū)的讀寫動作,根據(jù)此處生產(chǎn)消費模型的特點,生產(chǎn)者和消費者線程之間通過同步對象的使用實現(xiàn)了生產(chǎn)和消費動作的同步與互 斥,是本系統(tǒng) 的核心所在。另外三個輔助函數(shù)被生產(chǎn)者和消費者函數(shù)調(diào)用,是上述生產(chǎn)和消費函數(shù)中對緩沖區(qū)訪問功能的一些包裝。 生產(chǎn)者 模擬函數(shù)代碼 int CProducerThread::Run() { CPCDlg *pDlg。 pDlg=(CPCDlg*)thism_Parent。 int temp=0。 int t=0。 while(pDlgm_continue){ DWORD temp=WaitForMultipleObjects(SIZE_OF_BUFFER,pDlgm_hEmptySemaphore,FALSE,INFINITE)。 pDlgm_PArray[temp]=1。 pDlgm_PStr[temp]=thism_name。 pDlgInvalidateRect(CRect(17+temp*40,17,20+(temp+1)*40,200))。 srand( (unsigned)time( NULL ) )。 t=rand()%5。 t+=1。 Sleep(t*750+500)。 pDlgm_Array[temp]=1。 pDlgm_PArray[temp]=0。 浙江林學院天目學院本科生畢業(yè)設計(論文) 11 pDlgm_PStr[temp]=。 pDlgInvalidateRect(CRect(17+temp*40,17,20+(temp+1)*40,200))。 srand( (unsigned)time( NULL ) )。 t=rand()%10。 t+=10。 ReleaseSemaphore(pDlgm_hFullSemaphore[temp],1,NULL)。 Sleep(t*100)。 } thisExitInstance()。 return CWinThread::Run()。 } 消費者模擬函數(shù)代碼 int CConsumerThread::Run() { // TODO: Add your specialized code here and/or call the base class CPCDlg *pDlg。 pDlg=(CPCDlg*)thism_Parent。 int temp=0。 int t=0。 CString str。 while(pDlgm_continue){ DWORD temp=WaitForMultipleObjects(SIZE_OF_BUFFER,pDlgm_hFullSemaphore,FALSE,INFINITE)。 pDlgm_CArray[temp]=1。 pDlgm_CStr[temp]=thism_name。 pDlgInvalidateRect(CRect(17+temp*40,17,20+(temp+1)*40,200))。 srand( (unsigned)time( NULL ) )。 t=rand()%5。 浙江林學院天目學院本科生畢業(yè)設計(論文) 12 t+=1。 Sleep(t*750+500)。 pDlgm_Array[temp]=0。 pDlgm_CArray[temp]=0。 pDlgm_CStr[temp]=。 pDlgInvalidateRect(CRect(17+temp*40,17,20+(temp+1)*40,200))。 srand( (unsigned)time( NULL ) )。 t=rand()%10。 t+=10。 ReleaseSemaphore(pDlgm_hEmptySemaphore[temp],1,NULL)。 Sleep(t*100)。 } thisExitInstance()。 return CWinThread::Run()。 } MFC 界面的設計 MFC 的介紹 MFC (Microsoft Foundation Class Library)中的各種類結(jié)合起來構(gòu)成了一個應用程序框架,它的目的就是讓程序員在此基礎上來建立 Windows下的應用程序,這是一種相對 SDK來說更為簡單的方法。因為總體上, MFC框架定義了應用程序的輪廓,并提供了用戶接口的標準實現(xiàn)方法,程序員所要做的就是通過預定義的接口把具體應用程序特有的東西填入這個輪廓。 Microsoft Visual C++提供了相應的工具來完成這個工作: AppWizard可以 用來生成初步的框架文件(代碼和資源等);資源編輯器用于幫助直觀地設計用戶接口; ClassWizard用來協(xié)助添加代碼到框架文件;最后,編譯,則通過類庫實現(xiàn)了應用程序特定的邏輯。 1. 封裝 構(gòu)成 MFC框架的是 MFC 類庫。 MFC 類庫是 C++類庫。這些類或者封裝了 Win32 應用程序編程接口,或者封裝了應用程序的概念,或者封裝了 OLE 特性,或者封裝了 ODBC 和DAO 數(shù)據(jù)訪問的功能,等等,分述如下。 ( 1)對 Win32 應用程序編程接口的封裝 用一個 C++ Object來包裝一個 Windows Object。例如: class CWnd是一個 C++ window object,浙江林學院天目學院本科生畢業(yè)設計(論文) 13 它把 Windows window(HWND)和 Windows window 有關(guān)的 API 函數(shù)封裝在 C++ window object 的成員函數(shù)內(nèi),后者的成員變量 m_hWnd 就是前者的窗口句柄。 ( 2)對應用程序概念的封裝 使用 SDK編寫 Windows 應用程序時,總要定義窗口過程,登記 Windows Class,創(chuàng)建窗口,等等。 MFC 把許多類似的處理封裝起來,替程序員完成這些工作。另外, MFC 提出了以文檔 視圖為中心的編程模式, MFC 類庫封裝了對它的支 持。文檔是用戶操作的數(shù)據(jù)對象,視圖是數(shù)據(jù)操作的窗口,用戶通過它處理、查看數(shù)據(jù)。 ( 3)對 COM/OLE 特性的封裝 OLE 建立在 COM 模型之上,由于支持 OLE 的應用程序必須實現(xiàn)一系列的接口( Interface),因而相當繁瑣。 MFC 的 OLE 類封裝了 OLE API 大量的復雜工作,這些類提供了實現(xiàn) OLE的更高級接口。 ( 4)對 ODBC 功能的封裝 以少量的能提供與 ODBC 之間更高級接口的 C++類,封裝了 ODBC API的大量的復雜的工作,提供了一種數(shù)據(jù)庫編程模式。 2. 繼承 首先, MFC 抽象出眾多類的共同特性,設 計出一些基類作為實現(xiàn)其他類的基礎。這些類中,最重要的類是 CObject 和 CCmdTarget。 CObject 是 MFC 的根類,絕大多
點擊復制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1