版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 《網(wǎng)絡(luò)操作系統(tǒng)》</b></p><p><b> 課程設(shè)計報告</b></p><p> 題 目 Linux下讀者與寫者的問題實現(xiàn)</p><p><b> 網(wǎng)絡(luò)工程系</b></p><p> 2013年 1 月1日&
2、lt;/p><p><b> 目錄</b></p><p> 1. 設(shè)計目的與要求 .......................................P3</p><p> 2. 設(shè)計思想 ............................................ P3</p><p>
3、 3. 設(shè)計分析 .............................................P3</p><p> 4. 程序?qū)崿F(xiàn) ............................................ P5</p><p> 5、 設(shè)計原理.............................................. P6<
4、/p><p> 6.程序調(diào)試 ................................................P7</p><p> 7.源程序代碼...............................................P8</p><p> 8. 程序測試結(jié)果 ..............................
5、..........P12</p><p> 9.心得與體會 ....................................... ....P13</p><p> 10.參考文獻(xiàn) .............................................P13</p><p> 一、設(shè)計目的與要求 </p><p
6、> l. 用信號量來實現(xiàn)讀者寫者問題。</p><p> 2.理解和運用信號量、PV原語、進(jìn)程間的同步互斥關(guān)系等基本知識。</p><p> 讀者寫者問題的定義如下:有一個許多進(jìn)程共享的數(shù)據(jù)區(qū),這個數(shù)據(jù)區(qū)可以是一個文件或者主存的一塊空間;有一些只讀取這個數(shù)據(jù)區(qū)的進(jìn)程(Reader)和一些只往數(shù)據(jù)區(qū)寫數(shù)據(jù)的進(jìn)程(Writer),此外還需要滿足以下條件:</p>&l
7、t;p> (1)任意多個讀進(jìn)程可以同時讀這個文件;</p><p> ?。?)一次只有一個寫進(jìn)程可以往文件中寫;</p><p> ?。?)如果一個寫進(jìn)程正在進(jìn)行操作,禁止任何讀進(jìn)程度文件。</p><p> 我們需要分兩種情況實現(xiàn)該問題:</p><p> 讀優(yōu)先:要求指一個讀者試圖進(jìn)行讀操作時,如果這時正有其他讀者在進(jìn)行操作,
8、他可直接開始讀操作,而不需要等待。</p><p> 寫優(yōu)先:一個讀者試圖進(jìn)行讀操作時,如果有其他寫者在等待進(jìn)行寫操作或正在進(jìn)行寫操作,他要等待該寫者完成寫操作后才開始讀操作。</p><p><b> 設(shè)計思想</b></p><p> 讀者寫者問題可以這樣的描述, 有一群寫者和一群讀者, 寫者在寫同一本書, 讀者也在讀這本書, 多個讀
9、者可以同時讀這本書。但是,只能有一個寫者在寫書, 并且,讀者比寫者優(yōu)先,也就是說,讀者和寫者同時提出請求時,讀者優(yōu)先。當(dāng)讀者提出請求時需要有一個互斥操作, 另外, 需要有一個信號量S來確定當(dāng)前是否可操作。</p><p> 本設(shè)計方案就是通過利用記錄型信號量對讀者寫者問題的解決過程進(jìn)行模 擬演示,形象地闡述記錄型信號量機(jī)制的工作原理。</p><p><b> 三、設(shè)計分析&
10、lt;/b></p><p> 3.1在linux環(huán)境下,使用多線程和信號量機(jī)制實現(xiàn)經(jīng)典的讀者寫者問題,每個線程代表一個讀者或一個寫者。</p><p> 每個線程按相應(yīng)測試數(shù)據(jù)文件的要求,進(jìn)行讀寫操作。請用信號量機(jī)制分別實現(xiàn)讀者優(yōu)先和寫者優(yōu)先的讀者-寫者問題。</p><p> 讀者-寫者問題的讀寫操作限制:</p><p>
11、 (1)寫-寫互斥,即不能有兩個寫者同時進(jìn)行寫操作</p><p> (2)讀-寫互斥,即不能同時有一個讀者在讀,同時卻有一個寫者在寫</p><p> (3)讀-讀允許,即可以有二個以上的讀者同時讀</p><p> 將所有的讀者和所有的寫者分別放進(jìn)兩個等待隊列中,當(dāng)讀允許時就讓讀者隊列釋放一個或多個讀者,當(dāng)寫允許時,釋放第一個寫者操作。讀者寫者問題的定義如
12、下:有一個許多進(jìn)程共享的數(shù)據(jù)區(qū),這個數(shù)據(jù)區(qū)可以是一個文件或者主存的一塊空間;有一些只讀取這個數(shù)據(jù)區(qū)的進(jìn)程(Reader)和一些只往數(shù)據(jù)區(qū)寫數(shù)據(jù)的進(jìn)程(Writer),此外還需要滿足以下條件:1)任意多個讀進(jìn)程可以同時讀這個文件;2) 一次只有一個寫進(jìn)程可以往文件中寫;3)如果一個寫進(jìn)程正在進(jìn)行操作,禁止任何讀進(jìn)程度文件。我們需要分兩種情況實現(xiàn)該問題:</p><p> 讀優(yōu)先:要求指一個讀者試圖進(jìn)行讀操作時,如
13、果這時正有其他讀者在進(jìn)行操作,他可直接開始讀操作,而不需要等待。寫優(yōu)先:一個讀者試圖進(jìn)行讀操作時,如果有其他寫者在等待進(jìn)行寫操作或正在進(jìn)行寫操作,他要等待該寫者完成寫操作后才開始讀操作。</p><p> 讀者優(yōu)先的附加限制:如果一個讀者申請進(jìn)行讀操作時已有另一讀者正在進(jìn)行讀操作,則該讀者可直接開始讀操作。</p><p> 寫者優(yōu)先的附加限制:如果一個讀者申請進(jìn)行讀操作時已有另一寫者
14、在等待訪問共享資源,則該讀者必須等到?jīng)]有寫者處于等待狀態(tài)后才能開始讀操作。</p><p> 運行結(jié)果顯示要求:要求在每個線程創(chuàng)建、發(fā)出讀寫操作申請、開始讀寫操作和結(jié)束讀寫操作時分別顯示一行提示信息,以確信所有處理都遵守相應(yīng)的讀寫操作限制</p><p> 4.2、 測試數(shù)據(jù)文件格式</p><p> 測試數(shù)據(jù)文件包括n 行測試數(shù)據(jù),分別描述創(chuàng)建的n 個線程
15、是讀者還是寫者,以及讀寫操作的開始時間和持續(xù)時間。每行測試數(shù)據(jù)包括四個字段,各字段間用空格分隔。第一字段為一個正整數(shù),表示線程序號。第二字段表示相應(yīng)線程角色,R 表示讀者是,W 表示寫者。第三字段為一個正數(shù),表示讀寫操作的開始時間。線程創(chuàng)建后,延時相應(yīng)時間(單位為秒)后發(fā)出對共享資源的讀寫申請。第四字段為一個正數(shù),表示讀寫操作的持續(xù)時間。當(dāng)線程讀寫申請成功后,開始對共享資源的讀寫操作,該操作持續(xù)相應(yīng)時間后結(jié)束,并釋放共享資源。</
16、p><p> 一個測試數(shù)據(jù)文件的例子:</p><p><b> 1 R 3 5</b></p><p><b> 2 W 4 5</b></p><p><b> 3 R 5 2</b></p><p><b> 4 R 6 5<
17、/b></p><p><b> 5 W 5.1 3</b></p><p><b> 四 程序?qū)崿F(xiàn) </b></p><p><b> 程序由兩部分組成:</b></p><p> 1。讀者-寫者模塊:包括系統(tǒng)調(diào)用接口,讀者-寫者活動描述主程序。系統(tǒng)
18、接口主要功能是通過管道向父進(jìn)程發(fā)送系統(tǒng)調(diào)用命令,并讀取父進(jìn)程送來的返回值。</p><p> 讀者-寫者活動程序根據(jù)臨界資源的共享,互斥原則編制,具體見源程序。</p><p> 2。主控模塊:主控模塊實現(xiàn)系統(tǒng)初始化系統(tǒng)調(diào)用命令接收與解釋執(zhí)行,系統(tǒng)調(diào)用功能的實現(xiàn)(包括信號量機(jī)制),及讀者-寫者活動過程記錄與顯示。</p><p> 初始化系統(tǒng)環(huán)境 &
19、#160; </p><p> 建立通信管道 </p><p> 啟動讀者-寫者進(jìn)程 </p><p><b> 接收系統(tǒng)調(diào)用命令</b></p><p><b> 解釋執(zhí)行 &
20、#160;</b></p><p><b> 五、設(shè)計原理</b></p><p> 3.1.1 讀者優(yōu)先算法:</p><p> 設(shè)置兩個互斥信號量:</p><p> rwmutex 用于寫者與其他讀者/寫者互斥的訪問共享數(shù)據(jù)rmutex 用于讀者互斥的訪問</p&
21、gt;<p> 讀者計數(shù)器 readcount</p><p> semaphore rwmutex=1, rmutex=1;</p><p> int readcount = 0; </p><p> reader i //讀者進(jìn)程 i=1,2,….
22、 </p><p><b> do{</b></p><p> P(rmutex); //讀者互斥</p><p> readcount++; //讀者數(shù)加1</p><p> if (readcount == 1) P(rwmutex); //讀者寫者
23、互斥 </p><p> V(rmutex); </p><p><b> 讀者讀數(shù)據(jù);</b></p><p> P(rmutex); </p><p> Readcount--; </p><p> if (readcount == 0) V(rwmutex
24、); </p><p> V(rmutex);</p><p> }while(1); </p><p> writer j //寫者進(jìn)程 j = 1,2,…. </p
25、><p><b> do{</b></p><p> P(rwmutex); </p><p><b> 寫文件; </b></p><p> V(rwmutex); <
26、/p><p> }while(1); </p><p> 3.2.1 寫者優(yōu)先算法:</p><p> 設(shè)置三個互斥信號量:</p><p> rwmutex 用于寫者與其他讀者/寫者互斥的訪問共享數(shù)據(jù)</p><p> rmutex 用于讀者互斥的訪問</p><p>
27、 讀者計數(shù)器readcount </p><p> nrmutex 用于寫者等待已進(jìn)入讀者退出,所有讀者退出前互斥寫操作</p><p> semaphore rwmutex= 1,rmutex= 1,nrmutex= 1; </p><p> int readcount = 0;</p><p> reader i
28、160; //讀者進(jìn)程 i=1,2,….</p><p><b> do{</b></p><p> P(rwmutex); </p><p> P(rmutex); </p><p> readcount++;</p>&l
29、t;p> if (readcount == 1) P(nrmutex); //有讀者進(jìn)入,互斥寫操作</p><p> V(rmutex);</p><p> V(rwmutex);//及時釋放讀寫互斥信號量,允許其它讀、寫進(jìn)程申請資源</p><p><b> 讀數(shù)據(jù);</b></p><p> P(r
30、mutex);</p><p> readcount--;</p><p> if (readcount == 0) V(nrmutex); //所有讀者退出,允許寫更新</p><p> V(rmutex);</p><p> }while(1);</p><p> writer j //寫者進(jìn)程 j
31、 = 1,2,….</p><p><b> do{</b></p><p> P(rwmutex); // 互斥后續(xù)其它讀者、寫者</p><p> P(nrmutex); //如有讀者正在讀,等待所有讀者讀完</p><p><b> 寫更新;</b></p
32、><p> V(nrmutex); //允許后續(xù)新的第一個讀者進(jìn)入后互斥寫操作</p><p> V(rwmutex); //允許后續(xù)新讀者及其它寫者</p><p> }while(1);</p><p><b> 六 程序調(diào)試</b></p><p>&
33、lt;b> 測試數(shù)據(jù)文件格式:</b></p><p> 測試數(shù)據(jù)文件包括n 行測試數(shù)據(jù),分別描述創(chuàng)建的n 個線程是讀者還是寫者,以及讀寫操作的開始時間和持續(xù)時間。每行測試數(shù)據(jù)包括四個字段,各字段間用空格分隔。第一字段為一個正整數(shù),表示線程序號。第二字段表示相應(yīng)線程角色,R 表示讀者是,W 表示寫者。第三字段為一個正數(shù),表示讀寫操作的開始時間。線程創(chuàng)建后,延時相應(yīng)時間(單位為秒)后發(fā)出對共享
34、資源的讀寫申請。第四字段為一個正數(shù),表示讀寫操作的持續(xù)時間。當(dāng)線程讀寫申請成功后,開始對共享資源的讀寫操作,該操作持續(xù)相應(yīng)時間后結(jié)束,并釋放共享資源。</p><p><b> 七、源程序代碼</b></p><p> #include <windows.h></p><p> #include <ctype.h>
35、 </p><p> #include <stdio.h></p><p> #include <string.h> </p><p> #include <stdlib.h> </p><p> #include <malloc.h> </p><p> #d
36、efine MAX_PERSON 100</p><p> #define c 0 //讀者</p><p> #define p 1 //寫者</p><p> #define END -1</p><p> #define R c</p><p> #define W p </p>
37、<p> typedef struct _Person { </p><p> HANDLE m_hThread; //定義處理線程的句柄</p><p> int m_nType; //進(jìn)程類型(讀寫)</p><p> int m_nStartTime; //開始時間</p><p&g
38、t; int m_nWorkTime; //運行時間</p><p> int m_nID;//進(jìn)程號 </p><p><b> }Person; </b></p><p> Person g_Persons[MAX_PERSON]; </p><p> int g_NumPerson = 0;&l
39、t;/p><p> long g_CurrentTime= 0; //基本時間片數(shù)</p><p> int g_PersonLists[] = {//進(jìn)程隊列 </p><p> 1, R, 3, 5, 2, W, 4, 5, 3, R, 5, 2, </p><p> 4, R, 6, 5, 5, W, 5,1, 3
40、</p><p><b> }; </b></p><p> int g_NumOfReading = 0;</p><p> int g_NumOfWriteRequest = 0; //申請寫進(jìn)程的個數(shù) </p><p> HANDLE g_hReadSemaphore; //讀者信號 <
41、;/p><p> HANDLE g_hWriteSemaphore; //寫者信號</p><p> bool finished = false; //所有的讀完成 </p><p> //bool wfinished = false; //所有的寫完成 </p><p> void C
42、reatePersonList(int *pPersonList); </p><p> bool CreateReader(int StartTime,int WorkTime,int ID); </p><p> bool CreateWriter(int StartTime,int WorkTime,int ID); </p><p> DWORD WI
43、NAPI ReaderProc(LPVOID lpParam);</p><p> DWORD WINAPI WriterProc(LPVOID lpParam);</p><p> int main() </p><p><b> { </b></p><p> g_hReadSemaphore = Creat
44、eSemaphore(NULL,1,100,NULL); //創(chuàng)建信號燈,當(dāng)前可用的資源數(shù)為 1,最大為100 </p><p> g_hWriteSemaphore = CreateSemaphore(NULL,1,100,NULL); //創(chuàng)建信號燈,當(dāng)前 可用的資源數(shù)為 1,最大為100</p><p> CreatePersonList(g_PersonLists);
45、 // 創(chuàng)建所有的讀者和寫者</p><p> printf("Created all the reader and writer\n...\n"); </p><p> g_CurrentTime = 0; </p><p> while(true) </p><p><b> { </b&g
46、t;</p><p> g_CurrentTime++; </p><p> Sleep(300); // 300 ms</p><p> printf("CurrentTime = %d\n",g_CurrentTime); </p><p> if(finished) return 0; </p>
47、<p> } // return 0; </p><p><b> }</b></p><p> void CreatePersonList(int *pPersonLists) </p><p><b> {</b></p><p><b> int i=0; &l
48、t;/b></p><p> int *pList = pPersonLists; </p><p> bool Ret; </p><p> while(pList[0] != END) </p><p><b> { </b></p><p> switch(pList[1])
49、 </p><p><b> { </b></p><p><b> case R: </b></p><p> Ret = CreateReader(pList[2],pList[3],pList[0]); break; </p><p><b> case W: </b
50、></p><p> Ret = CreateWriter(pList[2],pList[3],pList[0]);</p><p><b> break; </b></p><p><b> } </b></p><p><b> if(!Ret) </b>&l
51、t;/p><p> printf("Create Person %d is wrong\n",pList[0]); </p><p> pList += 4; // move to next person list</p><p><b> }</b></p><p><b> } &l
52、t;/b></p><p> DWORD WINAPI ReaderProc(LPVOID lpParam) </p><p><b> //讀過程</b></p><p><b> { </b></p><p> Person *pPerson = (Person*)lpP
53、aram; </p><p> // wait for the start time</p><p> while(g_CurrentTime != pPerson->m_nStartTime) </p><p><b> {} </b></p><p> printf("Reader%disRe
54、questing ...\n",pPerson->m_nID);printf("\n\n**********************************\n"); </p><p> // wait for the write request </p><p> WaitForSingleObject(g_hReadSemaphore,INFIN
55、ITE); </p><p> if(g_NumOfReading==0) </p><p><b> { </b></p><p> WaitForSingleObject(g_hWriteSemaphore,INFINITE); </p><p><b> } </b></p>
56、;<p> g_NumOfReading++; </p><p> ReleaseSemaphore(g_hReadSemaphore,1,NULL); </p><p> pPerson->m_nStartTime = g_CurrentTime;</p><p> printf("Reader %d is Reading t
57、he Shared Buffer...\n",pPerson->m_nID); </p><p> printf("\n\n************************************************\n"); </p><p> while(g_CurrentTime <= pPerson->m_nStartTime
58、 + pPerson->m_nWorkTime) </p><p><b> {} </b></p><p> printf("Reader %d is Exit...\n",pPerson->m_nID); </p><p> printf("\n\n**********************
59、**************************\n"); </p><p> WaitForSingleObject(g_hReadSemaphore,INFINITE); </p><p> g_NumOfReading--; </p><p> if(g_NumOfReading == 0) </p><p><
60、;b> {</b></p><p> ReleaseSemaphore(g_hWriteSemaphore,1,NULL);//此時沒有讀者,可以寫</p><p><b> } </b></p><p> ReleaseSemaphore(g_hReadSemaphore,1,NULL); </p>&
61、lt;p> if(pPerson->m_nID == 4) finished = true; //所有的讀寫完成 </p><p> ExitThread(0); </p><p> return 0; </p><p><b> } </b></p><p> DWORD WINAPI Write
62、rProc(LPVOID lpParam) </p><p><b> { </b></p><p> Person *pPerson = (Person*)lpParam; </p><p> // wait for the start time</p><p> while(g_CurrentTime !=
63、pPerson->m_nStartTime)</p><p><b> {} </b></p><p> printf("Writer %d is Requesting ...\n",pPerson->m_nID); </p><p> printf("\n\n******************
64、******************************\n"); </p><p> WaitForSingleObject(g_hWriteSemaphore,INFINITE);</p><p> // modify the writer's real start time </p><p> pPerson->m_nStar
65、tTime = g_CurrentTime; </p><p> printf("Writer %d is Writting the Shared Buffer...\n",pPerson->m_nID); </p><p> while(g_CurrentTime <= pPerson->m_nStartTime + pPerson->m_
66、nWorkTime) </p><p><b> {} </b></p><p> printf("Writer %d is Exit...\n",pPerson->m_nID); </p><p> printf("\n\n***************************************
67、*********\n"); </p><p> //g_NumOfWriteRequest--;</p><p> ReleaseSemaphore(g_hWriteSemaphore,1,NULL); </p><p> if(pPerson->m_nID == 4) finished = true;//所有的讀寫完成 </p>
68、<p> ExitThread(0); </p><p><b> return 0;</b></p><p><b> }</b></p><p> bool CreateReader(int StartTime,int WorkTime,int ID) //寫過程</p><
69、p><b> { </b></p><p> DWORD dwThreadID; </p><p> if(g_NumPerson >= MAX_PERSON) </p><p> return false; </p><p> Person *pPerson = &g_Persons[g_
70、NumPerson]; </p><p> pPerson->m_nID = ID;</p><p> pPerson->m_nStartTime = StartTime; </p><p> pPerson->m_nWorkTime = WorkTime; </p><p> pPerson->m_nType
71、 = c;</p><p> g_NumPerson++; </p><p> // 創(chuàng)建一個新的線程 </p><p> pPerson->m_hThread=</p><p> CreateThread(NULL,0,ReaderProc,(LPVOID)pPerson,0,&dwThreadID); </p&
72、gt;<p> if(pPerson->m_hThread == NULL) </p><p> return false; </p><p> return true; </p><p><b> } </b></p><p> bool CreateWriter(int StartTim
73、e,int WorkTime,int ID) </p><p><b> { </b></p><p> DWORD dwThreadID; </p><p> if(g_NumPerson >= MAX_PERSON) </p><p> return false; </p><p&g
74、t; Person *pPerson = &g_Persons[g_NumPerson];</p><p> pPerson->m_nID = ID; </p><p> pPerson->m_nStartTime = StartTime;</p><p> pPerson->m_nWorkTime = WorkTime;</
75、p><p> pPerson->m_nType = p;</p><p> g_NumPerson++; </p><p> // 創(chuàng)建一個新的線程 </p><p> pPerson->m_hThread= </p><p> CreateThread(NULL,0,WriterProc,(LPVO
76、ID)pPerson,0,&dwThreadID);</p><p> if(pPerson->m_hThread == NULL) </p><p> return false; </p><p> return true; </p><p><b> }</b></p><p
77、><b> 八、程序測試結(jié)果</b></p><p><b> 九、心得與體會</b></p><p> 這一次課程設(shè)計,讓我體會很深刻??偟母杏X,學(xué)到了很多知識,特別對于linux有了全面的接觸和了解,也開始對linux產(chǎn)生了興趣,它所開放的源碼的確為學(xué)計算機(jī)的同志們提供了很好的平臺。讀者-寫者問題經(jīng)典的線程同步問題的一個模型。經(jīng)過
78、讀者寫者問題的編寫,我對同步機(jī)構(gòu)應(yīng)用有了深入的了解。懂得了運用信號量實現(xiàn)進(jìn)程間的互斥。實現(xiàn)了不讓共享資源同時修改。用信號量上的原語操作使臨界段問題的解決比較簡單明了了。讀者寫者問題的編寫,花的時間很多,也學(xué)到很多東西。了解支持多道程序的并發(fā)操作系統(tǒng)設(shè)計中解決資源共享時進(jìn)程間的同步與互斥的信號量機(jī)制。幾天的試驗,雖然難度有點大,但只要自己花時間去學(xué)習(xí),還是會攻克困難的??傊恳淮握n程設(shè)計不僅是我們學(xué)習(xí)的好機(jī)會,而且是我們鍛煉實際動手能力的
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 操作系統(tǒng)課程設(shè)計---讀者-寫者問題實現(xiàn)
- 操作系統(tǒng)課程設(shè)計--讀者寫者問題
- 操作系統(tǒng)課程設(shè)計-讀者寫者問題
- 操作系統(tǒng)課程設(shè)計——讀者寫者問題
- 操作系統(tǒng)原理課程設(shè)計讀者-寫者問題的實現(xiàn)
- 讀者與寫者-操作系統(tǒng)課程設(shè)計實驗報告
- 《操作系統(tǒng)》課程設(shè)計--基于信號量與pv操作同步機(jī)制的讀者寫者問題的設(shè)計與實現(xiàn)
- 讀者寫者問題-操作系統(tǒng)實驗報告
- 讀者與寫者問題課程設(shè)計報告
- 操作系統(tǒng)課程設(shè)計報告-讀者寫著問題
- linux操作系統(tǒng)課程設(shè)計
- 北理工操作系統(tǒng)實驗二讀者寫者問題
- 讀者寫者課程設(shè)計
- linux課程設(shè)計報告--linux操作系統(tǒng)應(yīng)用
- 操作系統(tǒng)課程設(shè)計實現(xiàn)生產(chǎn)者消費者問題
- linux操作系統(tǒng)基礎(chǔ)課程設(shè)計
- 操作系統(tǒng)課程設(shè)計--模擬操作系統(tǒng)的實現(xiàn)
- 操作系統(tǒng)課程設(shè)計---geekos操作系統(tǒng)的研究與實現(xiàn)
- 操作系統(tǒng)課程設(shè)計——操作系統(tǒng)課程設(shè)計模擬操作系統(tǒng)
- 操作系統(tǒng)課程設(shè)計-- geekos操作系統(tǒng)的研究與實現(xiàn)
評論
0/150
提交評論