본문 바로가기
CS/OS

[OS] 교착상태(Dead Lock)의 정의와 발생조건 4가지: 상호배제, 점유와 대기, 비선점, 환형대기

by jangThang 2023. 7. 31.
반응형

 절대 풀리지 않는 죽음의 대기상태를 Dead Lock, 교착상태라고 합니다. 이 교착상태가 생기는 4가지 조건에 대해 알아봅니다.

 

[ Contents ]

     

     

    1. 교착상태 (Dead Lock)

    프로세스가 더 이상 진행되지 않고 (필요한 자원을) 무한정 대기하는 상태

     

     교착상태는 작업에 필요한 자원을 얻지 못해 무한정 대기하는 상태를 말합니다. 대체로 일부 자원은 확보했으나 나머지 자원을 받지 못해서 발생합니다.

     젓가락 예시를 많이 들며, 다들 젓가락 1개씩만 갖고 있어서 식사를 못하는 상태를 '교착상태'로 비유하곤 합니다. 젓가락 1개를 더 얻어야 하지만, 이미 다른 사람들이 1개씩 다 가져가서 없죠. 그렇다고 남의 젓가락을 뺏을수도 없고, 내가 얻은 젓가락을 포기할 수도 없습니다.

     그래서 첨예한 대치상태로 무한정 대기하는 교착상태가 발생합니다.

     

     

    2. 교착상태 발생조건 4가지

     교착상태는 아래 4가지 조건을 모두 만족할 때 발생합니다.

     

    1) 상호배제 (Mutual Exclusion)

    한 프로세서만 자원을 독점적으로 사용

     

     자원은 '상호배제'가 원칙입니다.

     그래야 동시에 여러 명이 덮어쓰기 작업을 하거나, 덮어쓰기 전 자원을 읽어서 데이터가 불일치하는 경우를 막을 수 있죠.

     

     

    2) 점유와 대기 (Hold and Wait)

    필요한 자원을 일부 점유한채, 다른 자원을 요청 중인 상태

     

     교착상태의 원흉은 '점유와 대기'인 경우가 많습니다. 

     서로 필요한 자원을 맞들고 있는 상황으로, 당연히 작업이 진행되지 않습니다. 따라서 필요한 자원은 한꺼번에 점유해서 사용하거나, 일정 시간동안 점유한 채 대기하면 도로 자원을 환원하는 방침을 사용해야 합니다.

     

     

    3) 비선점 (Non-preemption)

    다른 프로세스가 사용중인 자원을 강탈할 수 없음

     

     이미 점유중인 자원을 강탈할 수 없기 때문에 교착상태가 발생합니다.

     선점을 허용한다면 교착상태는 예방할 수 있지만, 작업 효율은 떨어질 수 있습니다. (진행중인 프로세스의 작업을 중단시키고 자원을 빼앗아가므로)

     또한 어떤 작업을 우선시 해야하는지에 대한 우선순위를 결정하는 복잡한 과정이 수반될 수도 있습니다.

     

     

    4) 환형대기 (Circular Wait)

    P: 프로세스, R: 자원(리소스)

    프로세스가 자원이 원형을 이루며, 상대방과 자신이 필요한 자원이 맞물린 상태

     

     환형대기는 필요조건보다는 충분조건의 느낌이 강합니다. 교착상태가 발생하면 당연히 서로의 프로세스가 맞물린 환형대기 상태가 됩니다. 따라서 앞서 나온 3가지 조건 중에서 해법을 찾는 게 좋습니다.

     

     굳이 환형대기를 막고자 한다면, 자원마다 고유번호를 지정한 후 점유 중인 자원의 앞뒤로만 요청하는 방식이 있습니다. 이는 여분의 다른 자원이 있음에도 인접한 자원만 요청해야하므로 효율이 크게 낮아지게 됩니다.

     

    star가 되고나서 Tistory

    반응형

    댓글