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

正文內(nèi)容

操作系統(tǒng)實驗報告經(jīng)典生產(chǎn)者—消費者問題范文大全-資料下載頁

2025-04-16 04:21本頁面
  

【正文】 oidproducer(SeqSquare*a) //生產(chǎn)者操作 {aP(1)。} voidconsumer(SeqSquare*a) //消費者操作 {aV(1)。} SeqSquare::~SeqSquare(){deleteelements。} //緩沖區(qū)顯示 voidshowbuf(SeqSquare*a){inti=agetSize()。 } intmain(){inti,n。coutn。SeqSquare*s。s=newSeqSquare(n)。while(i!=4){ couti。 switch(i) { case1: producer(s)。 if(sgeta()==0) { 13 湖北民族學院信息工程學院 11 級計算機專業(yè)操作系統(tǒng)課程設計 coutdeca()。 } break。 case2: consumer(s)。 if(sgetb()==0) { coutgetSize()getSize())n。 s=newSeqSquare(n)。 cout第五篇:實驗報告五生產(chǎn)者和消費者問題 實驗報告五 —— 生產(chǎn)者和消費者問題 姓名:叢菲學號: 20210830205班級:信息安全二班 一、實習內(nèi)容 ?? 模擬操作系統(tǒng)中進程同步和互斥 實現(xiàn)生產(chǎn)者和消費者問題的算法實現(xiàn) 二、實習目的 ? 熟悉臨界資源、信號量及 PV操作的定義與物理意義 了解進程通信的方法 掌握進程互斥與進程同步的相關知識 掌握用信號量機制解決進程之間的同步與互斥問題 實現(xiàn)生產(chǎn)者-消費者問題,深刻理解進程同步問題 三、實習題目 ?在 Linux 操作系統(tǒng)下用 C 實現(xiàn)經(jīng)典同步問題:生產(chǎn)者 — 消費者,具體要求如下: (1)一個大小為 10的緩沖區(qū),初始狀態(tài)為空。 (2)2 個生產(chǎn)者,隨機等待一段時間,往緩沖區(qū)中添加數(shù)據(jù),若緩沖區(qū)已滿,等待消費者取走數(shù)據(jù)之后再添加,重復 10 次。 (3)2 個消費者,隨機等待一段時間,從緩沖區(qū)中讀取數(shù)據(jù),若緩沖區(qū)為空,等待生產(chǎn)者添加數(shù)據(jù)之后再讀取,重復 10 次。?提示 本實驗的主要目的是模擬操作系統(tǒng)中進 程同步和互斥。在系統(tǒng)進程并發(fā)執(zhí)行異步推進的過程中,由于資源共享和進程間合作而造成進程間相互制約。進程間的相互制約有兩種不同的方式。 ( 1)間接制約。這是由于多個進程共享同一資源(如 CPU、共享輸入 /輸出設備)而引起的,即共享資源的多個進程因系統(tǒng)協(xié)調(diào)使用資源而相互制約。 ( 2)直接制約。只是由于進程合作中各個進程為完成同一任務而造成的,即并發(fā)進程各自的執(zhí)行結(jié)果互為對方的執(zhí)行條件,從而限制各個進程的執(zhí)行速度。 生產(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ù)傳送。有時,也把進程間控制在本實驗 中,進程之間要進行通信來操作同一緩沖區(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ū)關鍵字。信息的交換稱為低級通信,而把進程間大批量數(shù)據(jù)的交換稱為高級通信。 目前,計算機系統(tǒng)中用得比較普遍的高級通信機制可分為 3大類:共享存儲器系統(tǒng)、消息傳遞系統(tǒng)及管道通信系統(tǒng)。 ?消息傳遞系統(tǒng) 在消息傳遞系統(tǒng)中,進程間的數(shù)據(jù)交換以消息為單位,在計算機網(wǎng)絡中被稱為報文。消息傳遞系統(tǒng)的實現(xiàn)方式又可以 分為以下兩種:(1)直接通信方式 發(fā)送進程可將消息直接發(fā)送給接收進程,即將消息掛在接收進程的消息緩沖隊列上,而接收進程可從自己的消息緩沖隊列中取得消息。(2)間接通信方式 發(fā)送進程將消息發(fā)送到指定的信箱中,而接收進程從信箱中取得消息。這種通信方式又稱信箱通信方式,被廣泛地應用于計算機網(wǎng)絡中。相應地,該消息傳遞系統(tǒng)被稱為電子郵件系統(tǒng)。 ?管道通信系統(tǒng) 向管道提供輸入的發(fā)送進程,以字符流方式將大量的數(shù)據(jù)送入管道,而接收進程從管道中接收數(shù)據(jù)。由于發(fā)送進程和接收進程是利用管道進行通信 的,故稱為管道通信。為了協(xié)調(diào)發(fā)送和接收雙方的通信,管道通信機制必須提供以下 3方面的協(xié)調(diào)功能。( 1)互斥 當一個進程正在對 pipe 文件進行讀或?qū)懖僮鲿r,另一個進程必須等待。( 2)同步 當寫進程把一定數(shù)量的數(shù)據(jù)寫入 pipe 文件后,便阻塞等待,直到讀進程取走數(shù)據(jù)后,再把寫進程喚醒。 ( 3)確認對方是否存在只有確定對方已存在時,才能進行管道通信,否則會造成因?qū)Ψ讲淮嬖诙鵁o限制地等待。在這個問題當中,我們采用信號量機制進行進程之間的通信,設置兩個信號量,空的信號量和滿的信號量。在 Linux 系統(tǒng) 中,一個或多個信號量構(gòu)成一個信號量集合。使用信號量機制可以實現(xiàn)進程之間的同步和互斥,允許并發(fā)進程一次對一組信號量進行相同或不同的操作。每個 P、 V操作不限于減 1 或加 1,而是可以加減任何整數(shù)。在進程終止時,系統(tǒng)可根據(jù)需要自動消除所有被進程操作過的信號量的影響 1.緩沖區(qū)采用循環(huán)隊列表示,利用頭、尾指針來存放、讀取數(shù)據(jù),以及判斷隊列是否為空。緩沖區(qū)中數(shù)組大小為 10; 2.利用隨機函數(shù) rand()得到 A~ Z 的一個隨機字符,作為生產(chǎn)者每次生產(chǎn)的數(shù)據(jù),存放到緩沖區(qū)中; shmget()系 統(tǒng)調(diào)用實現(xiàn)共享主存段的創(chuàng)建, shmget()返回共享內(nèi)存區(qū)的 ID。對于已經(jīng)申請到的共享段,進程需把它附加到自己的虛擬空間中才能對其進行讀寫。 semget()函數(shù),同時建立信號量的數(shù)量。在信號量建立后,調(diào)用 semctl()對信號量進行初始化,例如本實習中,可以建立兩個信號量 SEM_EMPTY、 SEM_FULL,初始化時設置 SEM_EMPTY為 10, SEM_FULL 為 0。使用操作信號的函數(shù) semop()做排除式操作,使用這個函數(shù)防止對共享內(nèi)存的同時操作。對共享內(nèi)存操作完畢后采用 shmctl()函數(shù)撤銷共享內(nèi)存段。 ,創(chuàng)建 2個生產(chǎn)者以及 2 個消費者,采用函數(shù) fork()創(chuàng)建一個新的進程。 6.一個進程的一次操作完成后,采用函數(shù) fflush()刷新緩沖區(qū)。 7.程序最后使用 semctl()函數(shù)釋放內(nèi)存。模擬程序的程序流程圖如下所示: : 操作流程圖 操作流程圖 四、實現(xiàn)代碼為: //includeincludedefinemSIZE3definepSIZE20staticintmemery[mSIZE]={0}。staticintprocess[pSIZE]={0}。//staticintprocess[pSIZE]={2,3,2,1,5,2,4,5,3,2,5,2}。//staticintprocess[pSIZE] ={7,10,1,2,10,3,10,4,2,3,10,3,2,1,2,10,1,7,10,1}。voidbuild()。voidLRU()。 intmain(intargc,char*argv[]){printf(Randomsequenceisasfollows:\n)。build()。printf(\nInvokingLRUAlgorithn:\n)。LRU()。return0。} voidbuild(){inti=0。for(i=0。imaxflag) { maxflag=flag[j]。max=j。 } } if(n==1)//Findnosameprocess { if(m!=1)//findfreePB { memery[m]=process[i]。flag[m]=0。for(j=0。j
點擊復制文檔內(nèi)容
研究報告相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1