民國115年 高考三級 電力工程 計算機概論

第4題

在多執行緒(multithread)的作業系統,可能會有飢餓(starvation)或死 結(deadlock)的問題,請問它們各自是怎樣的情況會造成這樣的問題…

題目

在多執行緒(multithread)的作業系統,可能會有飢餓(starvation)或死 結(deadlock)的問題,請問它們各自是怎樣的情況會造成這樣的問題。 請各提出一個解決的方法,並說明為何可以解決問題。(20 分)

參考解答(AI 生成,非官方)

  • 一、飢餓(starvation)是指某執行緒長期得不到所需資源或 CPU,雖然系統仍有其他執行緒在進展,但該執行緒的等待時間沒有上限。常見於固定優先權排程,低優先權執行緒不斷被高優先權執行緒插隊,或資源分配政策偏向特定對象。
  • 二、解決飢餓可用老化(aging):隨等待時間增加逐步提高該執行緒的優先權,使其最終能取得資源;也可採公平排程、FIFO 或保證最小服務配額。為何有效?因為把等待時間納入排程決策,可消除「永遠有更高優先權者」的無界延遲,提供有界等待。
  • 三、死結(deadlock)是指兩個以上執行緒互相持有對方所需的資源,並永久等待對方釋放,導致全部無法前進。形成死結通常需同時滿足四條件:互斥、持有並等待、不可剝奪、循環等待;例如 T1 持有 R1 等 R2,T2 持有 R2 等 R1。
  • 四、解決死結可採預防:將資源編號,規定只能依遞增順序申請,破壞循環等待;或一次申請全部資源,破壞持有並等待;亦可允許資源剝奪。避免法如 Banker's algorithm 在分配前檢查是否仍處安全狀態;偵測法則建立 wait-for graph,找出循環後終止、回滾或搶占。
  • 五、兩者不同:老化只處理排程不公平造成的延遲,不能打破循環等待;死結預防可能降低資源利用率,避免法需事先知道最大需求,偵測法有額外負擔。實務上常以資源排序、逾時機制與偵測回收搭配使用,並以公平排程降低飢餓風險。

AI 依官方試題文字產生的參考解答,非考選部公告答案,內容僅供備考參考。

官方資料