版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 操作系統(tǒng)課程設(shè)計(jì)報(bào)告</p><p> 題 目: 讀者寫者問題</p><p> 學(xué) 院: </p><p> 專 業(yè): </p><p> 班 級(jí): </p><p> 學(xué) 號(hào):
2、 </p><p> 姓 名: </p><p> 指導(dǎo)老師: </p><p> 目 錄</p><p> 一 設(shè)計(jì)概述……………………………………………………3</p><p> 二 設(shè)計(jì)目的與內(nèi)容……………………………………………4<
3、;/p><p> 三 設(shè)計(jì)分析……………………………………………………5</p><p> 四 程序?qū)崿F(xiàn)……………………………………………………6</p><p> 五 程序調(diào)試……………………………………………………7</p><p> 六 結(jié)果分析和討論……………………………………………7</p><p&g
4、t; 七 心得體會(huì)……………………………………………………8</p><p> 八 源代碼 ………………………………………………………8</p><p> 九 實(shí)驗(yàn)截圖……………………………………………………14</p><p><b> 一 設(shè)計(jì)概述</b></p><p> 所謂讀者寫者問題,是指保證一個(gè)
5、writer進(jìn)程必須與其他進(jìn)程互斥地訪問共享對(duì)象的同步問題。</p><p> 讀者寫者問題可以這樣的描述,有一群寫者和一群讀者,寫者在寫同一本書,讀者也在讀這本書,多個(gè)讀者可以同時(shí)讀這本書,但是,只能有一個(gè)寫者在寫書,并且,讀者必寫者優(yōu)先,也就是說,讀者和寫者同時(shí)提出請(qǐng)求時(shí),讀者優(yōu)先。當(dāng)讀者提出請(qǐng)求時(shí)需要有一個(gè)互斥操作,另外,需要有一個(gè)信號(hào)量S來當(dāng)前是否可操作。</p><p> 信
6、號(hào)量機(jī)制是支持多道程序的并發(fā)操作系統(tǒng)設(shè)計(jì)中解決資源共享時(shí)進(jìn)程間的同步與互斥的重要機(jī)制,而讀者寫者問題則是這一機(jī)制的一個(gè)經(jīng)典范例。</p><p> 與記錄型信號(hào)量解決讀者—寫者問題不同,信號(hào)量機(jī)制它增加了一個(gè)限制,即最多允許RN個(gè)讀者同時(shí)讀。為此,又引入了一個(gè)信號(hào)量L,并賦予初值為RN,通過執(zhí)行wait(L,1,1)操作,來控制讀者的數(shù)目,每當(dāng)有一個(gè)讀者進(jìn)入時(shí),就要執(zhí)行wait(L,1,1)操作,使L的值減1。
7、當(dāng)有RN個(gè)讀者進(jìn)入讀后,L便減為0,第RN+1 個(gè)讀者要進(jìn)入讀時(shí),必然會(huì)因wait(L,1,1)操作失敗而堵塞。對(duì)利用信號(hào)量來解決讀者—寫者問題的描述如下:</p><p> Var RN integer;L,mx:semaphore: =RN,1;</p><p><b> Begin</b></p><p><b> Par
8、begin</b></p><p> Reader :begin</p><p><b> Repeat</b></p><p> Swait(L,1,1);</p><p> Swait(mx,1,0); .</p>
9、<p> Perform reader operation;</p><p> Ssignal(L,1);</p><p> Until false;</p><p><b> End</b></p><p> Writer :begin</p><p><b>
10、 Repeat</b></p><p> Swait(mx ,1,1,l,RN,0);</p><p> Perform writer operation;</p><p> Ssignal(mx,1);</p><p> Until false;</p><p><b> End&l
11、t;/b></p><p><b> Parend</b></p><p><b> End</b></p><p> 其中,Swait(mx,1,0)語句起著開關(guān)作用,只要無Writer進(jìn)程進(jìn)入些,mx=1,reader進(jìn)程就都可以進(jìn)入讀。但是要一旦有Writer進(jìn)程進(jìn)入寫時(shí),其MX=0,則任何reader進(jìn)
12、程就都無法進(jìn)入讀。Swait(mx ,1,1,l,RN,0)語句表示僅當(dāng)既無Write進(jìn)程在寫(mx=1),又無reader進(jìn)程在讀(L=RN)時(shí),writer進(jìn)程才能進(jìn)入臨界區(qū)寫。</p><p> 本設(shè)計(jì)方案就是通過利用記錄型信號(hào)量對(duì)讀者寫者問題的解決過程進(jìn)行模擬演示,形象地闡述記錄型信號(hào)量機(jī)制的工作原理。</p><p><b> 二 設(shè)計(jì)目的與內(nèi)容</b>
13、</p><p><b> 一 實(shí)驗(yàn)?zāi)康?lt;/b></p><p> l. 用信號(hào)量來實(shí)現(xiàn)讀者寫者問題。</p><p> 2. 理解和運(yùn)用信號(hào)量、PV原語、進(jìn)程間的同步互斥關(guān)系等基本知識(shí)。二、二 實(shí)驗(yàn)內(nèi)容</p><p> 讀者寫者問題的定義如下:有一個(gè)許多進(jìn)程共享的數(shù)據(jù)區(qū),這個(gè)數(shù)據(jù)區(qū)可以是一個(gè)文件或者主存的一塊
14、空間;有一些只讀取這個(gè)數(shù)據(jù)區(qū)的進(jìn)程(Reader)和一些只往數(shù)據(jù)區(qū)寫數(shù)據(jù)的進(jìn)程(Writer),此外還需要滿足以下條件:</p><p> ?。?) 任意多個(gè)讀進(jìn)程可以同時(shí)讀這個(gè)文件;</p><p> ?。?) 一次只有一個(gè)寫進(jìn)程可以往文件中寫;</p><p> ?。?)
15、0; 如果一個(gè)寫進(jìn)程正在進(jìn)行操作,禁止任何讀進(jìn)程度文件。</p><p> 我們需要分兩種情況實(shí)現(xiàn)該問題:</p><p> 讀優(yōu)先:要求指一個(gè)讀者試圖進(jìn)行讀操作時(shí),如果這時(shí)正有其他讀者在進(jìn)行操作,他可直接開始讀操作,而不需要等待。</p><p> 寫優(yōu)先:一個(gè)讀者試圖進(jìn)行讀操作時(shí),如果有其他寫者在等待進(jìn)行寫操作或正在進(jìn)行寫操作,他要等待該寫者完
16、成寫操作后才開始讀操作。</p><p><b> 三設(shè)計(jì)分析</b></p><p> 在Windows 7 環(huán)境下,創(chuàng)建一個(gè)包含n 個(gè)線程的控制臺(tái)進(jìn)程。用這n 個(gè)線程來表示n個(gè)讀者或?qū)懻?。每個(gè)線程按相應(yīng)測試數(shù)據(jù)文件的要求,進(jìn)行讀寫操作。請(qǐng)用信號(hào)量機(jī)制分別實(shí)現(xiàn)讀者優(yōu)先和寫者優(yōu)先的讀者-寫者問題。</p><p> 讀者-寫者問題的讀寫操
17、作限制:</p><p> 讀者-寫者的讀寫限制(包括讀者優(yōu)先和寫者優(yōu)先)</p><p> 1)寫-寫互斥,即不能有兩個(gè)寫者同時(shí)進(jìn)行寫操作</p><p> 2)讀-寫互斥,即不能同時(shí)有一個(gè)讀者在讀,同時(shí)卻有一個(gè)寫者在寫</p><p> 3)讀讀允許,即可以有2個(gè)以上的讀者同時(shí)讀</p><p> 將所有
18、的讀者和所有的寫者分別放進(jìn)兩個(gè)等待隊(duì)列中,當(dāng)讀允許時(shí)就讓讀者隊(duì)列釋放一個(gè)或多個(gè)讀者,當(dāng)寫允許時(shí),釋放第一個(gè)寫者操作。讀者寫者問題的定義如下:有一個(gè)許多進(jìn)程共享的數(shù)據(jù)區(qū),這個(gè)數(shù)據(jù)區(qū)可以是一個(gè)文件或者主存的一塊空間;有一些只讀取這個(gè)數(shù)據(jù)區(qū)的進(jìn)程(Reader)和一些只往數(shù)據(jù)區(qū)寫數(shù)據(jù)的進(jìn)程(Writer),此外還需要滿足以下條件:1)任意多個(gè)讀進(jìn)程可以同時(shí)讀這個(gè)文件;2) 一次只有一個(gè)寫進(jìn)程可以往文件中寫;3)如果一個(gè)寫進(jìn)程正在進(jìn)行操作,禁止
19、任何讀進(jìn)程度文件。我們需要分兩種情況實(shí)現(xiàn)該問題:</p><p> 讀優(yōu)先:要求指一個(gè)讀者試圖進(jìn)行讀操作時(shí),如果這時(shí)正有其他讀者在進(jìn)行操作,他可直接開始讀操作,而不需要等待。寫優(yōu)先:一個(gè)讀者試圖進(jìn)行讀操作時(shí),如果有其他寫者在等待進(jìn)行寫操作或正在進(jìn)行寫操作,他要等待該寫者完成寫操作后才開始讀操作。</p><p><b> 四 程序?qū)崿F(xiàn) </b><
20、/p><p><b> 程序由兩部分組成:</b></p><p> 1。讀者-寫者模塊:包括系統(tǒng)調(diào)用接口,讀者-寫者活動(dòng)描述主程序。系統(tǒng)接口主要功能是通過管道向父進(jìn)程發(fā)送系統(tǒng)調(diào)用命令,并讀取父進(jìn)程送來的返回值。</p><p> 讀者-寫者活動(dòng)程序根據(jù)臨界資源的共享,互斥原則編制,具體見源程序。</p><p>
21、2。主控模塊:主控模塊實(shí)現(xiàn)系統(tǒng)初始化系統(tǒng)調(diào)用命令接收與解釋執(zhí)行,系統(tǒng)調(diào)用功能的實(shí)現(xiàn)(包括信號(hào)量機(jī)制),及讀者-寫者活動(dòng)過程記錄與顯示。</p><p> 初始化系統(tǒng)環(huán)境 </p><p> 建立通信管道 </p><p> 啟動(dòng)讀者-寫者進(jìn)程 &
22、#160;</p><p><b> 接收系統(tǒng)調(diào)用命令</b></p><p><b> 解釋執(zhí)行 </b></p><p><b> 五 程序調(diào)試</b></p><p><b> 測試數(shù)據(jù)文件格式:</b>&l
23、t;/p><p> 測試數(shù)據(jù)文件包括n 行測試數(shù)據(jù),分別描述創(chuàng)建的n 個(gè)線程是讀者還是寫者,以及讀寫操作的開始時(shí)間和持續(xù)時(shí)間。每行測試數(shù)據(jù)包括四個(gè)字段,各字段間用空格分隔。第一字段為一個(gè)正整數(shù),表示線程序號(hào)。第二字段表示相應(yīng)線程角色,R 表示讀者是,W 表示寫者。第三字段為一個(gè)正數(shù),表示讀寫操作的開始時(shí)間。線程創(chuàng)建后,延時(shí)相應(yīng)時(shí)間(單位為秒)后發(fā)出對(duì)共享資源的讀寫申請(qǐng)。第四字段為一個(gè)正數(shù),表示讀寫操作的持續(xù)時(shí)間。當(dāng)
24、線程讀寫申請(qǐng)成功后,開始對(duì)共享資源的讀寫操作,該操作持續(xù)相應(yīng)時(shí)間后結(jié)束,并釋放共享資源。</p><p><b> 六 結(jié)果分析和討論</b></p><p> 在讀者寫者同時(shí)在隊(duì)列中等待申請(qǐng)資時(shí),讀者優(yōu)先調(diào)用資源。而且如果一個(gè)讀者申請(qǐng)進(jìn)行讀操作時(shí)已有另一讀者正在進(jìn)行讀操作,則該讀者可直接開始讀操作,即讀讀允許。</p><p> 進(jìn)程1
25、是R操作,在時(shí)間3時(shí)進(jìn)入隊(duì)列,運(yùn)行時(shí)間是5,在它進(jìn)入時(shí)沒有進(jìn)程占用資源,它既占用資源;知道它釋放資源,等候的進(jìn)程有3,4,5;</p><p> 進(jìn)程2是W操作,在時(shí)間16時(shí)進(jìn)入隊(duì)列,運(yùn)行時(shí)間是5,在它進(jìn)入時(shí)進(jìn)程4占用資源,它等待資源,當(dāng)4釋放時(shí)占用資源;</p><p> 進(jìn)程3是R操作,在時(shí)間5時(shí)進(jìn)入隊(duì)列,運(yùn)行時(shí)間是2,在它進(jìn)入時(shí)進(jìn)程1占用資源,它等待資源,當(dāng)進(jìn)程1釋放資源后,由于
26、讀者優(yōu)先,進(jìn)程3,5同時(shí)調(diào)運(yùn)資源;</p><p> 進(jìn)程4是R操作,在時(shí)間6時(shí)進(jìn)入隊(duì)列,運(yùn)行時(shí)間是5,在它進(jìn)入時(shí)進(jìn)程1占用資源,它等待資源,當(dāng)進(jìn)程1釋放資源后,由于讀者優(yōu)先,進(jìn)程3,5占用資源,它依然等待,直到進(jìn)程3,5都結(jié)束;</p><p> 進(jìn)程5是W操作,在時(shí)間4時(shí)進(jìn)入隊(duì)列,運(yùn)行時(shí)間是3, 在它進(jìn)入時(shí)進(jìn)程1占用資源,它等待資源,當(dāng)進(jìn)程1釋放資源后,由于讀者優(yōu)先,進(jìn)程3,5同時(shí)
27、調(diào)運(yùn)資源;</p><p><b> 七 心得體會(huì)</b></p><p> 這一次課程設(shè)計(jì),讓我體會(huì)很深刻。讀者-寫者問題經(jīng)典的線程同步問題的一個(gè)模型。經(jīng)過讀者寫者問題的編寫,我對(duì)同步機(jī)構(gòu)應(yīng)用有了深入的了解。懂得了運(yùn)用信號(hào)量實(shí)現(xiàn)進(jìn)程間的互斥。實(shí)現(xiàn)了不讓共享資源同時(shí)修改。用信號(hào)量上的原語操作使臨界段問題的解決比較簡單明了了。讀者寫者問題的編寫,花的時(shí)間很多,也學(xué)到
28、很多東西。了解支持多道程序的并發(fā)操作系統(tǒng)設(shè)計(jì)中解決資源共享時(shí)進(jìn)程間的同步與互斥的信號(hào)量機(jī)制。幾天的試驗(yàn),雖然難度有點(diǎn)大,但只要自己花時(shí)間去學(xué)習(xí),還是會(huì)攻克困難的。</p><p> 總之,每一次課程設(shè)計(jì)不僅是我們學(xué)習(xí)的好機(jī)會(huì),而且是我們鍛煉實(shí)際動(dòng)手能力的平臺(tái),雖然有難度的東西總會(huì)讓人很抵觸,比如在課設(shè)過程中有很多郁悶的時(shí)候,一個(gè)小小的錯(cuò)誤一不小心就花去了自己一上午的時(shí)間,所以在這個(gè)過程中能夠磨練人的意志與耐心,
29、最后感謝鄒云康老師的指導(dǎo)與監(jiān)督。</p><p><b> 八 源代碼</b></p><p> #include <windows.h></p><p> #include <ctype.h></p><p> #include <stdio.h></p>&l
30、t;p> #include <string.h></p><p> #include <stdlib.h></p><p> #include <malloc.h></p><p> #define MAX_PERSON 100</p><p> #def
31、ine READER 0 //讀者</p><p> #define WRITER 1 //寫者</p><p> #define END
32、; -1</p><p> #define R READER</p><p> #define W &
33、#160; WRITER</p><p> typedef struct _Person</p><p><b> {</b></p><p> HANDLE m_hThread;//定義處理線程的句柄</p><p> int m_nType;//進(jìn)程類型(讀寫)
34、</p><p> int m_nStartTime;//開始時(shí)間</p><p> int m_nWorkTime;//運(yùn)行時(shí)間</p><p> int m_nID;//進(jìn)程號(hào)</p><p><b> }Pers
35、on;</b></p><p> Person g_Persons[MAX_PERSON];</p><p> int g_NumPerson = 0;</p><p> long g_CurrentTime= 0;//基本時(shí)間片數(shù)</p><p> int
36、60; g_PersonLists[] = {//進(jìn)程隊(duì)列</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, END,};</p><p> int g_N
37、umOfReading = 0;</p><p> int g_NumOfWriteRequest = 0;//申請(qǐng)寫進(jìn)程的個(gè)數(shù)</p><p> HANDLE g_hReadSemaphore;//讀者信號(hào)</p><p> HANDLE g_hWriteSemaphore;//寫者信號(hào)</p><p&
38、gt; bool finished = false; //所有的讀完成</p><p> //bool wfinished = false; //所有的寫完成</p><p> void CreatePersonList(int *pPersonList);</p><p> bool CreateReader(int StartTi
39、me,int WorkTime,int ID);</p><p> bool CreateWriter(int StartTime,int WorkTime,int ID);</p><p> DWORD WINAPI ReaderProc(LPVOID lpParam);</p><p> DWOR
40、D WINAPI WriterProc(LPVOID lpParam);</p><p> int main()</p><p><b> {</b></p><p> g_hReadSemaphore = CreateSemaphore(NULL,1,100,NULL); //
41、創(chuàng)建信號(hào)燈,當(dāng)前可用的資源數(shù)為1,最大為100</p><p> g_hWriteSemaphore = CreateSemaphore(NULL,1,100,NULL); //創(chuàng)建信號(hào)燈,當(dāng)前可用的資源數(shù)為1,最大為100</p><p> CreatePersonList(g_PersonLists); // Create All the reader and writers<
42、;/p><p> printf("Created all the reader and writer\n...\n");</p><p> g_CurrentTime = 0;</p><p> while(true)</p><p><b> {</b></p><p>
43、 g_CurrentTime++;</p><p> Sleep(300); // 300 ms</p><p> printf("CurrentTime = %d\n",g_CurrentTime);</p><p> if(finished) return 0;</p><p> } // return 0;
44、</p><p><b> }</b></p><p> void CreatePersonList(int *pPersonLists)</p><p><b> {</b></p><p><b> int i=0;</b></p><
45、;p> int *pList = pPersonLists;</p><p><b> bool Ret;</b></p><p> while(pList[0] != END)</p><p><b> {</b></p><p> switch(pList[1])&l
46、t;/p><p><b> {</b></p><p><b> case R:</b></p><p> Ret = CreateReader(pList[2],pList[3],pList[0]);//351,w452,523,654</p><p> break; case W:</
47、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></p>&l
48、t;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> }</b></p
49、><p> DWORD WINAPI ReaderProc(LPVOID lpParam)//讀過程</p><p><b> {</b></p><p> Person *pPerson = (Person*)lpParam;</p><p> // wait for the start time<
50、;/p><p> while(g_CurrentTime != pPerson->m_nStartTime)</p><p><b> { }</b></p><p> printf("Reader %d is Requesting ...\n",pPerson->m_nID);</p><
51、p> printf("\n\n************************************************\n");</p><p> // wait for the write request</p><p> WaitForSingleObject(g_hReadSemaphore,INFINITE); if(g_NumOfReadi
52、ng ==0)</p><p><b> {</b></p><p> WaitForSingleObject(g_hWriteSemaphore,INFINITE); }</p><p> g_NumOfReading++;</p><p> ReleaseSemaphore(g_hReadSemaphore,
53、1,NULL);</p><p> pPerson->m_nStartTime = g_CurrentTime;</p><p> printf("Reader %d is Reading the Shared Buffer...\n",pPerson->m_nID);</p><p> printf("\n\n***
54、*********************************************\n");</p><p> while(g_CurrentTime <= pPerson->m_nStartTime + pPerson->m_nWorkTime)</p><p><b> {}</b></p><p>
55、 printf("Reader %d is Exit...\n",pPerson->m_nID);</p><p> printf("\n\n************************************************\n");</p><p> WaitForSingleObject(g_hReadSemaphore
56、,INFINITE);</p><p> g_NumOfReading--;</p><p> if(g_NumOfReading == 0)</p><p> {ReleaseSemaphore(g_hWriteSemaphore,1,NULL);//此時(shí)沒有讀者,可以寫</p><p><b> }</b>&
57、lt;/p><p> ReleaseSemaphore(g_hReadSemaphore,1,NULL);</p><p> if(pPerson->m_nID == 4) finished = true; //所有的讀寫完成</p><p> ExitThread(0);</p><p><b> return 0;&l
58、t;/b></p><p><b> }</b></p><p> DWORD WINAPI WriterProc(LPVOID lpParam)</p><p><b> {</b></p><p> Person *pPerson = (Person*)lpParam;
59、</p><p> // wait for the start time</p><p> while(g_CurrentTime != pPerson->m_nStartTime)</p><p><b> {}</b></p><p> printf("Writer %d is Request
60、ing ...\n",pPerson->m_nID);</p><p> printf("\n\n************************************************\n");</p><p> WaitForSingleObject(g_hWriteSemaphore,INFINITE);</p><
61、p> // modify the writer's real start time</p><p> pPerson->m_nStartTime = g_CurrentTime;</p><p> printf("Writer %d is Writting the Shared Buffer...\n",pPerson->m_nID);&
62、lt;/p><p> while(g_CurrentTime <= pPerson->m_nStartTime + pPerson->m_nWorkTime)</p><p><b> {}</b></p><p> printf("Writer %d is Exit...\n",pPerson->
63、m_nID);</p><p> printf("\n\n************************************************\n");</p><p> //g_NumOfWriteRequest--;</p><p> ReleaseSemaphore(g_hWriteSemaphore,1,NULL);&l
64、t;/p><p> if(pPerson->m_nID == 4) finished = true;//所有的讀寫完成</p><p> ExitThread(0);</p><p><b> return 0;</b></p><p><b> }</b></p><
65、p> bool CreateReader(int StartTime,int WorkTime,int ID)</p><p><b> {</b></p><p> DWORD dwThreadID;</p><p> if(g_NumPerson >= MAX_PERSON)</p><p>
66、return false;</p><p> Person *pPerson = &g_Persons[g_NumPerson];</p><p> pPerson->m_nID = ID;</p><p> pPerson->m_nStartTime = StartTime;</p><p> pPerson-&
67、gt;m_nWorkTime = WorkTime;</p><p> pPerson->m_nType = READER;</p><p> g_NumPerson++;</p><p> // Create an New Thread</p><p> pPerson->m_hThread= CreateThread(
68、NULL,0,ReaderProc,(LPVOID)pPerson,0,&dwThreadID);</p><p> if(pPerson->m_hThread == NULL)</p><p> return false;</p><p> return true;</p><p><b> }</b&
69、gt;</p><p> bool CreateWriter(int StartTime,int WorkTime,int ID)</p><p><b> {</b></p><p> DWORD dwThreadID;</p><p> if(g_NumPerson >= MAX_PERSON)
70、0;</p><p> return false;</p><p> Person *pPerson = &g_Persons[g_NumPerson];</p><p> pPerson->m_nID = ID;</p><p> pPerson->m_nStartTime = Start
71、Time;</p><p> pPerson->m_nWorkTime = WorkTime;</p><p> pPerson->m_nType = WRITER;</p><p> g_NumPerson++;</p><p> // Create an New Thread<
72、/p><p> pPerson->m_hThread= CreateThread(NULL,0,WriterProc,(LPVOID)pPerson,0,&dwThreadID);</p><p> if(pPerson->m_hThread == NULL)</p><p> return false;</p><p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 操作系統(tǒng)課程設(shè)計(jì)-讀者寫者問題
- 操作系統(tǒng)課程設(shè)計(jì)——讀者寫者問題
- 操作系統(tǒng)課程設(shè)計(jì)---讀者-寫者問題實(shí)現(xiàn)
- 操作系統(tǒng)原理課程設(shè)計(jì)讀者-寫者問題的實(shí)現(xiàn)
- 操作系統(tǒng)課程設(shè)計(jì)-- linux下讀者與寫者的問題實(shí)現(xiàn)
- 讀者與寫者-操作系統(tǒng)課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告
- 讀者寫者問題-操作系統(tǒng)實(shí)驗(yàn)報(bào)告
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告-讀者寫著問題
- 北理工操作系統(tǒng)實(shí)驗(yàn)二讀者寫者問題
- 讀者寫者課程設(shè)計(jì)
- 讀者與寫者問題課程設(shè)計(jì)報(bào)告
- 《操作系統(tǒng)》課程設(shè)計(jì)--基于信號(hào)量與pv操作同步機(jī)制的讀者寫者問題的設(shè)計(jì)與實(shí)現(xiàn)
- 操作系統(tǒng)課程設(shè)計(jì)——操作系統(tǒng)課程設(shè)計(jì)模擬操作系統(tǒng)
- 操作系統(tǒng)課程設(shè)計(jì)——生產(chǎn)者消費(fèi)者問題
- 操作系統(tǒng)課程設(shè)計(jì)——生產(chǎn)者消費(fèi)者問題
- 生產(chǎn)者消費(fèi)者問題操作系統(tǒng)課程設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)-- 操作系統(tǒng)
- 操作系統(tǒng)課程設(shè)計(jì)實(shí)現(xiàn)生產(chǎn)者消費(fèi)者問題
- 操作系統(tǒng)課程設(shè)計(jì)--蘋果問題
- 操作系統(tǒng)課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論