2023. 1. 10. 22:37ㆍIntelligence Technology
교착상태(Dead Lock)란
상호 배제*의 원칙으로 인해 발생하는 문제점으로, 두 개 이상의 프로세스들이 자원을 점유한 상태에서 양보 없이 다른 프로세스가 차지한 자원을 요구하면 계속 기다리고 있는 상태를 의미합니다.
*상호배제 특정 프로세스가 자원을 사용하고 있는 경우 다른 프로세스가 해당 자원을 사용하지 못하게 막는 기법 |
1차선 도로에서 차가 양방향으로 진입해 움직이지 못하는 상황을 생각하시면 됩니다.
교착상태가 발생하려면 아래의 4가지의 조건이 충족돼야 합니다. 4가지 중 하나라도 미충족 된 상태면 교착상태가 발생하지 않습니다.
충족 요건 | 내용 |
상호 배제(Mutual Exclusion) | 자원은 한번에 하나의 프로세스만 사용할 수 있음 |
점유와 대기(Hold and Wait) | 최소 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용되고 있는 자원을 추가로 점유하기 위해 대기하는 프로세스가 있음 |
비선점(Non-preemption) | 다른 프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 다른 프로세스가 차지할 수 없음 |
환형 대기(Circular Wait) | 공유 자원과 공유 자원을 사용하기 위해 대기하는 프로세스들이 원형으로 구성되어 있어 앞이나 뒤에 있는 프로세스의 자원을 요구함 |
그렇다면 교착상태를 해결하기 위한 방법은 무엇이 있을까요?
예방기법(Prevention), 회피기법(Avoidance), 발견기법(Detection), 회복기법(Recovery) 총 4가지가 있습니다.
예방기법
교착상태가 발생하지 않도록 사전에 시스템을 제어하는 방법입니다. 교착상태를 유발하는 4가지 중 하나를 부정함으로써 작동을 하지만 자원의 낭비가 가장 심한 방법입니다.
부정 항목 | 내용 |
상호 배제(Mutual Exclusion) 부정 | 한 번에 여러 개의 프로세스가 자원을 사용할 수 있게 허용 |
점유와 대기(Hold and Wait) 부정 | 프로세스가 실행되기 전 필요한 모든 자원을 할당해서 프로세스의 대기를 없애거나, 자원이 점유되지 않은 상태에서만 자원을 요청하도록 설정 |
비선점(Non-preemption) 부정 | 자원을 점유하고 있는 프로세스가 다른 자원을 요구할 때 점유하고 있는 자원을 반납하게 하며, 요구한 자원을 사용할 수 있을때까지 기다리게 함 |
환형 대기(Circular Wait) 부정 | 환형이 아닌 선형으로 자원을 분류하여 고유 번호를 할당하고 각 프로세스는 현재 점유한 자원의 고유 번호보다 앞이나 뒤에 있는 방향 하나로만 자원을 요구하도록 설정 |
회피기법
교착상태가 발생할 가능성을 배제하지 않고 적절히 피해나가는 방법입니다. 은행원 알고리즘*이 많이 사용됩니다.
*은행원 알고리즘(Banker's Algorithm) -각 프로세스에게 자원을 할당하여 교착상태가 발생하지 않으며 모든 프로세스가 완료될 수 있는 상태를 안전상태, 교착상태가 발생할 수 있는 상태를 불안정 상태로 구분 -은행원 알고리즘을 사용하려면 자원의 수와 작업의 수가 일정해야 함 -은행원 알고리즘은 프로세스의 모든 요구를 유한한 시간 안에 할당하는 것을 보장함 |
발견기법
시스템에 교착상태가 발생했는지 점검하여 교착상태에 있는 프로세스와 자원을 발견하는 방법입니다.
회복기법
교착상태를 일으킨 프로세스를 종료하거나 교착상태의 프로세스에 할당된 자원을 선점하여 프로세스나 자원을 회복하는 방법입니다.
프로세스를 종료하는 방법에는 교착상태에 있는 모든 프로세스를 종료하는 방법과 교착상태에 있는 프로세스들을 하나씩 종료해 가며 문제를 해결하는 방법이 있습니다.
그리고 자원 선점 방법에는 교착상태의 프로세스가 차지하고 있는 자원을 뺏고 다른 프로세스에게 할당하며 해당 프로세스를 일시 정지시키는 방법이 있습니다.
이상으로 교착상태를 해결하는 프로세스 관리 방법에 대한 포스팅을 마치겠습니다.
오늘도 똑구의 블로그를 방문해 주셔서 감사합니다.
'Intelligence Technology' 카테고리의 다른 글
[정보처리기사] 정보시스템이란? 정보처리를 위한 시스템 종류는? (0) | 2023.03.23 |
---|---|
[운영체제] 기억장치 관리전략 (0) | 2023.01.13 |
[운영체제] 프로세스 관리(선점 스케줄링) (0) | 2023.01.09 |
[운영체제] 비선점 스케줄링 기법 (0) | 2023.01.08 |
[운영체제] 운영체제 정의, 인터페이스, 작업 처리 방법 (0) | 2022.12.04 |