操作系統(tǒng)大作業(yè)讀者和寫者的問(wèn)題.docx_第1頁(yè)
操作系統(tǒng)大作業(yè)讀者和寫者的問(wèn)題.docx_第2頁(yè)
操作系統(tǒng)大作業(yè)讀者和寫者的問(wèn)題.docx_第3頁(yè)
操作系統(tǒng)大作業(yè)讀者和寫者的問(wèn)題.docx_第4頁(yè)
操作系統(tǒng)大作業(yè)讀者和寫者的問(wèn)題.docx_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

江蘇大學(xué)操作系統(tǒng)大作業(yè) 讀者和寫者的問(wèn)題姓名: 秦友才 班級(jí): 計(jì)算機(jī)1502 學(xué)號(hào): 3140602055 操作系統(tǒng)大作業(yè):讀者和寫者的問(wèn)題1、 問(wèn)題的提出一個(gè)數(shù)據(jù)對(duì)象被若干個(gè)并發(fā)進(jìn)程所共享,且其中一些進(jìn)程只要求讀該數(shù)據(jù)對(duì)象的內(nèi)容,而另一些進(jìn)程則要求寫操作。即一個(gè)是寫者一個(gè)是讀者。寫者任意時(shí)刻只能有一個(gè),而讀者則允許有多個(gè),多個(gè)讀者之間不會(huì)干擾,而寫者就不能同時(shí)運(yùn)行。所以對(duì)共享資源的讀寫的限制條件是:1) 允許多個(gè)讀者可以同時(shí)對(duì)文件執(zhí)行讀操作;2) 只允許一個(gè)寫者往文件中寫信息;3) 任一寫者在完成寫操作之前不允許其他讀者或?qū)懻吖ぷ鳎皇褂眯盘?hào)量來(lái)處理讀者和寫者的問(wèn)題。有讀者和寫者兩組并發(fā)進(jìn)程,共享一個(gè)文件,當(dāng)兩個(gè)或以上的讀進(jìn)程同時(shí)訪問(wèn)共享數(shù)據(jù)時(shí)不會(huì)產(chǎn)生副作用,但若某個(gè)寫進(jìn)程和其他進(jìn)程(讀進(jìn)程或?qū)戇M(jìn)程)同時(shí)訪問(wèn)共享數(shù)據(jù)時(shí)則可能導(dǎo)致數(shù)據(jù)不一致的錯(cuò)誤。2、 問(wèn)題的分析設(shè)計(jì)優(yōu)先策略滿足:1. 讀者優(yōu)先,即當(dāng)讀者進(jìn)行讀的時(shí)候,后續(xù)的寫者必須等待。直到所有的讀者都讀完后寫者才可以去進(jìn)行寫操作。2. 寫者優(yōu)先,即當(dāng)一個(gè)寫者到來(lái)的時(shí)候,只有在寫者之前的讀者才會(huì)執(zhí)行,寫者之后的都之后將會(huì)被阻塞。3. 公平策略。滿足規(guī)則,在讀序列中,如果有寫者在等待,不允許新來(lái)的讀者執(zhí)行,在寫者結(jié)束時(shí),所有的都讀者都有比寫者更高的優(yōu)先級(jí)。通過(guò)信號(hào)量的操作控制順序,下面對(duì)前兩種策略進(jìn)行分析。3、 解決算法讀者優(yōu)先,只要有讀者經(jīng)行都讀操作,則寫者一直等待。如果有新的讀者到來(lái),寫者依然要等待。一直等待讀者全部完成,才會(huì)去執(zhí)行寫者。教科書上給出的例子就是讀者優(yōu)先的。如果新讀者到:無(wú)讀者、寫者,新讀者可以讀;有寫者等待,但有其它讀者正在讀,則新讀者也可以讀;有寫者寫,新讀者等待。如果新寫者到:無(wú)讀者,新寫者可以寫;有讀者,新寫者等待;有其它寫者,新寫者等待。只要解決寫者和寫者,第一個(gè)讀者和寫者的互斥問(wèn)題。引入一個(gè)信號(hào)量Wmutex,來(lái)解決這個(gè)互斥,通過(guò)Rcount來(lái)記錄當(dāng)前正在讀文件的讀者個(gè)數(shù),只要讀者個(gè)數(shù)不為零,寫者就沒(méi)有權(quán)利寫。通過(guò)一個(gè)Rmutex來(lái)解決修改Rcount時(shí)候讀者和讀者的問(wèn)題。Semaphore wmutex,rmutex=1; Int rcount=0Void reader()P(rmutex);If(rconut=0) P(wmutex);Rcount+;V(rmutex);/讀數(shù)據(jù)P(rmutex);Rcount-If(rconut=0) V(wmutex);V(rmutex);Void Write()P(wmutex);DoWriting();V(wmutex);寫者優(yōu)先,讀者優(yōu)先對(duì)于寫者來(lái)書實(shí)在是太苛刻了,如果有讀者就不能寫。采用寫者優(yōu)先在一個(gè)寫者到達(dá)時(shí)如果有正在工作的讀者,那么該寫者只要等待正在工作的讀者完成,而不必等候其后面到來(lái)的讀者就可以進(jìn)行寫操作。注意,該算法當(dāng)一個(gè)寫者在等待時(shí),后到達(dá)的讀者是在寫者之后被掛起,而不是立即允許進(jìn)入。為了解決以上問(wèn)題,寫者優(yōu)先的設(shè)計(jì)思想是在一個(gè)寫者到達(dá)時(shí)如果有正在工作的讀者,那么該寫者只要等待正在工作的讀者完成,而不必等候其后面到來(lái)的讀者就可以進(jìn)行寫操作。注意,該算法當(dāng)一個(gè)寫者在等待時(shí),后到達(dá)的讀者是在寫者之后被掛起,而不是立即允許進(jìn)入。在讀者優(yōu)先的算法的基礎(chǔ)上增加了一個(gè)排隊(duì)信號(hào)量read,讀、寫進(jìn)程在每次操作前都要等待read信號(hào)量。寫者優(yōu)先的程序設(shè)計(jì)如下:int Rcount=0;semaphore rmutex=1;semaphore write=1; semaphore add_reader=1; void reader() P(add_reader); P(rmutex); Rcount+; if Rcoun=1 P(write); V(rc_mutex); V(add_reader); /讀操作P(Rmutex); Rcount-; if Rcount=0 V(write); V (Rmutex); void writer()P(add_reader);P(Rmutex); P(write);/寫操作V(write); V(add_reader); 4、 流程分析讀者優(yōu)先寫者優(yōu)先5、 分析和總結(jié)剛接到這個(gè)題目的時(shí)候很茫然,不知道該做什么。在脫了很久之后終于面臨要收作業(yè)的事實(shí)后,我到網(wǎng)上找了很多相關(guān)的東西,參考了很多

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論