




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、現(xiàn)代操作系統(tǒng) 第二章 進(jìn)程與線程 習(xí)題1. 圖 2-2 中給出了三個進(jìn)程狀態(tài),在理論上,三個狀態(tài)可以有六種轉(zhuǎn)換,每個 狀態(tài)兩個。但是,圖中只給出了四種轉(zhuǎn)換。有沒有可能發(fā)生其他兩種轉(zhuǎn)換中的 一個或兩個A:從阻塞到運(yùn)行的轉(zhuǎn)換是可以想象的。假設(shè)某個進(jìn)程在 I/O 上阻塞,而且 I/O 結(jié) 束,如果此時 CPU空閑,該進(jìn)程就可以從阻塞態(tài)直接轉(zhuǎn)到運(yùn)行態(tài)。而另外一種 轉(zhuǎn)換(從阻塞態(tài)到就緒態(tài))是不可能的。一個就緒進(jìn)程是不可能做任何會產(chǎn)生 阻塞的 I/O 或者別的什么事情。只有運(yùn)行的進(jìn)程才能被阻塞。2. 假設(shè)要設(shè)計一種先進(jìn)的計算機(jī)體系結(jié)構(gòu), 它使用硬件而不是中斷來完成進(jìn)程切 換。 CPU需要哪些信息請描述用硬
2、件完成進(jìn)程切換的工作過程。A:應(yīng)該有一個寄存器包含當(dāng)前進(jìn)程表項(xiàng)的指針。當(dāng) I/O 結(jié)束時, CPU將把當(dāng)前的 機(jī)器狀態(tài)存入到當(dāng)前進(jìn)程表項(xiàng)中。然后,將轉(zhuǎn)到中斷設(shè)備的中斷向量,讀取另 一個過程表項(xiàng)的指針(服務(wù)例程),然后,就可以啟動這個進(jìn)程了。3. 當(dāng)代計算機(jī)中,為什么中斷處理程序至少有一部分是用匯編語言編寫的 A:通常,高級語言不允許訪問 CPU硬件,而這種訪問是必需的。例如,中斷處 理程序可能需要禁用和啟用某個特定設(shè)備的中斷服務(wù),或者處理進(jìn)程堆棧區(qū)的 數(shù)據(jù)。另外,中斷服務(wù)例程需要盡快地執(zhí)行。 (補(bǔ)充)主要是出于效率方面的 考量。中斷處理程序需要在盡量短的時間內(nèi)完成所需的必要處理,盡量減少對 線
3、程/程序流造成的影響,因此大部分情況下用匯編直接編寫,跳過了通用編譯 過程中冗余的適配部分。4. 中斷或系統(tǒng)調(diào)用把控制轉(zhuǎn)給操作系統(tǒng)時, 為什么通常會用到與被中斷進(jìn)程的棧 分離的內(nèi)核棧A:內(nèi)核使用單獨(dú)的堆棧有若干的原因。其中兩個原因如下:首先,不希望操作系統(tǒng)崩潰,由于某些用戶程序不允許足夠的堆棧空間。 第二,如果內(nèi)核將數(shù) 據(jù)保留在用戶空間,然后從系統(tǒng)調(diào)用返回,那么惡意的用戶可能使用這些數(shù)據(jù) 找出某些關(guān)于其它進(jìn)程的信息。5. 一個計算機(jī)系統(tǒng)的內(nèi)存有足夠的空間容納 5 個程序。這些程序有一半的時間處 于等待 I/O 的空閑狀態(tài)。請問 CPU時間浪費(fèi)的比例是多少A:5 =%6. 一個計算機(jī)的 RAM有
4、 4GB,其中操作系統(tǒng)占 512MB。所有進(jìn)程都占 256MB(為 了簡化計算)并且特征相同。要是 CPU利用率達(dá)到 99%,最大 I/O 等待是多少 A:內(nèi)存中最多可放 (4GB-512MB)/256MB=14 個進(jìn)程,設(shè)每個進(jìn)程的 I/O 等待占 總運(yùn)行時間的比例為 p,則 CPU利用率 =1-p1499%=p%7. 多個作業(yè)能夠并行運(yùn)行, 比它們順序執(zhí)行完成的要快。 假設(shè)有兩個作業(yè)同時開 始執(zhí)行,每個需要 20 分鐘的 CPU時間。如果順序執(zhí)行,那么最后一個作業(yè)需要 多長時間可以完成如果并行執(zhí)行又需要多長時間假設(shè)I/O 等待占 50%。A: 每個進(jìn)程的時間為 40min 。 順序執(zhí)行時,
5、最后一個作業(yè)需要 80min 才能完成。 并行執(zhí)行時, cpu 利用率為 1-pn = 75%, cpu計算時間為 40min,故總時間 t=40/75%=8. 考慮一個 6 級多道程序系統(tǒng)(內(nèi)存中可同時容納 6 個程序)。假設(shè)每個進(jìn)程的I/O 等待占 40%,那么 CPU利用率是多少A:利用率 =1-pn=1-6 = =%9. 假設(shè)要從互聯(lián)網(wǎng)上下載一個 2GB 大小的文件,文件內(nèi)容可以從一組鏡像服務(wù) 器獲得,每個服務(wù)器可以傳輸文件的一部分。假設(shè)每個傳輸請求給定起始字節(jié) 和結(jié)束字節(jié)。如何用多線程優(yōu)化下載時間A:客戶端進(jìn)程可以創(chuàng)建單獨(dú)的線程 ; 每個線程都可以從其中一個鏡像服務(wù)器獲 取文件的不同
6、部分。 這有助于減少停機(jī)時間。 當(dāng)然,所有線程都共享一個網(wǎng) 絡(luò)鏈接。 這個鏈接可以成為一個瓶頸,因?yàn)榫€程的數(shù)量變得非常大。10. 為什么圖 2-11a 的模式不適合用于在內(nèi)存使用高速緩存的文件服務(wù)器每個進(jìn) 程可以有自己的高速緩存嗎A:即使是有可能實(shí)現(xiàn),也是很難保持文件系統(tǒng)的一致性。假設(shè)某個客戶進(jìn)程給 服務(wù)器進(jìn)程 1 發(fā)送請求要更新文件。 該進(jìn)程更新其內(nèi)存的 cache項(xiàng)。然后,另一 個客戶進(jìn)程給服務(wù)器進(jìn)程 2 發(fā)送請求讀取該文件。不幸的是,如果該文件還在 cache中,服務(wù)器進(jìn)程 2 對此毫不知情,將返回過時的數(shù)據(jù)。如果第一個進(jìn)程在 緩沖后將文件寫到磁盤中, 而服務(wù)器進(jìn)程 2 每次讀取時檢查磁
7、盤其緩存的備份 是否是最新的,系統(tǒng)還可以工作, 但是需要避免磁盤訪問的所有緩存系統(tǒng)。 (個 人認(rèn)為,高速緩存應(yīng)該每個進(jìn)程共享,因?yàn)椴皇敲總€進(jìn)程都需要頻繁讀寫數(shù)據(jù), 如果每個進(jìn)程都分配 cache 會造成資源浪費(fèi)。)11. 當(dāng)一個多線程進(jìn)程創(chuàng)建子進(jìn)程時,如果子進(jìn)程復(fù)制父進(jìn)程的所有線程,就會 出現(xiàn)問題:假如夫進(jìn)程中有一個線程正在等待鍵盤輸入,現(xiàn)在就有兩個線程在 等待鍵盤輸入,父進(jìn)程和子進(jìn)程各有一個。這種問題在單線程進(jìn)程中也會發(fā)生 嗎A:不會。如果單線程進(jìn)程在鍵盤上阻塞,就不能創(chuàng)建子進(jìn)程。(而多線程進(jìn)程 在一個線程阻塞時可以運(yùn)行另一個線程,整個進(jìn)程不會因此被阻塞。)12. 在圖 2-8中,給出了一個
8、多線程 Web 服務(wù)器。如果讀取文件的惟一途徑是正 常的阻塞 read 系統(tǒng)調(diào)用,那么 Web 服務(wù)器應(yīng)該使用用戶級線程還是內(nèi)核級線程 為什么A:當(dāng)工作者線程從磁盤讀取 Web 頁時,它就會被阻塞。如果使用用戶級線程, 該動作將阻塞整個進(jìn)程,而破壞多線程的價值。這就是使用內(nèi)核線程的原因: 某些線程的阻塞不會影響到其他線程。13. 在本章中,我們介紹了多線程 Web 服務(wù)器,說明它比單線程服務(wù)器和有限狀 態(tài)機(jī)服務(wù)器更好的原因。存在單線程服務(wù)器更好一些的情形嗎請舉例。 A:在多線程 Web 服務(wù)器中,由 分派程序 從網(wǎng)絡(luò)中讀入工作請求,在檢查請求 后,分派線程挑選一個空轉(zhuǎn)的(即被阻塞的)工作線程,
9、提交該請求。在工作 線程被喚醒后,他檢查有關(guān)的請求是否在 Web 頁面高速緩存中,這個高速緩存 是所有線程否可以訪問的。如果沒有,該線程開始一個從磁盤調(diào)入頁面的 read 操作,并且阻塞知道該磁盤操作完成。在上述線程被阻塞在磁盤操作上時,分 派線程可能挑選另一個線程運(yùn)行,可以有效利用 CPU資源。而在單線程服務(wù)器 上,只能等第一個線程完成后,才能開始第二個線程。 也存在單線程服務(wù)器更 好的情形。如果服務(wù)器是完全 CPU綁定的,則不需要多線程。這只會增加不必 要的復(fù)雜性。假設(shè)某個百萬人口區(qū)域的電話查號系統(tǒng) (類似于 114),如果每個 (姓 名,電話號碼 )記錄為 64 個字符,整個的數(shù)據(jù)庫則為
10、 64MB,這就很容易全部讀 入服務(wù)器內(nèi)存中以提供快速的查詢。14。既然計算機(jī)中只有一套寄存器,為什么在圖 2-12 中的寄存器集合是按每個 線程中列出而不是按每個進(jìn)程列出。A:當(dāng)一個線程停止時, 它在寄存器中有值。 它們必須被保存, 就像進(jìn)程停止時, 必須保存寄存器。多線程和多進(jìn)程沒有什么不同,所以每個線程需要自己的寄 存器保存區(qū)。15. 在沒有時鐘中斷的系統(tǒng)中, 一個線程放棄 CPU后可能再也不會獲得 CPU資源, 那么為什么線程還要通過調(diào)用 thread_yield 自愿放棄 CPU A:進(jìn)程中的線程合作。 它們彼此不敵對。 如果應(yīng)用程序需要阻塞以運(yùn)行得更好, 那么一個線程可以調(diào)用 th
11、read_yield 自愿放棄 CPU。畢竟, 同一個進(jìn)程中的線程 的全部代碼通常是一個程序員寫的。16. 線程可以被時鐘中斷搶占嗎如果可以,在什么情形下可以如果不可以,為什 么不可以A:用戶級線程不能被時鐘剝奪,除非整個進(jìn)程的時間片用完。內(nèi)核級線程可以 單獨(dú)地被剝奪。在后一種情況下,如果線程運(yùn)行過久,時鐘將中斷該當(dāng)前進(jìn)程, 因而當(dāng)前線程也被中斷。內(nèi)核可以自由地從同一個進(jìn)程中選取其他線程運(yùn)行。17. 請對使用單線程文件服務(wù)器和多線程文件服務(wù)器讀取文件進(jìn)行比較。假設(shè)所 需要的數(shù)據(jù)都在塊高速緩存中,獲得工作請求,分派工作,并處理其余必要工 作需要花費(fèi) 12ms。如果在時間過去 1/3 時,需要一個
12、磁盤操作, 額外花費(fèi) 75ms, 此時該線程進(jìn)入睡眠。單線程服務(wù)器每秒鐘可以處理多少個請求多線程服務(wù)器 呢A:在單線程情況下, cache 命中需要 12ms,cache未命中需要 87ms,其加權(quán)平 均為 2/3 12+1/387 = 37 ms,一秒鐘可以完成 1s/37ms = 27個. 在多線程情況 下,所有磁盤等待都是重疊的,因此每個請求耗時 12ms,一秒鐘可以完成 1s/12ms = 個(個人認(rèn)為這樣算不太準(zhǔn)確,因?yàn)樽詈蟮膸讉€線程如果 cache 未命 中的話,就需要 87ms,可能是完不成的,不過這個題意翻譯的不是很清楚,什 么叫做“時間過去 1/3 時”,估計原意應(yīng)該是”有
13、1/3 的時間需要額外的磁盤操 作“。這樣平均算下來也可以忽略 cache 未命中發(fā)生的分布情況。)18. 在用戶態(tài)實(shí)現(xiàn)線程的最大的優(yōu)點(diǎn)是什么最大的缺點(diǎn)是什么 A:最大的優(yōu)勢就是效率。不需要陷入內(nèi)核來切換線程。最大的缺點(diǎn)是,如果一 個線程阻塞,整個進(jìn)程都會阻塞。19. 在圖 2-15 中創(chuàng)建線程和線程打印消息是隨機(jī)交織在一起的。 有沒有方法可以 嚴(yán)格按照以下次序運(yùn)行:創(chuàng)建線程 1,線程 1打印消息,線程 1 結(jié)束,創(chuàng)建線程 2,線程 2 打印消息,線程 2 結(jié)束,以此類推;如果有,是什么方法,如果沒有 請解釋原因。A:是的,這是可以做到的。每次執(zhí)行 pthread-create 后,主程序可以
14、調(diào)用 pthread_join 等待剛剛創(chuàng)建的線程退出后再創(chuàng)建下一個線程。20. 在討論線程中的全局變量時,曾使用過程 create_global 將存儲分配給指向變 量的指針,而不是變量自身。這是必需的嗎還是直接使用變量自身也可行 A:將存儲分配給指針是確實(shí)必要的,因?yàn)槿肿兞康拇笮∈俏粗摹K赡苁?從字符到浮點(diǎn)數(shù)數(shù)組的任何類型。如果保存其值,就不得不把其大小傳遞給 create_global,這都沒有問題, 但是必須將其類型作為 set_global 的第二個參數(shù), 那么 read_global 返回值的類型是不確定的。21. 考慮一個線程全部在用戶態(tài)實(shí)現(xiàn)的系統(tǒng),該運(yùn)行時系統(tǒng)每秒鐘獲得一
15、個時鐘 中斷。當(dāng)某個線程正在運(yùn)行時系統(tǒng)中執(zhí)行時發(fā)生一個時鐘中斷,此時會出現(xiàn)什 么問題你有什么解決該問題的建議嗎A:runtime 系統(tǒng)可以正好在這一時刻阻塞或者解除阻塞某個線程,并且忙于處 理調(diào)度隊列。此時并不適合于時鐘中斷處理程序開始檢查該隊列是否應(yīng)該進(jìn)行 線程切換,因?yàn)樗鼈兛赡芴幱诓灰恢碌臓顟B(tài)。解決方法可以是:當(dāng)進(jìn)入 runtime 系統(tǒng)后,設(shè)置一個標(biāo)志。時鐘處理程序?qū)⒖吹皆摌?biāo)志,并且設(shè)置其自己的標(biāo)志, 然后返回。 當(dāng) runtime 系統(tǒng)完成時, 它將檢測時鐘標(biāo)志, 看是否有時鐘中斷發(fā)生, 并且現(xiàn)在運(yùn)行時鐘處理程序。22. 假設(shè)一個操作系統(tǒng)中不存在類似于 select 的系統(tǒng)調(diào)用來提前了
16、解在從文件、 管道或設(shè)備中讀取時是否安全,不過該操作系統(tǒng)確實(shí)允許設(shè)置報警時鐘,以便 中斷阻塞的系統(tǒng)調(diào)用。在上述條件下,是否有可能在用戶態(tài)中實(shí)現(xiàn)一個線程包 請討論。A:這是可能的,不過效率很低。線程想要做一個系統(tǒng)調(diào)用,首先設(shè)定警報定時 器,然后才執(zhí)行調(diào)用。如果線程阻塞,定時器將控制歸還給線程包。當(dāng)然,大 多數(shù)調(diào)用是不阻塞的,而定時器必須被清除。每個可能被阻塞的系統(tǒng)調(diào)用都必 須作為 3 個系統(tǒng)調(diào)用來執(zhí)行。如果定時器過早失效,各種問題都可能發(fā)生。用 這種方法建立線程包并不好。23. 兩個進(jìn)程在一個共享內(nèi)存的多處理器(兩個 CPU)上運(yùn)行,當(dāng)他們要共享一 塊內(nèi)存時,圖 2-23 中使用 turn 變量
17、的忙等待解決方案還有效嗎 A:仍然有效,但也仍舊是忙等待。24. 在搶占式進(jìn)程調(diào)度的條件下, 圖 2-24 中互斥問題的 Peterson解法可行嗎如果 是非搶占式調(diào)度呢 A:對搶占式調(diào)度可行。事實(shí)上,這種解法就是為它設(shè)計的。而對于非搶占式調(diào) 度,可能會失敗??紤]這種情況: turn 被初始化為 0,但進(jìn)程 1 先開始運(yùn)行了, 它就會一直循環(huán),但不釋放 CPU,具有忙等待的缺點(diǎn)。節(jié)中所討論的優(yōu)先級反轉(zhuǎn)問題在用戶級線程中是否可能發(fā)生為什么 A:當(dāng)?shù)蛢?yōu)先級進(jìn)程位于其臨界區(qū),而高優(yōu)先級進(jìn)程就緒并且被調(diào)度時,將發(fā)生 優(yōu)先級倒置問題。如果使用忙等待,高優(yōu)先級進(jìn)程將一直運(yùn)行。對于用戶級線 程,不可能發(fā)生低
18、優(yōu)先級線程突然被剝奪而允許高優(yōu)先級線程運(yùn)行,因?yàn)槭遣?可剝奪的。而內(nèi)核級線程,就會出現(xiàn)這個問題。節(jié)中描述了一種有高優(yōu)先級進(jìn)程 H 和低優(yōu)先級進(jìn)程 L的情況,導(dǎo)致了 H 陷入死 循環(huán)。若采用輪轉(zhuǎn)調(diào)度算法而不是優(yōu)先級調(diào)度算法,還會發(fā)生這樣問題嗎請討 論。A:不會發(fā)生這樣的問題。在輪轉(zhuǎn)調(diào)度算法下。 L 遲早會運(yùn)行,最終它將會離開 臨界區(qū)。關(guān)鍵是,在優(yōu)先級調(diào)度算法下, L 永遠(yuǎn)不會運(yùn)行;在輪轉(zhuǎn)循環(huán)下,它定 期得到一個正常的時間片,所以有機(jī)會離開其臨界區(qū)。27. 在使用線程的系統(tǒng)中,若使用用戶級線程,是每個線程一個棧還是每個進(jìn)程 一個棧如果使用內(nèi)核級線程呢請解釋。A:每個線程都是自己調(diào)用例程,因此它必須
19、有其自己的堆棧以保存局部變量、 返回地址等等。這一點(diǎn)用戶級線程和內(nèi)核級線程是一樣的。28. 在開發(fā)計算機(jī)時,通常首先用一個程序模擬執(zhí)行,一次運(yùn)行一條指令,多處 理器也嚴(yán)格按此模擬。在這種沒有同時事件發(fā)生的情形下,會出現(xiàn)競爭條件嗎 A:(競爭條件指多個線程或者進(jìn)程在讀寫一個共享數(shù)據(jù)時結(jié)果依賴于它們執(zhí)行 的相對時間的情形。 競爭條件發(fā)生在當(dāng)多個進(jìn)程或者線程在讀寫數(shù)據(jù)時,其最 終的的結(jié)果依賴于多個進(jìn)程的指令執(zhí)行順序。)是的。模擬計算機(jī)也可以是多 道程序設(shè)計的。例如,在進(jìn)程 A 運(yùn)行時,它讀取一些共享變量。然后發(fā)生了一 個模擬時鐘周期和進(jìn)程 B 運(yùn)行。它也讀取相同的變量,然后對變量進(jìn)行了加 1 操作。
20、當(dāng)進(jìn)程 A 運(yùn)行時,如果它也對變量進(jìn)行了加 1 操作,就發(fā)生了競爭條件。29. 將生產(chǎn)者 -消費(fèi)者問題擴(kuò)展成一個多生產(chǎn)者 -多消費(fèi)者的問題,生產(chǎn)(消費(fèi)) 者都寫(讀)一個共享的緩沖區(qū),每個生產(chǎn)者和消費(fèi)者都在自己的線程中執(zhí)行。 圖 2-28 中使用信號量的解法在這個系統(tǒng)中還可行嗎 A:可行。在給定的某個時刻,只有一個生產(chǎn)者(消費(fèi)者)可以向(從)緩沖區(qū) 添加(取出)項(xiàng)目。30. 考慮對于兩個進(jìn)程 P0和 P1的互斥問題的解決方案。假設(shè)變量初始值為 0 P0的代碼如下: p1 的代碼是將上述代碼中的 0替換為 1。該方法是否能處理互斥問題中所有可 能的情形A:該解決方案滿足互斥,因?yàn)閮蓚€流程不可能同
21、時處于Critical Section。也就是說,當(dāng) turn 為 0時, P0可以執(zhí)行其臨界區(qū),但 P1不能執(zhí)行。當(dāng) turn 為 1也 有相似的情況。但是,這假設(shè) P0必須先運(yùn)行。如果 P1 產(chǎn)生某些東西并將其放 入緩沖區(qū),那么當(dāng) P0 可以進(jìn)入其臨界區(qū)時, 它會發(fā)現(xiàn)緩沖區(qū)為空并阻塞。 而且, 該解決方案需要嚴(yán)格交替兩個過程,這是不希望發(fā)生的。31. 一個可以屏蔽中斷的操作系統(tǒng)如何實(shí)現(xiàn)信號量 A:執(zhí)行信號量操作,操作系統(tǒng)首先要禁用中斷。然后,它讀取信號量的值。如 果執(zhí)行 down 操作,而信號量等于 0,就將調(diào)用進(jìn)程放入與信號量有關(guān)的阻塞進(jìn) 程列表中。如果執(zhí)行 up 操作,必須檢測看是否有
22、任何進(jìn)程在信號量上被阻塞。 如果有一個或多個進(jìn)程被阻塞,從阻塞進(jìn)程的列表中移出一個,使之就緒。當(dāng) 所有這些操作都完成后,就可以開啟中斷了。 書中的原話是:操作系統(tǒng)只需在執(zhí)行以下操作時暫時屏蔽全部中斷:測試信號量、更新信號量 以及在需要時是某個進(jìn)程睡眠。:32.請說明如何僅通過二元信號量和普通機(jī)器指令實(shí)現(xiàn)計數(shù)信號量 (即可以保持 一個任意值的信號量)。 :A: 用兩個二值信號量和一個計數(shù)器 counter 實(shí)現(xiàn)一個計數(shù)信號量: M 用于互 斥,B 用于阻塞, counter 用于記錄 up 減去 down 的次數(shù),再用一個鏈表來記錄 阻塞在這個計數(shù)信號量上的進(jìn)程。 down 的實(shí)現(xiàn):進(jìn)程先對 M
23、 進(jìn)行 down 來獲 得 counter 、鏈表的獨(dú)占訪問權(quán),并把 counter 減 1。如果 counter 大于等于 0, 直接對 M 進(jìn)行 up 即可;否則,記錄在鏈表再 up,然后對 B 進(jìn)行 down 從而阻 塞這個進(jìn)程。 up 的實(shí)現(xiàn):進(jìn)程同樣先對 M 進(jìn)行 down ,counter 加 1,若 其大于 0,直接對 M 進(jìn)行 up 即可;否則 counter 小于等于 0,把鏈表中一個進(jìn) 程移出,然后對 B、M 依次 up 。33. 如果一個系統(tǒng)只有兩個進(jìn)程,可以使用一個屏障來同步這兩個進(jìn)程嗎為什么 A:如果程序操作按階段執(zhí)行,直到兩個進(jìn)程都完成當(dāng)前階段才能進(jìn)入下一階段, 這
24、時就應(yīng)該使用屏障。 (這個答案也有點(diǎn)奇怪,我認(rèn)為只要這兩個進(jìn)程不是生產(chǎn) 者-消費(fèi)者模式就可以使用屏障。)34. 如果線程在內(nèi)核態(tài)實(shí)現(xiàn),可以使用內(nèi)核信號量對同一個進(jìn)程中的兩個線程進(jìn) 行同步嗎如果線程在用戶態(tài)實(shí)現(xiàn)呢假設(shè)在其他進(jìn)程中沒有線程必須訪問該信號 量。請解釋你的答案。A:對于內(nèi)核線程,線程可以在信號量上阻塞,而內(nèi)核可以運(yùn)行該進(jìn)程中的其它 線程。因而,使用信號量沒有問題。而對于用戶級線程,當(dāng)某個線程在信號量 上阻塞時,內(nèi)核將認(rèn)為整個進(jìn)程都被阻塞,而且不再執(zhí)行它。因此,在用戶態(tài) 線程的同步失敗。35. 管程內(nèi)的同步機(jī)制使用條件變量和兩個特殊操作 wait 和 signal。一種更通用 的同步形式
25、是只用一條原語 waituntil ,它以任意的布爾謂詞作為參數(shù)。例如 waituntil x 0 or y + z T(c) S Q 0;44. 有 5個待運(yùn)行作業(yè), 估計它們的運(yùn)行時 N分別是 9, 6, 3, 5和X。采用哪種次 序運(yùn)行這些作業(yè)將得到最短的平均響應(yīng)時間(答案將依賴于X)A:最短作業(yè)優(yōu)先可以使得平均響應(yīng)時間最短。 0 X 3: X, 3, 5, 6, 9. 3 X 5: 3, X, 5, 6, 9. 5 X 6: 3, 5, X, 6, 9. 6 9: 3, 5,6, 9, X.45. 有 5 個批處理作業(yè) A 到 E,它們幾乎同時到達(dá)一個計算中心。估計它們的運(yùn) 行時間分別
26、為 10,6,2,4 和 8 分鐘。其優(yōu)先級(由外部設(shè)定)分別為 3,5,2, 1和4,其中 5為最高優(yōu)先級。對于下列每種調(diào)度算法,計算其平均進(jìn)程周轉(zhuǎn)時 間,可忽略進(jìn)程切換的開銷。(a) 輪轉(zhuǎn)法。(b) 優(yōu)先級調(diào)度。(c) 先來先服務(wù)(按照 10,6,2,4,8次序運(yùn)行 )。(d) 最短作業(yè)優(yōu)先。對(a),假設(shè)系統(tǒng)具有多道程序處理能力,每個作業(yè)均公平共享CPU時間 ;對(b)到 (d) ,假設(shè)任一時刻只有一個作業(yè)運(yùn)行,直到結(jié)束。所有的作業(yè)都完全是CPU密集型作業(yè)。A:對于時間片輪轉(zhuǎn),在頭 10分鐘里,每個作業(yè)獲得 1/5 的CPU時間。在第 10 分 鐘時, C結(jié)束。在接下來的 8分鐘里,每個
27、作業(yè)獲得 1/4 的 CPU時間,然后 D 完成,然后,在接下來的 6分鐘內(nèi),余下的 3個作業(yè)各獲得 1/3 的CPU時間, 直到 B結(jié)束,以此類推。因此, 5 個作業(yè)的完成時間分別為是 10, 18, 24, 28和 30, 平均為 22 分鐘。對于優(yōu)先級調(diào)度, 5 最先運(yùn)行, 6 分鐘完成。其它作業(yè)分別 在第 14, 24, 26和 30分鐘完成,平均為分鐘。如果作業(yè)按 A-E的次序執(zhí)行,則 分別在第 10,16, 18, 22和 30 分鐘完成,因此,平均為分鐘。最后,最短作業(yè)優(yōu) 先調(diào)度的完成時間分別為第 2, 6, 12, 20和 30 分鐘,平均為 14分鐘。46. 運(yùn)行在 CTSS上的一個進(jìn)程需要 30 個時間片完成。該進(jìn)程必須被調(diào)入多少次, 包括第一次 (在該進(jìn)程運(yùn)行之前)A:CTSS兼( 容分時系統(tǒng))設(shè)立優(yōu)先級類:屬于最高優(yōu)先級類的進(jìn)程運(yùn)行一個時間
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 網(wǎng)絡(luò)技術(shù)應(yīng)用能力試題及答案
- 計算機(jī)信息處理總結(jié)分析試題及答案
- 材料疲勞損傷累積分析模型重點(diǎn)基礎(chǔ)知識點(diǎn)
- 醫(yī)院門診火災(zāi)應(yīng)急預(yù)案(3篇)
- 列車發(fā)生火災(zāi)應(yīng)急預(yù)案(3篇)
- 車站街道火災(zāi)應(yīng)急預(yù)案(3篇)
- 經(jīng)濟(jì)危機(jī)影響下的政治經(jīng)濟(jì)學(xué)問題試題及答案
- 公園停車場火災(zāi)應(yīng)急預(yù)案(3篇)
- 2025年法學(xué)概論考試社會影響與試題及答案
- 2025年AI倫理與法律問題試題及答案
- 分居協(xié)議(模版)
- 2025屆湖北省新八校協(xié)作體高三下學(xué)期5月壯行考化學(xué)試題及答案
- 2025江蘇中考:物理高頻考點(diǎn)
- 日料店空間設(shè)計
- 2024年高級審計師試題及答案解析
- 2025-2030年中國醫(yī)用熱敏紙行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 2025年江西省安??h事業(yè)單位公開招聘輔警36名筆試題帶答案
- 2025年全國國家版圖知識競賽題庫及答案
- 2025年春人教版英語七年級下冊 Unit 7 A Day to Remember(教學(xué)設(shè)計)
- 《船舶管理》助理船副考試復(fù)習(xí)題庫(含答案)
- YAMAHA(雅馬哈)貼片機(jī)編程培訓(xùn)教材
評論
0/150
提交評論