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

正文內(nèi)容

操作系統(tǒng)進(jìn)程管理演示系統(tǒng)開(kāi)發(fā)(生產(chǎn)者-消費(fèi)者)畢業(yè)論文-在線瀏覽

2024-10-30 12:14本頁(yè)面
  

【正文】 P, V操作來(lái)改變 , 它有三種值 : S0 表示當(dāng)前可用資源的數(shù)量 ; S0 其絕對(duì)值表示當(dāng)前等待該類(lèi)資源的進(jìn)程數(shù)量 ; =0 表示 當(dāng) 前沒(méi)有可用資源也沒(méi)進(jìn)程等待該類(lèi)資源 。 浙江林學(xué)院天目學(xué)院本科生畢業(yè)設(shè)計(jì)(論文) 3 P(S)的具體執(zhí)行過(guò)程如下 : ① S=S1; ②若 S≥ 0, 則進(jìn)程繼續(xù)執(zhí)行 ; ③若 S0, 則進(jìn)程被阻塞 , 并且該進(jìn)程的 PCB被插到信號(hào)量 S所對(duì)應(yīng) PCB的等待隊(duì)列的末尾。當(dāng)釋放資源時(shí) , 進(jìn)程應(yīng)考察是否有進(jìn)程正在等待該類(lèi)資源 , 若有 , 則釋放資源的進(jìn)程有義務(wù)調(diào)用喚醒原語(yǔ)喚醒等待進(jìn)程。 進(jìn)程同步的實(shí)現(xiàn) 進(jìn)程同步 是指為了共同完成某項(xiàng)任務(wù) , 具有伙伴關(guān)系的進(jìn)程在執(zhí)行時(shí)間次序上必須遵循確定的規(guī)律 。這和進(jìn)程互斥明顯不同。在實(shí)現(xiàn)時(shí) , 我們 可以在各進(jìn)程中完成特定功能的程序段兩端加上 P操作和 V操作 , 它們分別使用不同的信號(hào)量 , 用以在各進(jìn)程間傳遞信息。這樣 , 在執(zhí)行時(shí) ,第一個(gè)進(jìn)程先執(zhí)行 , 執(zhí)行完 V操作后 , 使另一個(gè)進(jìn)程可以執(zhí)行 , 依次傳遞下去 , 就可以實(shí)現(xiàn)各個(gè)進(jìn)程按照一定的順序執(zhí)行了。對(duì)于多個(gè)使用同一資源的進(jìn)程 , 它 們對(duì)于資源的競(jìng)爭(zhēng)導(dǎo)致它們?cè)趫?zhí) 行時(shí)的異步性特征。進(jìn)程中用以訪問(wèn)這種被競(jìng)爭(zhēng)的獨(dú)占資源( 臨界資源 ) 的程序段叫做臨界區(qū)。因此我們可以在各進(jìn)程的臨界區(qū)的兩端分別加入對(duì)于同一個(gè)初值為的 1信號(hào)量的 P, V操作 , 就可以實(shí)現(xiàn)當(dāng)一個(gè)進(jìn)程進(jìn)人臨界區(qū)后 , 其它進(jìn)程不能夠再進(jìn)入臨界區(qū) , 直到先前進(jìn)人臨界區(qū)的進(jìn)程退出臨界區(qū)后 ,通過(guò) V操作喚醒其它某個(gè)等待進(jìn)程后 , 才會(huì)有進(jìn)程再次訪問(wèn)臨界資源 , 從而實(shí)現(xiàn)多個(gè)進(jìn)程對(duì)于臨界資源的互斥訪問(wèn)。 若干個(gè)消費(fèi)者進(jìn)程 C1, C2, C3,… Cm, 它們通過(guò)一個(gè)由 n 個(gè)緩沖區(qū)組成的有界緩 沖 池聯(lián)系起來(lái)。這里既要求同步 , 也需要恰當(dāng)?shù)鼗コ狻?當(dāng)緩沖池已空 ( 供不應(yīng)求 ) , 消費(fèi)者應(yīng)等待。 模型分析 1. 單緩沖區(qū)的單生產(chǎn)者 單消費(fèi)者問(wèn)題模型限制條件:整個(gè)系統(tǒng)僅有唯一的一個(gè)緩沖區(qū),活動(dòng)進(jìn)程僅有一個(gè)生產(chǎn)者 Producer 和一個(gè)消費(fèi)者 Consumer。( 2)只有在 Consumer 從緩沖區(qū)取出物品后, Producer 才能夠繼續(xù)向緩沖區(qū)中放入新生產(chǎn)的物品;因此存在 Producer 對(duì)于 Consumer 的同步依賴(lài)。因此存在 Producer 和 Consumer 之間的互斥關(guān)系。 進(jìn)程關(guān)系分析 同步關(guān)系: ( 1)對(duì)于任意的 i( 1≤ i≤ n), j( 1≤ j≤ m) ,只有在 ProducerI 向緩沖區(qū)放入物品后,ConsumerJ才能夠從緩沖區(qū)中取出物品消費(fèi);因此存在 ConsumerJ 對(duì)于 ProducerI的同步依賴(lài)。 互斥關(guān)系: ( 1)對(duì)于任意的 i( 1≤ i≤ n), j( 1≤ j≤ m), ProducerI 放入物品的同時(shí), ConsumerJ浙江林學(xué)院天目學(xué)院本科生畢業(yè)設(shè)計(jì)(論文) 5 是不能從緩沖區(qū)中取出物品的;反之亦然。 ( 2)對(duì)于任意的 i( 1≤ i≤ n), j( 1≤ j≤ n), i≠ j, ProducerI 放入物品的同時(shí), ProducerJ是不能放入物品的。 ( 3)對(duì)于任意的 i( 1≤ i≤ m), j( 1≤ j≤ m), i≠ j, ConsumerI 從緩沖區(qū)中取出物品的同時(shí), ConsumerJ 是不能從緩沖區(qū)中取出物品的。 3. 多緩沖區(qū)的單生產(chǎn)者 單消費(fèi)者問(wèn)題模型限制條件:整個(gè)系統(tǒng)有 K 個(gè)緩沖區(qū),活動(dòng)進(jìn)程僅有一個(gè)生產(chǎn)者 Producer 和一個(gè)消費(fèi)者 Consumer。( 2)只有在 Consumer 從緩沖區(qū)取出物品后, Producer 才能夠繼續(xù)向緩沖區(qū)中放入新生產(chǎn)的物品;因此存在 Producer 對(duì)于Consumer 的同步依賴(lài)。因此Producer 和 Consumer 之間不存在針對(duì)緩沖區(qū)的互斥關(guān)系。 4. 多緩沖區(qū)的多生產(chǎn)者 多消費(fèi)者問(wèn)題模型限制條件:整個(gè)系統(tǒng)有 K 個(gè)緩沖區(qū),活動(dòng)進(jìn)程有 n 個(gè)生產(chǎn)者 Producer 和 m 個(gè)消費(fèi)者 Consumer。 ( 2)對(duì)于任意的 i( 1≤ i≤ n), j( 1≤ j≤ m),只有在 ConsumerJ 從緩沖區(qū)取出物品后,浙江林學(xué)院天目學(xué)院本科生畢業(yè)設(shè)計(jì)(論文) 6 ProducerI 才能夠繼續(xù)向緩沖區(qū)中放入新生產(chǎn)的物品;因此存在 ProducerI 對(duì)于 ConsumerJ 的同步依賴(lài)。因此 ProducerI 和 ConsumerJ 之間不存在 針對(duì)緩沖區(qū)的互斥關(guān)系。因此 ProducerI 和 ProducerJ 之間不存在針對(duì)緩沖區(qū)的互斥關(guān)系。因此 ConsumerI 和 ConsumerJ 之間不存在針對(duì)緩沖區(qū)的互斥關(guān)系。 以上這四種情形是逐個(gè)包含關(guān)系,所以我們只要設(shè)計(jì)出能完成第四種條件下的生產(chǎn)者 消費(fèi)者模擬系統(tǒng)。 運(yùn)行環(huán)境 操作系統(tǒng): WINDOWS 98/2020/XP。 Visual C++是一個(gè)功能強(qiáng)大的可視化軟件開(kāi)發(fā)工具。 Visual C++ C++編譯器,而且是一個(gè)基于 Windows操作系統(tǒng)的可視化集成開(kāi)發(fā)環(huán)境( integrated development environment,IDE)。 這些組件通過(guò)一個(gè)名為 Developer Studio的組件集成為和諧的開(kāi)發(fā)環(huán)境。 2. 學(xué)生可以輸入生產(chǎn)者,消費(fèi)者的數(shù)量 來(lái)進(jìn)行不同情形的 的演示。 浙江林學(xué)院天目學(xué)院本科生畢業(yè)設(shè)計(jì)(論文) 8 系統(tǒng)流程分析 P,V原語(yǔ) 是操作系統(tǒng)中定義的 ,通過(guò)對(duì)信號(hào)量控制從而實(shí)現(xiàn)進(jìn)程間同步的最基本操作。 采用 P、 V 原語(yǔ)解決生產(chǎn)者 / 消費(fèi)者問(wèn)題的算法如下 : (1)信號(hào)量和互斥量的設(shè)置 :設(shè)代表緩沖池中空白緩沖區(qū)和滿緩沖區(qū)的信號(hào)量分別為Empty 和 Full ,Empty 和 Full 的初值分別為 n (緩沖池中緩沖區(qū)數(shù) ) 和 0 。 (2) 生產(chǎn)者算法 :采集生成 數(shù) 據(jù) 。V(MuxPro2ducer)釋放對(duì)空白緩沖資源獨(dú)占使用 ; V(Full)產(chǎn)生一個(gè)滿緩沖區(qū) 。P( Full)申請(qǐng)一個(gè)滿緩沖 ; P(MuxCustomer)申請(qǐng)對(duì)滿緩沖資源獨(dú)占使用 。把滿緩沖區(qū)中數(shù)據(jù)拷貝到用戶數(shù)據(jù)區(qū) 。 圖 P操作流程圖 入 口 sem=sem1 sem=sem1 S=0 喚醒等待隊(duì)列中的一個(gè)進(jìn)程式 返回或轉(zhuǎn)進(jìn)程調(diào)度 返回 否 是 浙江林學(xué)院天目學(xué)院本科生畢業(yè)設(shè)計(jì)(論文) 9 圖 V操作流程圖 WINDOWS 系統(tǒng)中的具體實(shí)現(xiàn)方法 在 WINDOWS 系統(tǒng)中 ,實(shí)現(xiàn)內(nèi)存共享的辦法可以采用共享變量 [5] 和共享內(nèi)存文件 [6] 等方 法。用戶程序中只需要調(diào)用該 DLL 的函數(shù)就可以實(shí)現(xiàn)所需功能 ,而且由于這些函數(shù)是在 DLL 中 ,它們?cè)趦?nèi)存中只有一個(gè)副本 ,這對(duì)當(dāng)生產(chǎn)者和消費(fèi)者群體數(shù)目較大時(shí)對(duì)內(nèi)存空間的節(jié)省也是很可觀的。主函數(shù)用于初始化緩沖區(qū)和各個(gè)同步對(duì)象,并完成線程信息的讀入和記錄,最后根據(jù)該組線程記錄啟動(dòng)模擬 線程,并等待所有線程的運(yùn)行結(jié)束后退出整個(gè)程序。另外三個(gè)輔助函數(shù)被生產(chǎn)者和消費(fèi)者函數(shù)調(diào)用,是上述生產(chǎn)和消費(fèi)函數(shù)中對(duì)緩沖區(qū)訪問(wèn)功能的一些包裝。 pDlg=(CPCDlg*)thism_Parent。 int t=0。 pDlgm_PArray[temp]=1。 pDlgInvalidateRect(CRect(17+temp*40,17,20+(temp+1)*40,200))。 t=rand()%5。 Sleep(t*750+500)。 pDlgm_PArray[temp]=0。 pDlgInvalidateRect(CRect(17+temp*40,17,20+(temp+1)*40,200))。 t=rand()%10。 ReleaseSemaphore(pDlgm_hFullSemaphore[temp],1,NULL)。 } thisExitInstance()。 } 消費(fèi)者模擬函數(shù)代碼 int CConsumerThread::Run() { // TODO: Add your specialized code here and/or call the base class CPCDlg *pDlg。 int temp=0。 CString str。 pDlgm_CArray[temp]=1。 pDlgInvalidateRect(CRect(17+temp*40,17,20+(temp+1)*40,200))。 t=rand()%5。 Sleep(t*750+500)。 pDlgm_CArray[temp]=0。 pDlgInvalidateRect(CRect(17+temp*40,17,20+(temp+1)*40,200))。 t=rand()%10。 ReleaseSemaphore(pDlgm_hEmptySemaphore[temp],1,NULL)。 } thisExitInstance()。 } MFC 界面的設(shè)計(jì) MFC 的介紹 MFC (Microsoft Foundation Class Library)中的各種類(lèi)結(jié)合起來(lái)構(gòu)成了一個(gè)應(yīng)用程序框架,它的目的就是讓程序員在此基礎(chǔ)上來(lái)建立 Windows下的應(yīng)用程序,這是一種相對(duì) SDK來(lái)說(shuō)更為簡(jiǎn)單的方法。 Microsoft Visual C++提供了相應(yīng)的工具來(lái)完成這個(gè)工作: AppWizard可以 用來(lái)生成初步的框架文件(代碼和資源等);資源編輯器用于幫助直觀地設(shè)計(jì)用戶接口; ClassWizard用來(lái)協(xié)助添加代碼到框架文件;最后,編譯,則通過(guò)類(lèi)庫(kù)實(shí)現(xiàn)了應(yīng)用程序特定的邏輯。 MFC 類(lèi)庫(kù)是 C++類(lèi)庫(kù)。 ( 1)對(duì) Win32 應(yīng)用程序編程接口的封裝 用一個(gè) C++ Object來(lái)包裝一個(gè) Windows Object。 ( 2)對(duì)應(yīng)用程序概念的封裝 使用 SDK編寫(xiě) Windows 應(yīng)用程序時(shí),總要定義窗口過(guò)程,登記 Windows Class,創(chuàng)建窗口,等等。另外, MFC 提出了以文檔 視圖為中心的編程模式, MFC 類(lèi)庫(kù)封裝了對(duì)它的支 持。 ( 3)對(duì) COM/OLE 特性的封裝 OLE 建立在 COM 模型之上,由于支持 OLE 的應(yīng)用程序必須實(shí)現(xiàn)一系列的接口( Interface),因而相當(dāng)繁瑣。 ( 4)對(duì) ODBC 功能的封裝 以少量的能提供與 ODBC 之間更高級(jí)接口的 C++類(lèi),封裝了 ODBC API的大量的復(fù)雜的工作,提供了一種數(shù)據(jù)庫(kù)編程模式。這些類(lèi)中,最重要的類(lèi)是 CObject 和 CCmdTarget。 CObject 實(shí)現(xiàn)了一些重要的特性,包括動(dòng)態(tài)類(lèi)信息、動(dòng)態(tài)創(chuàng)建、對(duì)象序列化、對(duì)程序調(diào)試的支持,等等。 CCmdTarget 通過(guò)封裝一些屬性和方法,提供了消息處理的架構(gòu)。針對(duì)每種不同的對(duì)象, MFC都設(shè)計(jì) 了一組類(lèi)對(duì)這些對(duì)象進(jìn)行封裝,每一組類(lèi)都有一個(gè)基類(lèi),從基類(lèi)派生出眾多更具體的類(lèi)。 程序員將結(jié)合自己的實(shí)際,從適當(dāng)?shù)?MFC 類(lèi)中派生出自己的類(lèi),實(shí)現(xiàn)特定的功能,達(dá)到自己的編程目的。但是作為一個(gè)編程框架,有一個(gè)問(wèn)題必須解決:如果僅僅通過(guò)虛擬函數(shù)來(lái)支持動(dòng)態(tài)約束,必然導(dǎo)致虛擬函數(shù)表過(guò)于臃腫,消耗內(nèi)存,效率低下 。如果這些函數(shù)都設(shè)計(jì)成虛擬函數(shù),由于數(shù)量太浙江林學(xué)院天目學(xué)院本科生畢業(yè)設(shè)計(jì)(論文) 14 多,實(shí)現(xiàn)起來(lái)不現(xiàn)實(shí)。這樣,通過(guò)虛擬函數(shù)和消息映射, MFC 類(lèi)提供了豐富的編程接口。 MFC 編程框架將在適當(dāng)?shù)臅r(shí)候、適當(dāng)?shù)牡胤絹?lái)調(diào)用程序的代碼。 4. MFC 的宏觀框架體系 如前所述, MFC實(shí)現(xiàn)了對(duì)應(yīng)用程序概念的封裝,把類(lèi)、類(lèi)的繼承、動(dòng)態(tài)約束、類(lèi)的關(guān)系和相互作用等封裝起來(lái)。針對(duì)不同的應(yīng)用和目的,程序員采用不同的模板。 為了支持對(duì)應(yīng)用程序概念的封裝, MFC內(nèi)部必須作大量的工作。又如,為了實(shí)現(xiàn)對(duì) DLL編程的支持和多線程編程的支持, MFC內(nèi)部使用了特別的處理方法,使用模塊狀態(tài)、線程狀態(tài)等來(lái)管理一些重要信息。 總之, MFC 封裝了 Win32 API, OLE API, ODBC API 等底層函數(shù)的功能,并提供更高一層的接口,簡(jiǎn)化了 Windows編程。 MFC提供了一個(gè) Windows應(yīng)用 程序開(kāi)發(fā)模式,對(duì)程序的控制主要是由 MFC框架完成的,而且 MFC也完成了大部分的功能,預(yù)定義或?qū)崿F(xiàn)了許多事件和消息處理,等等。 MFC是 C++類(lèi)庫(kù),程序員就是通過(guò)使用、繼承和擴(kuò)展適當(dāng)?shù)念?lèi)來(lái)實(shí)現(xiàn)特定的目的。實(shí)現(xiàn)這種功能的基礎(chǔ)是 C++對(duì)繼承的支持,對(duì)虛擬函數(shù)的支持,以及 MFC實(shí)現(xiàn)的消息映射機(jī)制 [13]。 thism_continue=true。 if( thism_np0amp。thism_np11) { (false)。 for( unsigned i=0。
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1