상 | 교착상태(Deadlock) | [정의]다중프로그램환경에서두개이상의프로세스가아무리기다려도자원을사용할수없는무한대기상태 [특징]상호배제, 점유와대기, 비선점, 환형대기, 예방, 회피, 발견, 회복 Wait-die와 Wound-wait 교착상태 4가지발생조건(상점비환) 및 은행가 알고리즘 등 4가지 예방, 회피, 발견, 회복 기법을 기억하세요 |
토픽 이름 | 교착상태 |
분류 | OS > 병행 제어 > 교착상태 |
키워드(암기) | 상호배제, 점유와 대기, 비선점, 환형대기, 예방, 회피, 발견, 회복 |
암기법(해당경우) | 상점비환, 예피발복 |
기출문제
번호 | 문제 | 회차 |
1 | 4. 교착상태 | 기_116-관-1-4 |
2 | Deadlock 발생원인과 해결방안 | 기_71-응-1-9 |
3 | 다중 프로그래밍 운영체제 하에서 발생하는 교착상태(Dead Lock)를 회피(Avoidance)하기 위한 Banker's Algorithm을 설명하시오. | 기_86-관-4-2 |
4 | 교착상태(Deadlock)의 필요조건과 교착상태 회피 방법으로 많이 사용되고 있는 Banker 알고리즘을 설명하시오. | 기_101-관-3-3 |
I. 다중 프로세싱 환경에서 무한 자원대기, 교착상태의 개요
- 다중 프로그램 환경에서 두 개 이상의 프로세스가 아무리 기다려도 자원을 사용할 수 없는 무한 대기 상태
II. 교착상태 개념도 및 발생원인
가. 교착상태 개념도
![]() |
나. 교착상태 발생 원인
원인 | 설명 |
상호배제 (Mutual Exclusion) | - 프로세스들이 자원을 배타적으로 점유하여 다른 프로세스가 그 자원을 사용하지 못함 |
점유와 대기 (Block & wait) | - 프로세스가 어떤 자원을 할당 받아 점유하고 있으면서 다른 자원을 요구 |
비선점 (Non preemption) | - 프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 빼앗을 수 없으며, 점유하고 있는 프로세스 자신만이 해제 가능 |
환형대기 (Circular wait) | - 프로세스간 자원요구가 하나의 원형을 구성 |
- 교착상태는 한 시스템에서 다음 4가지 조건이 동시에 성립될 때 발생
III. 교착상태 해결방안 및 상세설명
가. 교착상태 해결방법
해결방안 | 핵심 내용 |
예방 (Prevention) | - 상호배제 조건, 점유와 대기조건, 비선점 조건 및 환형대기 조건의 부정 |
회피 (Avoidance) | - Banker’s Algorithm(은행가 알고리즘), Wait-die, wound-wait 알고리즘 |
발견 (Detection) | - 시스템의 상태를 감시 알고리즘 통해 교착상태 검사 - 자원할당 그래프, Wait for Graph |
회복 (Recovery) | - Deadlock이 없어질 때까지 프로세스를 순차적으로 Kill하여 제거 - 프로세스 종료비용 최소화 : 우선순위, 진행비용, 복귀비용 등 - 자원의 우선순위 할당 : 희생자 선택, 복귀, 기아 상태 |
나. 교착상태 해결방안 상세설명
1) 교착상태의 예방
구분 | 설명 | 단점 |
상호배제 조건의 부정 | - 공유할 수 없는 자원을 사용할 때 성립 | 프로그램 구조의 복잡화 동일 자원의 필수적 상호 배제 상황 발생 시 문제 해결의 어려움 |
점유와 대기조건의 부정 | - 프로세스가 자원을 요청할 때는, 다른 자원들을 점유하지 않을 것을 보장함 | 자원낭비 및 비용증가 자원공유 불가능 Starvation 발생가능 |
비선점 조건의 부정 | - 어떤 자원을 가진 프로세스가 더 이상 자원할당 요구가 받아지지 않으면 점유자원을 반납 | 비용증가 Starvation 발생가능 일부 자원은 안전하게 선점 불가 |
환형대기 조건의 부정 | - 모든 프로세스에게 각 자원의 유형별로 할당순서를 부여하는 방법 | 새로운 자원 추가 시 재구성 필요 |
- 사전에 교착 상태의 발생 가능성을 모두 제거하도록 시스템을 제어
2) 교착상태의 회피
알고리즘 | 설명 |
자원할당 그래프 알고리즘 |
종류별 자원이 한 개인 경우 자원 종류마다 한 개의 자원 요청가능 자원할당 그래프+예약간선(claim edge) 프로세스가 자원 요청하면 예약간선은 요청간선으로 전환 ![]() 이 요청간선을 할당간선으로 변환해도 cycle이 없을 때만 할당 자원 할당 그래프(resource allocation graph) : 프로세스와 자원간의 관계를 나타내는 그래프 |
Banker’s 알고리즘 |
- 운영체제가 자원의 상태를 감시하고 프로세스가 사전에 필요한 자원의 수를 제시 관리하는 교착상태 회피 알고리즘 - 종류별 자원이 여러 개인 경우 프로세스의 최대자원 요구량, 현재 할당된 자원의 수 등을 이용하여 프로세스의 자원 할당이 안전한지 여부를 확인 후 할당 |
- 교착 상태 발생 가능성을 인정하고 교착 상태가 발생하려고 할 때 이를 적절하게 피해가는 방법
3) 교착상태의 발견
![]() |
- 시스템 상태를 감시하는 알고리즘을 통해 교착상태를 검사하는 알고리즘 |
- 시스템 운영 중에 교착 상태가 발생했는지를 결정하고 교착 상태에 관련된 프로세스와 자원을 발견
4) 교착상태의 회복
구분 | 항목 | 설명 |
프로세스 종료 | 교착 상태 프로세스들을 모두 중지 | 교착 상태에 빠진 모든 프로세스들을 종료함으로써 확실하게 교착 상태의 사이클을 해결하지만 비용이 많이 소요 |
한 프로세스씩 중지 | 교착 상태에 빠진 프로세스들 중에서 한 프로세스씩 순서대로 종료 시켜 가면서 교착 상태를 해결하는 방법 | |
희생자 선택의 원칙 | 최소 비용의 원칙으로 희생자(victim) 프로세스를 선정 | |
자원 선점 대상 선택 | 희생자 선정 문제 | 교착 상태에 빠진 프로세스들 중에서 최소의 피해를 주면서 어느 프로세스 자원을 선점할 것인지를 결정 |
복귀 문제 | 자원을 선점 당한 프로세스를 안전 상태로 복귀시키고, 종료된 지점부터 다시 재시작 | |
기아 상태 문제 | 자원들이 항상 동일한 프로세스로부터 선점되면, 기아(starvation) 상태가 발생 |
- 시스템으로부터 교착 상태를 제거하여 이후로는 시스템이 교착 상태에 빠지지 않고 계속 진행되게 하는 것
IV. Deadlock 해결을 위한 전체 시스템 설계
항목 | 설명 |
내부 시스템 자원 순서화 | PCB, 버퍼, Semaphore등의 자원 순서화 |
사용자 작업에 대한 주기억장치 선점 | - 선점은 Paging, Segmentation, Swapping 시스템에서 가장 효율적인 접근법 - 선점이 불가능하면 주기억 장치를 작업자원의 부류에 포함시킴 |
자원필요량 산정 | 작업이나 작업단계의 자원필요량 산정 |
교체 가능 공간 사전 할당 | 요구된 기억장치를 사전에 할당 |
“끝”
반응형
'정보관리기술사 > CA_OS' 카테고리의 다른 글
Banker's Algorithm(은행가알고리즘) (1) | 2023.11.27 |
---|---|
모니터/Monitor 동기화 (1) | 2023.11.26 |
우선순위 역전 (0) | 2023.11.24 |
Semaphore (1) | 2023.11.23 |
Mutual Exclusion(상호배제)/뮤텍스 (1) | 2023.11.22 |