版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、操作系統(tǒng)實驗報告生產(chǎn)者和消費者問題姓名: 學(xué)號: 班級:、實驗內(nèi)容1 、模擬操作系統(tǒng)中進程同步和互斥;2 、實現(xiàn)生產(chǎn)者和消費者問題的算法實現(xiàn);二、實驗?zāi)康?、熟悉臨界資源、信號量及 PV操作的定義與物理意義;2、了解進程通信的方法;3、掌握進程互斥與進程同步的相關(guān)知識;4、掌握用信號量機制解決進程之間的同步與互斥問題;5、實現(xiàn)生產(chǎn)者消費者問題,深刻理解進程同步問題;三、實驗題目在Windows操作系統(tǒng)下用C語言實現(xiàn)經(jīng)典同步問題:生產(chǎn)者消費者,具體要求如下:(1) 一個大小為 1 0的緩沖區(qū),初始狀態(tài)為空。(2)2 個生產(chǎn)者,隨機等待一段時間,往緩沖區(qū)中添加數(shù)據(jù),若緩沖區(qū)已滿,等待消費者取走數(shù)據(jù)
2、之后再添加,重復(fù)10次。(3)2 個消費者,隨機等待一段時間,從緩沖區(qū)中讀取數(shù)據(jù),若緩沖區(qū)為空,等待生產(chǎn)者添加數(shù)據(jù)之后再讀取,重復(fù)10次。四、思想本實驗的主要目的是模擬操作系統(tǒng)中進程同步和互斥。 在系統(tǒng)進程并發(fā)執(zhí)行異步推進的過程中, 由于資源共享和進程間合作而造成進 程間相互制約。進程間的相互制約有兩種不同的方式。(1)間接制約。這是由于多個進程共享同一資源(如 CPU共享輸入/ 輸出設(shè)備)而引起的,即共享資源的多個進程因系統(tǒng)協(xié)調(diào)使用 資源而相互制約。2)直接制約。 只是由于進程合作中各個進程為完成同一任務(wù)而造成的,即并發(fā)進程各自的執(zhí)行結(jié)果互為對方的執(zhí)行條件, 從而限制 各個進程的執(zhí)行速度。生
3、產(chǎn)者和消費者是經(jīng)典的進程同步問題, 在這個問題中, 生產(chǎn)者 不斷的向緩沖區(qū)中寫入數(shù)據(jù), 而消費者則從緩沖區(qū)中讀取數(shù)據(jù)。 生產(chǎn) 者進程和消費者對緩沖區(qū)的操作是互斥, 即當前只能有一個進程對這 個緩沖區(qū)進行操作, 生產(chǎn)者進入操作緩沖區(qū)之前, 先要看緩沖區(qū)是否 已滿,如果緩沖區(qū)已滿, 則它必須等待消費者進程將數(shù)據(jù)取出才能寫 入數(shù)據(jù),同樣的, 消費者進程從緩沖區(qū)讀取數(shù)據(jù)之前,也要判斷緩沖 區(qū)是否為空, 如果為空, 則必須等待生產(chǎn)者進程寫入數(shù)據(jù)才能讀取數(shù) 據(jù)。在本實驗中,進程之間要進行通信來操作同一緩沖區(qū)。 一般來說, 進程間的通信根據(jù)通信內(nèi)容可以劃分為兩種: 即控制信息的傳送與大 批量數(shù)據(jù)傳送。有時,
4、也把進程間控制在本實驗中,進程之間要進行 通信來操作同一緩沖區(qū)。 一般來說,進程間的通信根據(jù)通信內(nèi)容可以 劃分為兩種:即控制信息的傳送與大批量數(shù)據(jù)傳送。有時,也把進程 間控制信息的交換稱為低級通信, 而把進程間大批量數(shù)據(jù)的交換稱為 高級通信。目前,計算機系統(tǒng)中用得比較普遍的高級通信機制可分為 3 大 類:共享存儲器系統(tǒng)、消息傳遞系統(tǒng)及管道通信系統(tǒng)。? 共享存儲器系統(tǒng)共享存儲器系統(tǒng)為了傳送大量數(shù)據(jù), 在存儲器中劃出一塊共享存 儲區(qū),諸進程可通過對共享存儲區(qū)進行讀數(shù)據(jù)或?qū)憯?shù)據(jù)以實現(xiàn)通信。進程在通信之前, 向系統(tǒng)申請共享存儲區(qū)中的一個分區(qū), 并為它指定 一個分區(qū)關(guān)鍵字。 信息的交換稱為低級通信,而把
5、進程間大批量數(shù) 據(jù)的交換稱為高級通信。? 消息傳遞系統(tǒng)在消息傳遞系統(tǒng)中, 進程間的數(shù)據(jù)交換以消息為單位, 在計算機 網(wǎng)絡(luò)中被稱為報文。消息傳遞系統(tǒng)的實現(xiàn)方式又可以分為以下兩種:(1) 直接通信方式發(fā)送進程可將消息直接發(fā)送給接收進程, 即將消息掛在接收進程 的消息緩沖隊列上,而接收進程可從自己的消息緩沖隊列中取得消 息。(2) 間接通信方式發(fā)送進程將消息發(fā)送到指定的信箱中, 而接收進程從信箱中取得 消息。這種通信方式又稱信箱通信方式, 被廣泛地應(yīng)用于計算機網(wǎng)絡(luò) 中。相應(yīng)地,該消息傳遞系統(tǒng)被稱為電子郵件系統(tǒng)。? 管道通信系統(tǒng)向管道提供輸入的發(fā)送進程, 以字符流方式將大量的數(shù)據(jù)送入管 道,而接收進程
6、從管道中接收數(shù)據(jù)。 由于發(fā)送進程和接收進程是利用 管道進行通信的,故稱為管道通信。為了協(xié)調(diào)發(fā)送和接收雙方的通信,管道通信機制必須提供以下 3方面的協(xié)調(diào)功能。1)互斥當一個進程正在對 pipe 文件進行讀或?qū)懖僮鲿r,另一個進程必 須等待。2)同步當寫進程把一定數(shù)量的數(shù)據(jù)寫入 pipe 文件后,便阻塞等待,直到讀進程取走數(shù)據(jù)后,再把寫進程喚醒。3)確認對方是否存在只有確定對方已存在時, 才能進行管道通信, 否則會造成因?qū)Ψ?不存在而無限制地等待。 在這個問題當中, 我們采用信號量機制進行 進程之間的通信,設(shè)置兩個信號量,空的信號量和滿的信號量。在Win dows系統(tǒng)中,一個或多個信號量構(gòu)成一個信號
7、量集合。使用信號量機制可以實現(xiàn)進程之間的同步和互斥, 允許并發(fā)進程一次對一組信 號量進行相同或不同的操作。每個 P、V操作不限于減1或加1,而是可以加減任何整數(shù)。 在進程終止時, 系統(tǒng)可根據(jù)需要自動消除所有 被進程操作過的信號量的影響 。1緩沖區(qū)采用循環(huán)隊列表示,利用頭、尾指針來存放、讀取數(shù)據(jù),以及判斷隊列是否為空。緩沖區(qū)中數(shù)組大小為10;2. 利用隨機函數(shù)rand()得到AZ的一個隨機字符,作為生產(chǎn)者每次生產(chǎn)的數(shù)據(jù),存放到緩沖區(qū)中;3. 使用 shmget() 系統(tǒng)調(diào)用實現(xiàn)共享主存段的創(chuàng)建, shmget() 返回 共享內(nèi)存區(qū)的 ID 。對于已經(jīng)申請到的共享段,進程需把它附加到自 己的虛擬空
8、間中才能對其進行讀寫。4. 信號量的建立采用semget()函數(shù),同時建立信號量的數(shù)量。在信號量建立后,調(diào)用semctl()對信號量進行初始化,例如本實習(xí)中, 可以建立兩個信號量 SEM_EMPTYEM_FULL初始化時設(shè)置SEM_EMPTY為10,SEM_FUL為0。使用操 作信號的函數(shù)semop()做排除式操作, 使用這個函數(shù)防止對共享內(nèi)存的同時操作。 對共享內(nèi)存操作完畢后采 用shmctl()函數(shù)撤銷共享內(nèi)存段。5. 使用循環(huán),創(chuàng)建2個生產(chǎn)者以及2個消費者,采用函數(shù)fork()創(chuàng)建一個新的進程。6. 個進程的一次操作完成后,采用函數(shù)fflush()刷新緩沖區(qū)。7. 程序最后使用semct
9、l()函數(shù)釋放內(nèi)存。模擬程序的程序流程圖如下所示:1.主程序流程圖:2.生產(chǎn)者進程流程圖+J3.消費者進程流程圖操作流程圖ir退出丄操作流程圖入口 4五、實現(xiàn)代碼為:/ #include "" #include <> #include <> #define mSIZE 3 #define pSIZE 20 static int memerymSIZE = 0;static int processpSIZE = 0;/static int processpSIZE = 2,3,2,1,5,2,4,5,3,2,5,2;/static int proces
10、spSIZE = 7,10,1,2,10,3,10,4,2,3,10,3,2,1,2,10,1,7,10,1;void build();void LRU();int main(intargc, char *argv)printf("Random sequence is as follows:n");build();printf("nInvoking LRU Algorithn: n");LRU();return 0;void build()int i = 0;for(i=0; i<pSIZE; i+)processi = (int)*rand()/
11、(RAND_MAX);printf("%d ",processi);printf("n");void LRU()int flagmSIZE = 0;int i = 0, j = 0;int m = -1, n = -1;int max = -1,maxflag = 0;int count = 0;for(i = 0; i<pSIZE; i+)/Find the first free Physical Block for(j=0; j<mSIZE; j+)if(memeryj = 0)m = j;break;/Find if there are
12、 same processes for(j = 0; j <mSIZE; j+)if(memeryj = processi)n = j;/Find free PBfor(j = 0; j <mSIZE;j+)if(flagj>maxflag)maxflag = flagj;max = j;if(n = -1) / Find no same processif(m != -1) / find free PBmemerym = processi;flagm = 0;for(j = 0;j <= m; j+)flagj+;m = -1;max = -1;else/NO fin
13、d free PBmemerymax = processi;flagmax = 0;for(j = 0;j <mSIZE; j+)flagj+;count+;else/ Find same processmemeryn = processi;flagn = 0;if(m != -1) /find free PBflagm = 0;for(j = 0;j <mSIZE; j+)flagj+;max = -1;maxflag = 0;n = -1;for(j = 0 ;j <mSIZE; j+)printf("%d ",memeryj);printf("n");printf("nThe times of page conversion is: %dn",count);六、實驗總結(jié)及思考1、本次實驗是關(guān)于生產(chǎn)者與消費者之間互斥和同步的問題。 問題 的是指是 P、V 操作,實驗設(shè)一個共享緩沖區(qū),生產(chǎn)者和消費者互斥 的使
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度鋼結(jié)構(gòu)工程裝配式建筑產(chǎn)業(yè)政策研究與咨詢合同
- 2025年度購房貸款擔保服務(wù)協(xié)議書
- 2025年度股東變更及二零二五年度股權(quán)轉(zhuǎn)讓與客戶關(guān)系維護協(xié)議
- 二零二五年度酒吧連鎖店加盟經(jīng)營合同
- 二零二五年度網(wǎng)絡(luò)安全公司員工解除勞動合同標準模板
- 二零二五年度私人房產(chǎn)買賣與房產(chǎn)交易全程顧問服務(wù)合同
- 2024藥店連鎖品牌店員勞動合同范本3篇
- 2025版土地資源整合與開發(fā)合同協(xié)議書范本3篇
- 二零二五版民營醫(yī)院科研合作與成果轉(zhuǎn)化合同4篇
- 2025版圖書批發(fā)市場加盟與銷售合作協(xié)議3篇
- 2024年高考語文備考之??甲骷易髌罚ㄏ拢褐袊F(xiàn)當代、外國
- 《裝配式蒸壓加氣混凝土外墻板保溫系統(tǒng)構(gòu)造》中
- T-CSTM 01124-2024 油氣管道工程用工廠預(yù)制袖管三通
- 2019版新人教版高中英語必修+選擇性必修共7冊詞匯表匯總(帶音標)
- 新譯林版高中英語必修二全冊短語匯總
- 基于自適應(yīng)神經(jīng)網(wǎng)絡(luò)模糊推理系統(tǒng)的游客規(guī)模預(yù)測研究
- 河道保潔服務(wù)投標方案(完整技術(shù)標)
- 品管圈(QCC)案例-縮短接臺手術(shù)送手術(shù)時間
- 精神科病程記錄
- 閱讀理解特訓(xùn)卷-英語四年級上冊譯林版三起含答案
- 清華大學(xué)考博英語歷年真題詳解
評論
0/150
提交評論