操作系統(tǒng)概念第七版46章課后題答案_第1頁(yè)
操作系統(tǒng)概念第七版46章課后題答案_第2頁(yè)
操作系統(tǒng)概念第七版46章課后題答案_第3頁(yè)
操作系統(tǒng)概念第七版46章課后題答案_第4頁(yè)
操作系統(tǒng)概念第七版46章課后題答案_第5頁(yè)
已閱讀5頁(yè),還剩6頁(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)介

1、第四章線程4.1舉兩個(gè)多線程程序設(shè)計(jì)的例子來(lái)說(shuō)明多線程不比單線程方案提高性能答:1)任何形式的順序程序?qū)€程來(lái)說(shuō)都不是一個(gè)好的形式。例如一個(gè)計(jì)算個(gè)人報(bào)酬的程序。2)另外一個(gè)例子是一個(gè)“空殼”程序,如C-shell和kornshell。這種程序必須密切檢測(cè)其本身的工作空間。如打開(kāi)的文件、環(huán)境變量和當(dāng)前工作目錄。描述一下線程庫(kù)采取行動(dòng)進(jìn)行用戶級(jí)線程上下文切換的過(guò)程答:用戶線程之間的上下文切換和內(nèi)核線程之間的相互轉(zhuǎn)換是非常相似的。但它依賴于線程庫(kù)和怎樣把用戶線程指給內(nèi)核程序。一般來(lái)說(shuō),用戶線程之間的上下文切換涉及到用一個(gè)用戶程序的輕量級(jí)進(jìn)程(LWP)和用另外一個(gè)線程來(lái)代替。這種行為通常涉及到寄存器的

2、節(jié)約和釋放。在哪些情況下使用多內(nèi)核線程的多線程方案比單處理器系統(tǒng)的單個(gè)線程方案提供更好的性能。答:當(dāng)一個(gè)內(nèi)核線程的頁(yè)面發(fā)生錯(cuò)誤時(shí),另外的內(nèi)核線程會(huì)用一種有效的方法被轉(zhuǎn)換成使用交錯(cuò)時(shí)間。另一方面,當(dāng)頁(yè)面發(fā)生錯(cuò)誤時(shí),一個(gè)單一線程進(jìn)程將不能夠發(fā)揮有效性能。因此,在一個(gè)程序可能有頻繁的頁(yè)面錯(cuò)誤或不得不等待其他系統(tǒng)的事件的情況下,多線程方案會(huì)有比單處理器系統(tǒng)更好的性能。以下程序中的哪些組成部分在多線程程序中是被線程共享的?寄存值堆內(nèi)存全局變量棧內(nèi)存答:一個(gè)線程程序的線程共享堆內(nèi)存和全局變量,但每個(gè)線程都有屬于自己的一組寄存值和棧內(nèi)存。45一個(gè)采用多用戶線程的多線程方案在多進(jìn)程系統(tǒng)中能夠取得比在單處理器系

3、統(tǒng)中更好的性能嗎?答:一個(gè)包括多用戶線程的多線程系統(tǒng)無(wú)法在多處理系統(tǒng)上同時(shí)使用不同的處理器。操作系統(tǒng)只能看到一個(gè)單一的進(jìn)程且不會(huì)調(diào)度在不同處理器上的不同進(jìn)程的線程。因此,多處理器系統(tǒng)執(zhí)行多個(gè)用戶線程是沒(méi)有性能優(yōu)勢(shì)的。4.6就如4.5.2章節(jié)描述的那樣,Linux沒(méi)有區(qū)分進(jìn)程和線程的能力。且Linux線程都是用相同的方法:允許一個(gè)任務(wù)與一組傳遞給clone()系統(tǒng)調(diào)用的標(biāo)志的進(jìn)程或線程。但許多操作系統(tǒng),例如windowsXP和Solaris,對(duì)進(jìn)程和線程都是一視同仁?;旧?,這種使用notation的系統(tǒng),一個(gè)進(jìn)程的數(shù)據(jù)結(jié)構(gòu)包括一個(gè)指向?qū)儆谶M(jìn)程的不同線程的指針。區(qū)別建模過(guò)程和在內(nèi)核中線程的兩種方

4、法。答:一方面,進(jìn)程和線程被視為相似實(shí)體的系統(tǒng)中,有些系統(tǒng)代碼可以簡(jiǎn)化。例如,一個(gè)調(diào)度器可以在平等的基礎(chǔ)上考慮不同的進(jìn)程和線程,且不需要特殊的代碼,在調(diào)度中審查有關(guān)線程的進(jìn)程。另一方面,這種統(tǒng)一會(huì)使進(jìn)程資源限制更加困難。相反,一些額外的復(fù)雜性被需要,用來(lái)確定哪個(gè)線程與哪個(gè)進(jìn)程一致和執(zhí)行重復(fù)的計(jì)數(shù)任務(wù)。4.7由4.11給出的程序使用了Pthread的應(yīng)用程序編程接口(API),在程序的第c行和第p行分別會(huì)輸出什么?答:c行會(huì)輸出5,p行會(huì)輸出0.4.8考慮一個(gè)多處理器系統(tǒng)和用多線程對(duì)多線程模式編寫(xiě)的多線程程序。讓程序中的用戶線程數(shù)量多于系統(tǒng)中的處理器的數(shù)量,討論下列情況下的性能意義:由程序分配的

5、內(nèi)核線程的數(shù)量比處理器少由程序分配的內(nèi)核線程的數(shù)量與處理器相同由程序分配的內(nèi)核線程的數(shù)量大于處理器數(shù)量但少于用戶線程的數(shù)量答:當(dāng)內(nèi)核線程的數(shù)量少于處理器時(shí),一些處理器將仍然處于空閑狀態(tài)。因?yàn)?,調(diào)度圖中只有內(nèi)核線程的處理器,而不是用戶線程的處理器。當(dāng)程序分配的內(nèi)核線程的數(shù)量與處理器相同時(shí),那么有可能所有處理器將同時(shí)使用。然而,當(dāng)一個(gè)內(nèi)核塊內(nèi)的內(nèi)核(因頁(yè)面錯(cuò)誤或同時(shí)援引系統(tǒng)調(diào)用)相應(yīng)的處理器將閑置。當(dāng)由程序分配的內(nèi)核線程的數(shù)量大于處理器數(shù)量時(shí),封鎖一個(gè)內(nèi)核線程并調(diào)出,換入另一個(gè)準(zhǔn)備執(zhí)行的內(nèi)核線程。因此,增加多處理器系統(tǒng)的利用率。第五章CPU調(diào)度5.1為什么對(duì)調(diào)度來(lái)說(shuō),區(qū)分I/O限制的程序和CPU限

6、制的程序是重要的?答:I/O限制的程序有在運(yùn)行I/O操作前只運(yùn)行很少數(shù)量的計(jì)算機(jī)操作的性質(zhì)。這種程序一般來(lái)說(shuō)不會(huì)使用很多的CPU。另一方面,CPU限制的程序利用整個(gè)的時(shí)間片,且不做任何阻礙I/O操作的工作。因此,通過(guò)給I/O限制的程序優(yōu)先權(quán)和允許在CPU限制的程序之前運(yùn)行,可以很好的利用計(jì)算機(jī)資源。5.2討論以下各對(duì)調(diào)度標(biāo)準(zhǔn)在某種背景下會(huì)有的沖突CPU利用率和響應(yīng)時(shí)間b.平均周轉(zhuǎn)時(shí)間和最大等待時(shí)間c.I/O設(shè)備利用率和CPU利用率答:a.CPU利用率和響應(yīng)時(shí)間:當(dāng)經(jīng)常性的上下文切換減少到最低時(shí),CPU利用率增加。通過(guò)減少使用上下文切換程序來(lái)降低經(jīng)常性的上下文切換。但這樣可能會(huì)導(dǎo)致進(jìn)程響應(yīng)時(shí)間的

7、增加。b.平均周轉(zhuǎn)時(shí)間和最大等待時(shí)間:通過(guò)最先執(zhí)行最短任務(wù)可以使平均周轉(zhuǎn)時(shí)間最短然而,這種調(diào)度策略可能會(huì)使長(zhǎng)時(shí)間運(yùn)行的任務(wù)永遠(yuǎn)得不到調(diào)度且會(huì)增加他們的等待時(shí)間。c.I/O設(shè)備利用率和CPU利用率:CPU利用率的最大化可以通過(guò)長(zhǎng)時(shí)間運(yùn)行CPU限制的任務(wù)和同時(shí)不實(shí)行上下文切換。I/O設(shè)備利用率的最大化可以通過(guò)盡可能調(diào)度已經(jīng)準(zhǔn)備好的I/O限制的任務(wù)。因此,導(dǎo)致上下文切換。5.3考慮指數(shù)平均公式來(lái)預(yù)測(cè)下一次CPU區(qū)間的長(zhǎng)度,使用以下參數(shù)值會(huì)有什么影響?a=O和t=1OO毫秒a=0.99和t=10毫秒答:當(dāng)a=O和t=1OO毫秒時(shí),公式總是會(huì)預(yù)測(cè)下一次的CPU區(qū)間為1OO毫秒。當(dāng)a=0.99和t=10毫

8、秒時(shí),進(jìn)程最近的行為是給予更高的重量和過(guò)去的就能成相比。因此,調(diào)度算法幾乎是無(wú)記憶的,且簡(jiǎn)單預(yù)測(cè)未來(lái)區(qū)間的長(zhǎng)度為下一次的CPU執(zhí)行的時(shí)間片。5.4考慮下列進(jìn)程集,進(jìn)程占用的CPU區(qū)間長(zhǎng)度以毫秒來(lái)計(jì)算:進(jìn)程區(qū)間時(shí)間優(yōu)先級(jí)TOC o 1-5 h z HYPERLINK l bookmark2P1103P112 HYPERLINK l bookmark6P323P144P525假設(shè)在時(shí)刻0以進(jìn)程P,P2,P3,P4,P5的順序到達(dá)。a.畫(huà)出4個(gè)Gantt圖分別演示用FCFS、SJF、非搶占優(yōu)先級(jí)(數(shù)字小代表優(yōu)先級(jí)高)和RR(時(shí)間片=1)算法調(diào)度時(shí)進(jìn)程的執(zhí)行過(guò)程。在a里每個(gè)進(jìn)程在每種調(diào)度算法下的周轉(zhuǎn)時(shí)

9、間是多少?在a里每個(gè)進(jìn)程在每種調(diào)度算法下的等待時(shí)間是多少?在a里哪一種調(diào)度算法的平均等待時(shí)間對(duì)所有進(jìn)程而言最小?答:a.甘特圖略b.周轉(zhuǎn)時(shí)間FCFSRRSJF非搶占優(yōu)先級(jí)P110191916P211211P3137418P4144219P5191496c.等待時(shí)間FCFSRRSJF非搶占優(yōu)先級(jí)P10996P210100P3115216P4133118P514942d.SJF5.5下面哪些算法會(huì)引起饑餓先來(lái)先服務(wù)最短工作優(yōu)先調(diào)度輪換法調(diào)度優(yōu)先級(jí)調(diào)度答:最短工作優(yōu)先調(diào)度和優(yōu)先級(jí)調(diào)度算法會(huì)引起饑餓5.考慮RR調(diào)度算法的一個(gè)變種,在這個(gè)算法里,就緒隊(duì)列里的項(xiàng)是指向PCB的指針。如果把兩個(gè)指針指向就緒隊(duì)

10、列中的同一個(gè)進(jìn)程,會(huì)有什么效果?這個(gè)方案的主要優(yōu)點(diǎn)和缺點(diǎn)是什么?如何修改基本的RR調(diào)度算法,從而不用兩個(gè)指針達(dá)到同樣的效果?答實(shí)際上,這個(gè)過(guò)程將會(huì)增加它的優(yōu)先權(quán),因?yàn)橥ㄟ^(guò)經(jīng)常得到時(shí)間它能夠優(yōu)先得以運(yùn)行。優(yōu)點(diǎn)是越重要的工作可以得到更多的時(shí)間。也就是說(shuō),優(yōu)先級(jí)越高越先運(yùn)行。然而,結(jié)果將由短任務(wù)來(lái)承擔(dān)。分配一個(gè)更長(zhǎng)的時(shí)間給優(yōu)先級(jí)越高的程序。換句話說(shuō),可能有兩個(gè)或多個(gè)時(shí)間片在調(diào)度中??紤]一個(gè)運(yùn)行十個(gè)限制任務(wù)和一個(gè)限制任務(wù)的系統(tǒng)。假設(shè),限制任務(wù)一次分配給一個(gè)操作毫秒的計(jì)算,但每個(gè)操作的完成需要毫秒。同時(shí),假設(shè)間接的上下文切換要毫秒,所有的進(jìn)程都是長(zhǎng)進(jìn)程。對(duì)一個(gè)調(diào)度來(lái)說(shuō),以下情況時(shí)的利用率是多少:時(shí)間片是

11、毫秒時(shí)間片是毫秒答:時(shí)時(shí)間間片是1毫秒:不論是哪個(gè)進(jìn)程被調(diào)度,這個(gè)調(diào)度都會(huì)為每一次的上下文切換花費(fèi)一個(gè)毫秒的上下文切換。的利用率是。時(shí)間片是毫秒:這限制任務(wù)會(huì)在使用完毫秒時(shí)間片后進(jìn)行一次上下文切換。這個(gè)時(shí)間片要求在所有的進(jìn)程間都走一遍,因此,因?yàn)槊總€(gè)限定任務(wù)執(zhí)行為毫秒,然后承擔(dān)上下文切換的任務(wù),而限制任務(wù)的執(zhí)行毫秒在承擔(dān)一個(gè)上下文切換之前。因此,的利用率是、。5間考8慮一個(gè)實(shí)施多層次的隊(duì)列調(diào)度系統(tǒng)。什么策略能夠使一個(gè)計(jì)算機(jī)用戶使用由用戶進(jìn)程分配的最大的時(shí)間片。答:這個(gè)程序可以使分配給它的沒(méi)有被完全利用的時(shí)間最大化。它可以使用分配給它的時(shí)間片中的絕大部分,但在時(shí)間片結(jié)束前放棄,因此提高了與進(jìn)程有

12、關(guān)的優(yōu)先級(jí)。1.5間考9慮下面的基于動(dòng)態(tài)改變優(yōu)先級(jí)的可搶占式優(yōu)先權(quán)調(diào)度算法。大的優(yōu)先權(quán)數(shù)代表高優(yōu)先權(quán)。當(dāng)一個(gè)進(jìn)程在等待CPU時(shí)(在就緒隊(duì)列中,但未執(zhí)行),優(yōu)先權(quán)以a速率改變;當(dāng)它運(yùn)行時(shí),優(yōu)先權(quán)以速率B改變。所有的進(jìn)程在進(jìn)入就緒隊(duì)列時(shí)被給定優(yōu)先權(quán)為0。參數(shù)a和B可以設(shè)定給許多不同的調(diào)度算法。Ba時(shí)所得的是什么算法?aB時(shí)所得的是什么算法?答:b.LIFO5間1解每釋下面調(diào)度算法對(duì)短進(jìn)程編程度上的區(qū)別:.多級(jí)反饋隊(duì)列答區(qū)別短任務(wù)是因?yàn)槿魏卧陂L(zhǎng)任務(wù)后到達(dá)的短任務(wù)都將會(huì)有很長(zhǎng)的等待時(shí)間。對(duì)所有的任務(wù)都是能夠相同的(給它們相同的時(shí)間區(qū)間),所以,短任務(wù)可以很快的離開(kāi)系統(tǒng),只要它們可以先完成。多級(jí)反饋隊(duì)列

13、和調(diào)度算法相似一一它們不會(huì)先選擇短任務(wù)。1用的調(diào)度算法,下列什么是數(shù)字優(yōu)先的線程。1用的調(diào)度算法,下列什么是數(shù)字優(yōu)先的線程。相對(duì)優(yōu)先級(jí)的值為的屬于實(shí)體優(yōu)先類(lèi)型的線程相對(duì)優(yōu)先級(jí)的值為的屬于類(lèi)型的線程.相對(duì)優(yōu)先級(jí)的值為的屬于相對(duì)優(yōu)先級(jí)的值為的屬于實(shí)體優(yōu)先類(lèi)型的線程相對(duì)優(yōu)先級(jí)的值為的屬于類(lèi)型的線程.相對(duì)優(yōu)先級(jí)的值為的屬于類(lèi)型的線程答:5考慮在操作系統(tǒng)中的為分時(shí)線程的調(diào)度算法:一個(gè)優(yōu)先權(quán)是的線程的時(shí)間片是多少??jī)?yōu)先權(quán)是的呢?假設(shè)優(yōu)先權(quán)是的一個(gè)線程用它所有的時(shí)間片在沒(méi)有任何阻止的情況下,這調(diào)度算法將會(huì)分配給這個(gè)線程什么樣新的優(yōu)先權(quán)?假設(shè)一個(gè)優(yōu)先權(quán)是的線程在時(shí)間片結(jié)束前阻止操作。這調(diào)度算法將會(huì)分配給這個(gè)線

14、程什么樣新的優(yōu)先權(quán)?答:和傳統(tǒng)調(diào)度在優(yōu)先數(shù)和優(yōu)先級(jí)間成反比關(guān)系:數(shù)字越高,優(yōu)先權(quán)越低。該調(diào)度進(jìn)程利用下面的方程重新計(jì)算進(jìn)程的優(yōu)先權(quán)一次一秒優(yōu)先權(quán)(最近使用率)基本數(shù)這里的基本數(shù)最近的使用率是指一個(gè)表明優(yōu)先權(quán)從上一次重新計(jì)算后開(kāi)始進(jìn)程被使用的情況。假設(shè)最近進(jìn)程的使用率是個(gè),是,是當(dāng)優(yōu)先權(quán)重新計(jì)算后這三個(gè)進(jìn)程的新的優(yōu)先權(quán)是什么?在此信息的基礎(chǔ)上,傳統(tǒng)的調(diào)度會(huì)不會(huì)提高或降低限制的進(jìn)程的相對(duì)優(yōu)先權(quán)?答:分配給這些進(jìn)程的優(yōu)先權(quán)分別是優(yōu)先權(quán)。和這調(diào)度降低了限制的進(jìn)程的相對(duì)答:分配給這些進(jìn)程的優(yōu)先權(quán)分別是優(yōu)先權(quán)。和這調(diào)度降低了限制的進(jìn)程的相對(duì)第六章管程第一個(gè)著名的正確解決了兩個(gè)進(jìn)程的臨界區(qū)問(wèn)題的軟件方法是設(shè)

15、計(jì)的。兩個(gè)進(jìn)程和共享以下變量:進(jìn)程或和另一個(gè)進(jìn)程或的結(jié)構(gòu)見(jiàn)圖。證明這個(gè)算法滿足臨界區(qū)問(wèn)題的所有三個(gè)要求。doflagi=ture;while(flagj)if(turn=j)flagi=false;while(turn=j);flagi=true;臨界區(qū)turn=j;flagi=false;剩余區(qū)while(1);圖7.27Dekker算法中的進(jìn)程P.結(jié)構(gòu)i答:該算法滿足三個(gè)相互排斥條件。(1)相互排斥是為了確保使用的變量和標(biāo)志是可變的。如果所有進(jìn)程都把他們的變量設(shè)置為真,只有一個(gè)會(huì)成功,那就是哪個(gè)進(jìn)程輪到的問(wèn)題了。等待中的進(jìn)程只能夠進(jìn)入它的重要部分當(dāng)其他進(jìn)程在更新變量值時(shí)。6.1這兩個(gè)進(jìn)程的

16、臨界區(qū)域問(wèn)題的最初的正確的軟件解決方案是由Dekker提出的。PO、P1兩個(gè)進(jìn)程,具有以下共同的變量:booleanflag2;/*initiallyfalse*/intturn;進(jìn)程Pi(i=Oorl)的結(jié)構(gòu)在6.25中已經(jīng)出現(xiàn)過(guò);其他進(jìn)程為Pj(j=1or0)。證明這個(gè)算法滿足關(guān)鍵問(wèn)題的三個(gè)要求。答:這個(gè)算法滿足臨界區(qū)域的三個(gè)條件:在標(biāo)記和返回變量的使用中,互斥條件是保證的。如果兩個(gè)進(jìn)程將它們的標(biāo)識(shí)設(shè)為真,那么只有一個(gè)進(jìn)程會(huì)成功進(jìn)行,即輪到的那個(gè)進(jìn)程。當(dāng)另一個(gè)進(jìn)程更新它的返回變量時(shí),等待的那個(gè)進(jìn)程只能進(jìn)入它的臨界區(qū)域。(2)就緒的進(jìn)程,通過(guò)標(biāo)志,返回變量。這個(gè)算法沒(méi)有提供嚴(yán)格的交替。如果一

17、個(gè)進(jìn)程想要進(jìn)入它們的臨界區(qū)域,它可以將它的標(biāo)識(shí)設(shè)為真,然后進(jìn)入它們的臨界區(qū)域。當(dāng)退出它的臨界區(qū)域,它可以設(shè)置轉(zhuǎn)向其他進(jìn)程的值。如果這個(gè)進(jìn)程想要在其他進(jìn)程之前再次進(jìn)入它的臨界區(qū)域,它會(huì)重復(fù)這樣的進(jìn)程:進(jìn)入它的臨界區(qū)域,在退出時(shí)轉(zhuǎn)向另一個(gè)進(jìn)程。(3)在雙T返回變量的使用過(guò)程中,界等待受阻。假設(shè)兩個(gè)進(jìn)程想要進(jìn)入它們的責(zé)任所在的臨界區(qū)域。它們都將它們的標(biāo)志的值設(shè)為真;而只有輪到的那個(gè)線程可以執(zhí)行;其他的線程處于等待狀態(tài)。如果界等待沒(méi)有受阻,當(dāng)?shù)谝粋€(gè)進(jìn)程重復(fù)“進(jìn)入-退出”它的臨界區(qū)域這一過(guò)程。Dekker算法在一個(gè)進(jìn)程中設(shè)置一個(gè)轉(zhuǎn)向另一個(gè)進(jìn)程的值,從而保證另一個(gè)進(jìn)程接下來(lái)進(jìn)入它的臨界區(qū)域。6.2針對(duì)有n

18、個(gè)進(jìn)程在帶有較低時(shí)間限制的等待n-1個(gè)的輪次這樣一個(gè)臨界區(qū)域最早的解決該問(wèn)題的正確方法是由艾森伯格和麥圭爾提出的。這些進(jìn)程有以下的共同的變量:枚舉pstateidle,wantin,incs;pstateflagn;intturn;所有的枚舉標(biāo)志被初始為空,輪次的最初值是無(wú)關(guān)緊要的(在0和n-1之間)。進(jìn)程p的結(jié)構(gòu)在6.26中有說(shuō)明。證明這個(gè)算法滿足臨界區(qū)域問(wèn)題的三項(xiàng)要求。答:a.互斥:注意到一個(gè)進(jìn)程只有在下列條件滿足時(shí)才能進(jìn)入臨界區(qū)域:沒(méi)有其他進(jìn)程在CS中有設(shè)置的標(biāo)識(shí)變量。這是由于進(jìn)程在CS中設(shè)置自身的標(biāo)識(shí)變量之前要先檢查其他進(jìn)程的狀態(tài)。我們保證沒(méi)有兩個(gè)進(jìn)程將同時(shí)進(jìn)入臨界區(qū)域。有空讓進(jìn):考慮

19、以下情況,當(dāng)多進(jìn)程同時(shí)在CS中設(shè)置它們的標(biāo)識(shí)變量,然后檢查是否有其他進(jìn)程在cs中設(shè)置標(biāo)識(shí)變量。當(dāng)這種情況發(fā)生時(shí),所有的進(jìn)程意識(shí)到這里存在進(jìn)程競(jìng)爭(zhēng),在外層while(l)的循環(huán)下進(jìn)入下一次迭代,重置它們的標(biāo)識(shí)變量到want中?,F(xiàn)在只有唯一的進(jìn)程將設(shè)置它的輪次變量到cs中,這個(gè)唯一的進(jìn)程就是其序號(hào)是最接近輪次的。從這個(gè)角度來(lái)說(shuō),對(duì)于哪些序號(hào)次接近輪次的新的進(jìn)程就能決定進(jìn)入臨界區(qū)域,而且能同時(shí)在CS中設(shè)置它們的標(biāo)識(shí)。隨后這些進(jìn)程意識(shí)到這里存在競(jìng)爭(zhēng)的進(jìn)程,于是重新啟動(dòng)進(jìn)入臨界區(qū)域的進(jìn)程。在每次迭代中,進(jìn)程在cs中設(shè)置的序號(hào)值將變得更加接近輪次,最后我們得出以下結(jié)論:只有進(jìn)程k在cs中設(shè)置它的標(biāo)識(shí),而其

20、他哪些序號(hào)在輪次和k之間不能在cs中設(shè)置它們的標(biāo)識(shí)。這個(gè)進(jìn)程僅能進(jìn)入臨界區(qū)域。有限等待:有限等待需要滿足以下事實(shí):當(dāng)進(jìn)程k在打算進(jìn)入臨界區(qū)域時(shí),它的標(biāo)識(shí)不再置為空閑。任何序號(hào)不在輪次和k之間的進(jìn)程不能進(jìn)入臨界區(qū)域。與此同時(shí),所有序號(hào)落在輪次和k之間且又想要進(jìn)入臨界區(qū)域的進(jìn)程能夠進(jìn)入臨界區(qū)域(這是基于系統(tǒng)一直在進(jìn)步的事實(shí)),這個(gè)輪次值變得越來(lái)越接近k。最后,要么輪次變?yōu)閗,要么沒(méi)有哪些序號(hào)在輪次和k之間的進(jìn)程,這樣進(jìn)程k就進(jìn)入臨界區(qū)域了。6.3忙等待的含義是什么?在操作系統(tǒng)中還有哪些其他形式的等待?忙等待能完全避免嗎?給出你的答案。答:忙等待意味著一個(gè)進(jìn)程正在等待滿足一個(gè)沒(méi)有閑置處理器的嚴(yán)格循環(huán)

21、的條件?;蛘撸粋€(gè)進(jìn)程通過(guò)放棄處理器來(lái)等待,在這種情況下的塊等待在將來(lái)某個(gè)適當(dāng)?shù)臅r(shí)間被喚醒。忙等待能夠避免,但是承擔(dān)這種開(kāi)銷(xiāo)與讓一個(gè)進(jìn)程處于沉睡狀態(tài),當(dāng)相應(yīng)程序的狀態(tài)達(dá)到的時(shí)候進(jìn)程又被喚醒有關(guān)。6.4解釋為什么自旋鎖不適合在單處理器系統(tǒng),而經(jīng)常在多處理器系統(tǒng)下使用?答:自旋鎖不適合在單處理器系統(tǒng)是因?yàn)閺淖孕i中打破一個(gè)進(jìn)程的條件只有在執(zhí)行一個(gè)不同的進(jìn)程時(shí)才能獲得。如果這個(gè)進(jìn)程沒(méi)有閑置處理器,其他進(jìn)程不能夠得到這個(gè)機(jī)會(huì)去設(shè)定一個(gè)第一個(gè)進(jìn)程進(jìn)展需要的程序條件。在一個(gè)多處理器系統(tǒng)中,其他進(jìn)程在其他處理器上執(zhí)行,從而為了讓第一個(gè)進(jìn)程從自旋鎖中釋放修改程序狀態(tài)。6.5如果一個(gè)同步元是在一個(gè)用戶級(jí)程序中使

22、用的,解釋在一個(gè)單處理器系統(tǒng)中為什么通過(guò)停止中斷去實(shí)現(xiàn)這個(gè)同步元是不適合的?答:如果一個(gè)用戶級(jí)程序具有停止中斷的能力,那么它能夠停止計(jì)時(shí)器中斷,防止上下文切換的發(fā)生,從而允許它使用處理器而不讓其他進(jìn)程執(zhí)行。6.6解釋為什么在一個(gè)多處理器系統(tǒng)中中斷不適合同步元?答:由于只有在防止其他進(jìn)程在一個(gè)中斷不能實(shí)現(xiàn)的處理器上執(zhí)行來(lái)停止中斷,中斷在多處理器系統(tǒng)中是不夠的。在對(duì)于進(jìn)程能在其他處理器上執(zhí)行是沒(méi)有心智的,所以進(jìn)程停止中斷不能保證互斥進(jìn)入程序狀態(tài)。6.76.8服務(wù)器能夠設(shè)計(jì)成限制打開(kāi)連接的數(shù)量。比如,一臺(tái)服務(wù)器可以在任何時(shí)候有n個(gè)插座連接。這n個(gè)連接一形成,服務(wù)器就不能接收再有進(jìn)來(lái)的連接直到一個(gè)現(xiàn)有

23、的連線釋放。解釋為什么信號(hào)量能夠通過(guò)服務(wù)器限制當(dāng)前連線的數(shù)量而被使用。答:信號(hào)量初始化為允許開(kāi)放式的插座連接的數(shù)量。當(dāng)一個(gè)連接被接受,收購(gòu)方法調(diào)用。當(dāng)連接釋放時(shí),釋放方法調(diào)用。如果系統(tǒng)道道了允許開(kāi)放式的插座連接的數(shù)量,相繼調(diào)用收購(gòu)方法將受阻直到一個(gè)現(xiàn)有的連線終止,釋放方法調(diào)用。6.9證明如果獲得和釋放的信號(hào)量操作沒(méi)有動(dòng)態(tài)地執(zhí)行,那么互斥會(huì)受干擾。答:收購(gòu)操作自動(dòng)遞減和信號(hào)量有關(guān)的值。如果兩個(gè)收購(gòu)操作在信號(hào)量的值為1的信號(hào)量上執(zhí)行,而且這兩種操作不是自動(dòng)執(zhí)行的,那么這兩個(gè)操作在進(jìn)展中會(huì)遞減信號(hào)量的值,從而干擾互斥。6.10(程序,不用翻)(6.13)6.12證明管程和信號(hào)量是相當(dāng)于它們能在執(zhí)行相

24、同類(lèi)型的同步問(wèn)題時(shí)使用答:在用下列方法使用信號(hào)量時(shí),管程可以實(shí)施。每個(gè)條件變量是由一個(gè)隊(duì)列中的線程等待條件組成的。每個(gè)線程有一個(gè)和它的隊(duì)列進(jìn)入有關(guān)的信號(hào)量。當(dāng)線程表現(xiàn)出等待操作時(shí),它創(chuàng)造一個(gè)心得信號(hào)量(初始化為0),附加信號(hào)量到和條件變量有關(guān)的隊(duì)列中,在新創(chuàng)造的信號(hào)量上執(zhí)行阻塞信號(hào)遞減操作。6.15討論在讀者-作者問(wèn)題中的公平和吞吐量的權(quán)衡問(wèn)題。提出一種解決讀者-作者問(wèn)題而不引起饑餓的方法答:在讀者-作者問(wèn)題中吞吐量是由利益多的讀者增加的,而不是讓一個(gè)作家獨(dú)占式地獲得共同的價(jià)值觀。另一個(gè)方面,有利于讀者可能會(huì)導(dǎo)致饑餓的作者。在讀者-作者問(wèn)題中的借能夠通過(guò)保持和等待進(jìn)程有關(guān)的時(shí)間戳來(lái)避免。當(dāng)作者

25、完成他的任務(wù),那么喚醒那些已經(jīng)等了最長(zhǎng)期限的進(jìn)程。當(dāng)讀者到達(dá)和注意到另一個(gè)讀者正在訪問(wèn)數(shù)據(jù)庫(kù),那么它只有在沒(méi)有等待的作者時(shí)才能進(jìn)入臨界區(qū)域。這些限制保證公平。6.16管程的signa操作和信號(hào)量的signa操作有什么不同?管程的signa操作在以下情況下是不能繼續(xù)進(jìn)行的:當(dāng)執(zhí)行signa操作并且無(wú)等待線程時(shí),那么系統(tǒng)會(huì)忽略signa操作,認(rèn)為signa操作沒(méi)有發(fā)生過(guò)。如果隨后執(zhí)行wait操作,那么相關(guān)的線程就會(huì)被阻塞。然后在信號(hào)量中,即使沒(méi)有等待線程,每個(gè)signa操作都會(huì)是相應(yīng)的信號(hào)量值增加。接下來(lái)的等待操作因?yàn)橹暗男盘?hào)量值的增加而馬上成功進(jìn)行。假設(shè)signa語(yǔ)句只能作為一個(gè)管程中的最后一

26、條語(yǔ)句出現(xiàn),可以怎樣簡(jiǎn)化節(jié)所描述的實(shí)現(xiàn)?如果signa語(yǔ)句作為最后一條語(yǔ)句出現(xiàn),那么鎖會(huì)使發(fā)出信號(hào)的進(jìn)程轉(zhuǎn)化成接受信號(hào)的進(jìn)程。否則,發(fā)出信號(hào)的進(jìn)程將解鎖,并且接受信號(hào)的進(jìn)程則需要和其他進(jìn)程共同操作獲得鎖從而使操作繼續(xù)下去。假設(shè)將管程中的wait和signa操作替換成一個(gè)單一的構(gòu)件await(),這里是一個(gè)普通的布爾表達(dá)式,進(jìn)程執(zhí)行直到變成真a用這種方法寫(xiě)一個(gè)管程實(shí)現(xiàn)讀者一作者問(wèn)題。解釋為什么一般來(lái)說(shuō)這種結(jié)構(gòu)實(shí)現(xiàn)的效率不高。c要使這種實(shí)現(xiàn)達(dá)到高效率需要對(duì)await語(yǔ)句加上哪些限制?(提示,限制的一般性,參見(jiàn)esses)a讀者一作者問(wèn)題可以進(jìn)行以下修改,修改中產(chǎn)生了await聲明:讀者可以執(zhí)行“a

27、wait(activewriters=0&waitingwriters=0)”來(lái)確保在進(jìn)入臨界區(qū)域時(shí)沒(méi)有就緒的作者和等待的作者。作者可以執(zhí)行“await(activewriters=0&activereaders=0)”來(lái)確?;コ狻T趕igna操作后,系統(tǒng)檢查滿足等待條件滿足的等待線程,檢查其中被喚醒的等待線程。這個(gè)要求相當(dāng)復(fù)雜,并且可能需要用到交互的編譯器來(lái)評(píng)估在不同時(shí)間點(diǎn)下的條件。可以通過(guò)限制布爾條件,使布爾變量和其他部分分開(kāi)作為獨(dú)立的程序變量(僅僅用來(lái)檢查是否相等的一個(gè)靜態(tài)值)。在這種情況下,布爾條件可以傳達(dá)給運(yùn)行時(shí)系統(tǒng),該系統(tǒng)可以執(zhí)行檢查每一個(gè)它所需要的時(shí)間,以確定哪些線程被喚醒。為什么arisin和indwsC都使用自旋鎖作為多處理器系統(tǒng)的同步機(jī)制而不作為單處理器系統(tǒng)的同步機(jī)制?arisin和indws000中只有在多處理器系統(tǒng)才能使用自旋鎖作為一個(gè)同步機(jī)制。自旋鎖不適合單處理器的系統(tǒng),因?yàn)榇蚱屏诉@一進(jìn)程的自旋鎖只有通過(guò)執(zhí)行不同的進(jìn)程才可以得到。如果這一進(jìn)程不會(huì)放棄此處理器,其他進(jìn)程就無(wú)法設(shè)置第一個(gè)進(jìn)程所要求的程序條件,從而不能繼續(xù)操作。在一個(gè)多處理器系統(tǒng),其他進(jìn)程執(zhí)行其他處理器,從而修改程序狀態(tài)從自旋鎖中釋放第一個(gè)進(jìn)程。在基于日志的系統(tǒng)中可以給事務(wù)提供支持,在相應(yīng)日志記錄寫(xiě)到穩(wěn)定存儲(chǔ)之前不能允許真正地更新數(shù)據(jù)項(xiàng)。為什么這個(gè)限制是

溫馨提示

  • 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)論