膠着 狀態

위키百科, 우리 모두의 百科事典.

膠着 狀態 (膠着狀態) 또는 데드락 ( 英語 : deadlock )銀 두 個 以上의 作業이 서로 相對方의 作業이 끝나기 만을 기다리고 있기 때문에 結果的으로 아무것도 完了되지 못하는 狀態이다. 例를 들어 하나의 사다리 가 있고, 두 名의 사람이 各各 사다리의 위쪽과 아래쪽에 있다고 假定한다. 이때 아래에 있는 사람은 위로 올라 가려고 하고, 위에 있는 사람은 아래로 내려오려고 한다면, 두 사람은 서로 相對方이 사다리에서 비켜줄 때까지 하염없이 기다리고 있을 것이고 結果的으로 아무도 사다리를 내려오거나 올라가지 못하게 되듯이, 電算學 에서 膠着 狀態란 多衆 프로그래밍 環境에서 흔히 發生할 수 있는 問題이다. 이 問題를 解決하는 一般的인 方法은 아직 없는 狀態이다.

膠着 狀態의 條件 [ 編輯 ]

1971年 E. G. 코프만 敎授는 膠着狀態가 일어나려면 다음과 같은 네 가지 必要 條件 을 充足시켜야 함을 보였다.

  1. 相互排除 (Mutual exclusion) : 프로세스들이 必要로 하는 資源에 對해 排他的인 統制權을 要求한다.
  2. 點유대기 (Hold and wait) : 프로세스가 割當된 資源을 가진 狀態에서 다른 資源을 기다린다.
  3. 비선點 (No preemption) : 프로세스가 어떤 資源의 使用을 끝낼 때까지 그 資源을 뺏을 수 없다.
  4. 循環待機 (Circular wait) : 各 프로세스는 循環的으로 다음 프로세스가 要求하는 資源을 가지고 있다.

이 條件 中에서 한 가지라도 滿足하지 않으면 膠着 狀態는 發生하지 않는다. 二重 循環待機 條件은 點유대기 條件과 非先占 條件을 滿足해야 成立하는 條件이므로, 위 4가지 條件은 서로 完全히 獨立的인 것은 아니다.

膠着 狀態의 管理 [ 編輯 ]

現在의 大部分의 運營 體制들은 膠着 狀態를 막는 것은 不可能하다. [1] 膠着 狀態가 發生하면 여러 運營 體制들은 제各其 다른 非標準 方式들로 이러한 膠着 狀態에 對應한다. 大部分의 接近들은 4가지 코프먼 條件들 가운데 하나(特히 4番째 것)를 막음으로써 動作한다. [2] 主要 接近 方式은 다음과 같다.

膠着 狀態의 豫防 [ 編輯 ]

  • 相互排除 條件의 除去
膠着 狀態는 두 個 以上의 프로세스가 共有可能한 資源을 使用할 때 發生하는 것이므로 共有 不可能한, 卽 相互 排除 條件을 除去하면 膠着 狀態를 解決할 수 있다.
  • 占有와 待機 條件의 除去
한 프로세스에 遂行되기 前에 모든 資源을 割當시키고 나서 占有하지 않을 때에는 다른 프로세스가 資源을 要求하도록 하는 方法이다. 自願 過多 使用으로 인한 效率性, 프로세스가 要求하는 資源을 把握하는 데에 對한 費用, 資源에 對한 內容을 貯藏 및 復元하기 위한 費用, 飢餓 狀態 , 無限大氣 等의 問題點이 있다.
  • 비선點 條件의 除去
비선點 프로세스에 對해 先占 可能한 프로토콜을 만들어 준다.
  • 換刑 待機 條件의 除去
自願 類型에 따라 順序를 매긴다.

이 膠着 狀態의 解決 方法들은 自願 使用의 效率性이 떨어지고 費用이 많이 드는 問題點이 있다.

膠着 狀態의 回避 [ 編輯 ]

資源이 어떻게 要請될지에 對한 追加情報를 提供하도록 要求하는 것으로 시스템에 circular wait가 發生하지 않도록 資源 割當 狀態를 檢査한다.

膠着 狀態 回避하기 위한 알고리즘으로 크게 두가지가 있다.

  1. 資源 割當 그래프 알고리즘 (Resource Allocation Graph Algorithm)
  2. 銀行員 알고리즘 (Banker's algorithm)

膠着 狀態의 無視 [ 編輯 ]

豫防 或은 回避技法을 프로그래밍해서 넣으면 性能에 큰 影響을 미칠 수 있게 된다. 그렇기 때문에 데드락의 發生 確率이 比較的 낮은 境遇 별다른 措置를 取하지 않는다.

膠着 狀態의 發見 [ 編輯 ]

監視/發見을 하는 detection 알고리즘으로 Deadlock 發生을 체크하는 方式. 이 亦是 性能에 큰 影響을 미칠 수 있다.

같이 보기 [ 編輯 ]

參照 [ 編輯 ]

  1. Silberschatz, Abraham (2006). 《Operating System Principles》 7板. Wiley-India. 237쪽 . 2012年 1月 29日에 確認함 .  
  2. Stuart, Brian L. (2008). 《Principles of operating systems》 1板. Cengage Learning. 446쪽 . 2012年 1月 28日에 確認함 .  

外部 링크 [ 編輯 ]