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

正文內(nèi)容

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

2022-09-07 12:14:30 本頁面
 

【正文】 sumerThread::Run() { // TODO: Add your specialized code here and/or call the base class CPCDlg *pDlg。 ReleaseSemaphore(pDlgm_hFullSemaphore[temp],1,NULL)。 pDlgInvalidateRect(CRect(17+temp*40,17,20+(temp+1)*40,200))。 Sleep(t*750+500)。 pDlgInvalidateRect(CRect(17+temp*40,17,20+(temp+1)*40,200))。 int t=0。另外三個輔助函數(shù)被生產(chǎn)者和消費者函數(shù)調(diào)用,是上述生產(chǎn)和消費函數(shù)中對緩沖區(qū)訪問功能的一些包裝。用戶程序中只需要調(diào)用該 DLL 的函數(shù)就可以實現(xiàn)所需功能 ,而且由于這些函數(shù)是在 DLL 中 ,它們在內(nèi)存中只有一個副本 ,這對當生產(chǎn)者和消費者群體數(shù)目較大時對內(nèi)存空間的節(jié)省也是很可觀的。把滿緩沖區(qū)中數(shù)據(jù)拷貝到用戶數(shù)據(jù)區(qū) 。V(MuxPro2ducer)釋放對空白緩沖資源獨占使用 ; V(Full)產(chǎn)生一個滿緩沖區(qū) 。 采用 P、 V 原語解決生產(chǎn)者 / 消費者問題的算法如下 : (1)信號量和互斥量的設(shè)置 :設(shè)代表緩沖池中空白緩沖區(qū)和滿緩沖區(qū)的信號量分別為Empty 和 Full ,Empty 和 Full 的初值分別為 n (緩沖池中緩沖區(qū)數(shù) ) 和 0 。 2. 學(xué)生可以輸入生產(chǎn)者,消費者的數(shù)量 來進行不同情形的 的演示。 Visual C++ C++編譯器,而且是一個基于 Windows操作系統(tǒng)的可視化集成開發(fā)環(huán)境( integrated development environment,IDE)。 運行環(huán)境 操作系統(tǒng): WINDOWS 98/2020/XP。因此 ConsumerI 和 ConsumerJ 之間不存在針對緩沖區(qū)的互斥關(guān)系。因此 ProducerI 和 ConsumerJ 之間不存在 針對緩沖區(qū)的互斥關(guān)系。 4. 多緩沖區(qū)的多生產(chǎn)者 多消費者問題模型限制條件:整個系統(tǒng)有 K 個緩沖區(qū),活動進程有 n 個生產(chǎn)者 Producer 和 m 個消費者 Consumer。( 2)只有在 Consumer 從緩沖區(qū)取出物品后, Producer 才能夠繼續(xù)向緩沖區(qū)中放入新生產(chǎn)的物品;因此存在 Producer 對于Consumer 的同步依賴。 ( 3)對于任意的 i( 1≤ i≤ m), j( 1≤ j≤ m), i≠ j, ConsumerI 從緩沖區(qū)中取出物品的同時, ConsumerJ 是不能從緩沖區(qū)中取出物品的。 互斥關(guān)系: ( 1)對于任意的 i( 1≤ i≤ n), j( 1≤ j≤ m), ProducerI 放入物品的同時, ConsumerJ浙江林學(xué)院天目學(xué)院本科生畢業(yè)設(shè)計(論文) 5 是不能從緩沖區(qū)中取出物品的;反之亦然。因此存在 Producer 和 Consumer 之間的互斥關(guān)系。 模型分析 1. 單緩沖區(qū)的單生產(chǎn)者 單消費者問題模型限制條件:整個系統(tǒng)僅有唯一的一個緩沖區(qū),活動進程僅有一個生產(chǎn)者 Producer 和一個消費者 Consumer。這里既要求同步 , 也需要恰當?shù)鼗コ?。因此我們可以在各進程的臨界區(qū)的兩端分別加入對于同一個初值為的 1信號量的 P, V操作 , 就可以實現(xiàn)當一個進程進人臨界區(qū)后 , 其它進程不能夠再進入臨界區(qū) , 直到先前進人臨界區(qū)的進程退出臨界區(qū)后 ,通過 V操作喚醒其它某個等待進程后 , 才會有進程再次訪問臨界資源 , 從而實現(xiàn)多個進程對于臨界資源的互斥訪問。對于多個使用同一資源的進程 , 它 們對于資源的競爭導(dǎo)致它們在執(zhí) 行時的異步性特征。在實現(xiàn)時 , 我們 可以在各進程中完成特定功能的程序段兩端加上 P操作和 V操作 , 它們分別使用不同的信號量 , 用以在各進程間傳遞信息。 進程同步的實現(xiàn) 進程同步 是指為了共同完成某項任務(wù) , 具有伙伴關(guān)系的進程在執(zhí)行時間次序上必須遵循確定的規(guī)律 。 浙江林學(xué)院天目學(xué)院本科生畢業(yè)設(shè)計(論文) 3 P(S)的具體執(zhí)行過程如下 : ① S=S1; ②若 S≥ 0, 則進程繼續(xù)執(zhí)行 ; ③若 S0, 則進程被阻塞 , 并且該進程的 PCB被插到信號量 S所對應(yīng) PCB的等待隊列的末尾。 P,V 操作的簡介 P,V操作的介紹 在操作系統(tǒng)中 P, V操 作是一種原語操作 , 是不可分割的操作 , 它要么執(zhí)行完畢 , 要么就不執(zhí)行 , 也就是說 P, V操作一旦執(zhí)行就不允許被中斷 , 直到執(zhí)行完成為止。這類題型變化多、實例多 ,又與實際生活中的問題有著緊密聯(lián)系 [3]。本文 通過具體實例 , 給出了利用、操作解決進程同步與互斥問題的簡單方法。但是以往人們只能從原理上加以理解 , 沒有直觀的認識 , 因而無法實際使用它。操作系統(tǒng)教學(xué)中有 最經(jīng)典的四個同步、互斥問題為 : 生產(chǎn)者 —— 消費者問題、哲學(xué)家進餐問題、理發(fā)師在空閑中的睡眠問題、讀者 —— 作者問題 , 深入地分析和理解這些問題 , 對全面掌握同步、互斥問題大有益處 ,對學(xué)校操作系統(tǒng)這門課也有很重要的意義。 OS是在計算機原理與數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)上的一門提高性課程,是了解和掌握計算機應(yīng)用 系統(tǒng) 的基礎(chǔ) 。本文 通過 分析 操作系統(tǒng)進程同步與互斥的問題 , 然后利用 P, V操作實現(xiàn)進程同步與互斥,并利用該算法設(shè)計了生產(chǎn)者 消費者模擬演示系統(tǒng) 。 通過 該 演示系統(tǒng) 展現(xiàn)進程的管理 (生產(chǎn)者 消費者) 可 以用于 操作系統(tǒng)的教學(xué) 中 。 其任務(wù)是了解操作系統(tǒng)的基本概念,理解計算機系統(tǒng)的資源(軟件資源和硬件資源)如何組織 , OS 如何有效地管理這些系統(tǒng)資源,用戶如何通過 OS與計算機系統(tǒng)打交道 。 開發(fā)系統(tǒng)的背景 有關(guān) 操作系統(tǒng) 的教材大多注重理論 ,而絕大多數(shù)學(xué)習(xí)者一生都不可能參于操作系統(tǒng)的研究工作 ,他們需要的是對理論 的理解和對實用系統(tǒng)的靈活應(yīng)用。在現(xiàn)代操作系統(tǒng) UNIX、 Windows 多進程環(huán)境下 ,我 們將利用 C語言實現(xiàn)多個生產(chǎn)者 消費者可視化同步運行。 在 操作系統(tǒng) 教學(xué)過程中,因為部分教科書中對生產(chǎn)者和消費者問題的解釋不夠全面,學(xué)生在理解應(yīng)用過程中 經(jīng)常出現(xiàn)一些問題。 “進程調(diào)度”涉及到操作系統(tǒng)的內(nèi)核操作,原理性較強,也較為抽象,如只是依靠書本的文字和圖形,學(xué)生理解起來會很吃力。 P, V操作主要通過對信號量的操作來實現(xiàn)對資源的控制 , 從而控制進程的執(zhí)行 。 V 操作相當于釋放資源 , 進程在使用所申請 的資源后 , 應(yīng)調(diào)用 V操作釋放所占用的資源。 多個進程為了共同完成任務(wù) , 須要按照一定的次序去執(zhí)行 , 各個進程在執(zhí)行時在時間上具有明顯的先后次序 , 即進程必須按照一定的順序去執(zhí)行。通常 , 能夠最先執(zhí)行的進程中 , P操作中所使用的信號量的初值大于 , 而其它進程中 , 第一個 P操作所對應(yīng)的信號量的初值為零。競爭到資源的進程可以立即投入運行 , 而沒有競爭到資源的進程只能阻塞自己以等待資源。 浙江林學(xué)院天目學(xué)院本科生畢業(yè)設(shè)計(論文) 4 生產(chǎn)者 消費者問題的描述 問題的描述 設(shè)有若干個生產(chǎn)者進程 P1, P2, P3,? Pl。同步存在于 p、 c 兩類進程之間 : 當緩沖池已放滿了產(chǎn)品 (供過于求 ) , 生產(chǎn)者進程必須等待 。 進程關(guān)系分析 : 同步關(guān)系: 只有在 Producer 向緩沖區(qū)放入物品后, Consumer 才能夠從緩沖區(qū)中取出物品消費;因此存在 Consumer 對于 Producer 的同步依賴。 2. 單緩沖區(qū)的多生產(chǎn)者 多消費者問題模型限制條件:整個系統(tǒng)僅有唯一的一個緩沖區(qū),活動進程有 n 個生產(chǎn)者 Producer 和 m 個消費者 Consumer。因此存在 ProducerI 和 ConsumerJ之間的互斥關(guān)系。因此存在 ConsumerI 和 ConsumerJ 之間的互斥關(guān)系。 互斥關(guān)系: ( 1)對于任意的 i( 1≤ i≤ K), j( 1≤ j≤ K), i≠ j, Producer 向空閑緩沖區(qū) Buffer[Ki]放入物品的同時, Consumer 可以從滿緩沖區(qū) Buffer[Kj]中取出物品;反之亦然。 進程關(guān)系分析 同步關(guān)系: ( 1)對于任意的 i( 1≤ i ≤ n), j( 1≤ j≤ m),只有在 ProducerI 向緩沖區(qū)放入物品后, ConsumerJ 才能夠從緩沖區(qū)中取出物品消費;因此存在 ConsumerJ 對于 ProducerI 的同步依賴。 ( 2)對于任意的 i( 1≤ i≤ n), j( 1≤ j≤ n), i≠ j, s( 1≤ s≤ K), t( 1≤ t≤ K), s≠ t, ProducerI 向空閑緩沖區(qū) Buffer[Ks]放入物品的同時,ProducerJ 是可以向另一空閑緩沖區(qū) Buffer[Kt]放入物品的。 ( 4)對于任意的 i( 1≤ i≤ n), j( 1≤ 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)系。 編程工具 編程工具 : microsoft visual c++。 Visual C++件組成,包括編輯器、調(diào)試器以及程序向?qū)?AppWizard、類向?qū)?Class Wizard等開發(fā)工具。 系統(tǒng)功能模塊劃分 系統(tǒng)已經(jīng)設(shè)定一個大小固定的緩沖池 (緩沖池大小 11) ,緩沖池可以實時的顯示生產(chǎn)者生產(chǎn)情況和消費者的消費情況,同時 用戶可以設(shè)定生產(chǎn)者的數(shù)目來進行生產(chǎn) (生產(chǎn)者數(shù)目110);設(shè)定消費者的數(shù)目來進行消費(消費者數(shù)目 110) ,由此系統(tǒng)可以模擬上面所描述的四種 生產(chǎn)者 消費者模型 ,同時用戶可以實時的停止生產(chǎn)者及消費者的動作,做到分步展示的效果, 有效率的 起到教學(xué) 的作用。設(shè)兩個互斥 量MuxProducer 和 MuxCustomer ,它們的初值都為 1。 消費者算法 :做好接收準備 。 V (MuxCustomer) 釋放對滿緩沖資源獨占使用 ; V(Empty)產(chǎn)生一個空白緩沖區(qū)進行數(shù)據(jù)處理。 入 口 sem=sem1 sem=sem1 S=0 喚醒等待隊列中的一個進程式 返回或轉(zhuǎn)進程調(diào)度 返回 否 是 浙江林學(xué)院天目學(xué)院本科生畢業(yè)設(shè)計(論文) 10 3 系統(tǒng)實現(xiàn) 程序結(jié)構(gòu) 程序分為一個主函數(shù)、分別用于模擬消費和生產(chǎn)者的兩個函數(shù)以及三個輔助性的函數(shù)。 生產(chǎn)者 模擬函數(shù)代碼 int CProducerThread::Run() { CPCDlg *pDlg。 while(pDlgm_continue){ DWORD temp=WaitForMultipleObjects(SIZE_OF_BUFFER,pDlgm_hEmptySemaphore,FALSE,INFINITE)。 srand( (unsigned)time( NULL ) )。 pDlgm_Array[temp]=1。 srand( (unsigned)time( NULL ) )。 Sleep(t*100)。 pDlg=(CPCDlg*)thism_Parent。 while(pDlgm_continue){ DWORD temp=WaitForMultipleObjects(SIZE_OF_BUFFER,pDlgm_hFullSemaphore,FALSE,INFINITE)。 srand( (unsigned)time( NULL ) )。 pDlgm_Array[temp]=0。 srand( (unsigned)time( NULL ) )。 Sleep(t*100)。因為總體上, MFC框架定義了應(yīng)用程序的輪廓,并提供了用戶接口的標準實現(xiàn)方法,程序員所要做的就是通過預(yù)定義的接口把具體應(yīng)用程序特有的東西填入這個輪廓。這些類或者封裝了 Win32 應(yīng)用程序編程接口,或者封裝了應(yīng)用程序的概念,或者封裝了 OLE 特性,或者封裝了 ODBC 和DAO 數(shù)據(jù)訪問的功能,等等,分述如下。 MFC 把許多類似的處理封裝起來,替程序員完成這些工作。 MFC 的 OLE 類封裝了 OLE API 大量的復(fù)雜工作,這些類提供了實現(xiàn) OLE的更高級接口。 CObject 是 MFC 的根類,絕大多數(shù) MFC 類是其派生的,包括 CCmdTarget。 MFC 中,任何可以處理消息的類都從
點擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1