現代作業系統 第四版 第二章答案(待更)

2021-10-04 04:30:51 字數 4350 閱讀 9399

1:

程序在阻塞之後不能直接執行,要先轉為就緒態再由3轉為執行。

就緒不能直接阻塞,因為就緒的程序並未執行,不會阻塞。

2:應該有乙個暫存器儲存當前程序表項的指標,當i/o結束時,cpu把當前的機器狀態存入當前的程序表項中,然後轉到中斷向量讀取另乙個過程表項的指標,啟動這個程序。

3:高階語言不能直接訪問cpu硬體,但必須進行這種訪問,而且使用彙編編寫減少了對執行緒/程式的影響。

4:防止作業系統崩潰, 因為有些使用者程式不支援足夠的堆疊空間, 防止惡意的使用者程式挖掘其他程序的資訊。

5:0.55

6:最多可以容納(4 * 1024 – 512)/ 256 = 14個程序, 設每個程序的等待i/o的時間與總執行時間的比例為p, 1 – p14 > 99%, 所以p < 71.9%。

7:每個作業總的執行時間為40分鐘, 若為順序執行,最後乙個作業需要40+40 = 80分鐘完成;

若為並行執行, cpu的利用率 = 1 – 0.5² = 0.75, 40 / 0.75 = 53.33分鐘。

8:1 – 0.46

9:客戶機程序建立多個執行緒, 每個執行緒從乙個映象伺服器獲取檔案的不同部分。有助於減少停機時間

10:難以保證檔案系統的一致性。 若某客戶程序給伺服器程序1傳送請求要更新檔案, 然後另乙個客戶程序給伺服器程序2傳送請求要讀資料,可能會讀到更新前的資料。

若給每個程序都分配cache會導致資源浪費, 因為不是所有的程序都要頻繁的讀寫資料。

11:不會, 如果單執行緒程序發生阻塞, 就不能建立子程序。

12:應適應核心級執行緒。

若使用使用者級執行緒的話, 使用了阻塞的read呼叫,若被阻塞,整個程序中所有執行緒都會被阻塞, 因為使用者級執行緒中核心不知道有執行緒的存在。

13:多執行緒伺服器, 分派執行緒去呼叫阻塞的工作執行緒。 工作執行緒去檢查有關請求是否在web頁面快取記憶體中,如果沒有, 該執行緒開始乙個從磁碟調入頁面的read操作, 並阻塞到該磁碟操作完成, 當工作執行緒阻塞時, 分派執行緒可以挑選另乙個執行緒執行。 從而減少cpu空轉的時間。

若cpu和伺服器完全繫結, 則不需要多執行緒, 單執行緒可以簡單化。

14:當進行執行緒切換時, 必須要儲存執行緒的暫存器,多執行緒跟多程序沒有什麼不同。

15:程序中的執行緒要合作,不能乙個執行緒一直執行。

16:使用者級執行緒不可以被時鐘中斷, 而核心級執行緒可以, 若執行緒執行過久,時鐘會切斷當前程序。

17:單執行緒的情況下, cache命中需要12ms, cache未命中需要87秒,加權平均為 1/3 * 87 + 2/3 * 12 = 37ms,1s / 37ms = 27。

多執行緒的情況下,所有磁碟等待都是重疊的, 1s / 12ms = 83.3.

18:使用者級執行緒中,

優點: 儲存該執行緒狀態的過程和排程程式都是本地過程, 效率比核心級執行緒高很多, 執行緒切換時不需要陷入核心, 也不需要對cache重新整理, 並且允許執行緒有自己定製的排程演算法。

缺點: 在乙個執行緒執行時, 在該程序中其他執行緒就不能執行, 除非該執行緒自動放棄cpu, 否則將一直執行下去。因為在乙個程序內部, 沒有時鐘中斷

20:因為全域性變數的型別位置, 要儲存的話, 必須要傳遞給cread_globe。

21:可能會出現不一致狀態, 使用訊號量。

22:可能, 但效率很低, 執行緒請求乙個系統呼叫, 需要先設定報警定時器,這種方法不好。

23:有效。

24:peterson演算法就是為搶占式排程而設計的。 而非搶占式排程可能會失敗。

25:優先順序反轉是指, 當低優先順序程序進入臨界區時,高優先順序程序轉為就緒態,但因為後者優先順序高, 所以不會排程比他優先順序低的程序,進而低優先順序的程序無法離開臨界區。

而使用者級執行緒不可能存在這個問題, 因為使用者級執行緒不能中斷, 核心級執行緒會出現這個問題。

26:輪轉排程演算法不會出現這樣的問題, 因為給每個程序分配時間片, 時間到了之後系統剝奪其cpu使用權, 所以死迴圈。

28:競爭條件是指 多個程序或執行緒讀寫乙個共享資料時, 其最終執行結果依賴於執行的相對時間。

會, 模擬計算機也是多道程式設計。

29:仍然可行, 因為在某乙個時刻, 只有乙個生產者/消費者可以訪問共享緩衝區。

30:當p1先執行的時候就會出問題。

31:執行訊號操作, 作業系統必須禁用中斷, 然後它讀取訊號量的值,

若執行p操作, 訊號量的值小於0的話, 該程序進去排隊佇列中,若大於0, 則該程序繼續執行。

若為v操作, 訊號量的值小於0的話, 釋放等待佇列中的乙個程序, 若大於0, 則該程序繼續執行。

32:需要乙個二元訊號量m表示互斥, 乙個二元訊號量表示阻塞, 乙個鍊錶表示當前阻塞的程序, 乙個counter表示執行v操作減去p執行p操作的數目。

p操作: 首先對m進行p操作, 然後對counter進行p操作, 判斷counter的值,若大於等於0, 則對m進行v操作, 若小於0, 把該程序記錄在鍊錶上再執行v操作, 並對b進行p操作從而阻塞該程序。

v操作: 首先對m進行p操作, counter執行v操作, 若counter大於等於0, 則對m直接v操作, 若小於0, 從鍊錶中選出乙個程序, 然後對b、m依次執行v操作。

33:只要兩個程序不是生產者-消費者問題,就可以使用屏障。

34:若在核心級執行緒中, 可以使用訊號量, 該執行緒在訊號量上阻塞, 而核心可以執行該程序中的其他執行緒, 可以實現同步。

若在使用者級執行緒中, 若該執行緒在訊號量上阻塞, 整個程序就會被阻塞, 所以無法實現同步。

35:這樣做代價很高, 而用用他們兩個的方法 只需要執行signal原語就可以喚醒程序。

36:訊息傳遞。

食物, 訂單, 袋子是訊息。

37:不會, 只會發生忙等待。

38:nt

39:3個

40:可以讓更重要的程序出現多次去獲得更大的cpu使用時間, 若該程序阻塞時,能將該就緒程序列表中把當前程序包括當前程序的備份阻塞, 就允許出現多次。

41:簡單的情況下可以看出, 若程式開始時,讀取所有輸入檔案, 則不是i/o密集型, 若經常對不同的檔案進行讀取, 則可能是i/o密集型。

可以使用unix的ps操作, 獲得程式執行的cpu時間, 與整個時間執行對比。

42:若時間片非常短, 進行上下文切換所佔的時間片比例就大。

若時間片長, 上下文切換所佔的時間比例就小。

43:t / (t+s),

t / (t+s),

q / (q+s),

1/ 2,

~0.44:

採用最短作業優先排程(sjf), 判斷x的取值範圍。

45:輪轉排程:

第一次分配10分鐘cpu時間, 每個程序分配1/5的cpu時間, 第一次分配結束時, c程序結束。

第二次分配8分鐘cpu時間, 每個程序分配1/4的cpu時間, 第二次分配結束時, d程序結束。

…………

a程序需要30分鐘, b程序需要24分鐘, c程序需要10分鐘, d程序需要18分鐘, e程序需要28分鐘。 平均22分鐘。

優先順序排程:

按優先順序執行, 程序依次的執行時間為 6, 14, 24, 26, 30. 平均20分鐘

先來先服務

程序依次執行時間為10, 16, 18, 22, 30, 平均19.2分鐘

最短作業優先

程序依次執行時間為2, 6, 12, 20, 30, 平均14分鐘。

46:最高優先順序的執行1個時間片, 次優先順序執行2個時間片……

執行之後程序優先順序降低一級,

所以需要5次, 1、2、4、8、15.

47:1 / 5 * 2 + 11 / 33 = 11 / 15 < 1

可以排程。

48:1 / 5 * 2 + 11 / 33 * 2 > 1

不可以排程。

49:[(40 * 1 / 2 + 20 * 1 / 2) * 1 / 2 + 40 * 1 / 2] * 1 / 2 + 15 * 1 / 2 = 25ms.

50:35 / 50 + 20 / 100 + 10 / 200 + 2 / 250 < 1

x <= 12.5ms

51:可以。

52:1 / 6 * 2 + 20 / 1000 * 25 < 1, 可排程。

53:核心通過任何方式排程程序, 程序嚴格按照優先順序順序執行。

54:設定為hungry之後, 在乙個哲學家吃完之後, 就可以檢查左右側的哲學家是否為hungry, 若此時他為hungry並且他的左右叉子可用, 就可以設定為eating。

55:若這樣改, 整個哲學家左右的哲學家永遠是hungry。

56:讀者優先: 只要有讀者在讀, 就不允許寫者執行寫操作, 當寫者完成時, 全部讀者進行讀操作。

寫者優先:只要有寫者再寫, 就不允許讀者進行讀操作,每當結束乙個程序時, 若有若有寫者存在, 就啟動寫者, 否則啟動所有讀者。

公平:一旦有讀者開始讀操作, 後續所有讀者優先, 一旦有寫者在寫操作, 後續所有寫者優先。

作業系統(第四版) 關於死鎖

死鎖 指多個程序在執行過程中,因爭奪資源而造成的一種僵局。當程序處於這種狀態時,若無外力作用,它們都將無法再向前推進 產生死鎖的原因可歸為兩點 1 競爭資源 可把系統中的資源分為兩類 可剝奪和非剝奪性資源 可剝奪性資源 分配給程序後可以被高優先順序的程序剝奪。如cpu和主存。不可剝奪性資源 分配給程...

C Primer(第四版)答案之第五章

12 3 4 5 15 24 4 2 16 75 0 91 30 3 21 5 90 4 86,不依賴於機器 30 3 21 5 30 12 18,不依賴於機器 30 3 21 5 0,不依賴於機器 30 3 21 4 2,依賴於機器 include using namespace std int ...

作業系統(第四版湯小丹)學習筆記

說起來大家可能不信,我校是先教作業系統再教數構 組成 網路的 老師講得也很水,摸不著頭腦,反正上課閒著也是閒著,正好又搞到了第三版的電子版,於是就試著在課上整理了這份筆記。這份筆記的作用也只是當知識點記錄型的,不知不覺就記了好幾十頁 重要的配圖基本找齊了,不過可能有清晰度和水印之類的問題 前期因為老...