1. 교착상태(Deadlock)란?
두 개 이상의 프로세스가 자신이 가진 자원은 계속 가지고 있으면서 서로 상대방이 가진 자원을 요구하게 되는 상태.
2. 교착상태 발생 조건
아래 4가지 조건이 모두 발생하면(AND 조건 만족) 데드락이 발생할 가능성이 있다.
① 상호 배제(Mutual exclusion) 조건
- 프로세스들이 필요로 하는 자원에 대해 배타적인 통제권을 요구
② 대기(Waiting) 조건
- 할당된 자원을 가진 상태에서 다른 자원을 기다리는 경우
③ 비선점(Non-preemption) 조건
- 프로세스에게 할당된 자원은 사용이 끝날 때까지 프로세스로부터 제거할 수 없음
④ 환형 대기(Circular wait) 조건
- 자원 할당 그래프 내에 환형 대기가 존재함
3. 교착상태 예방법
① 상호 배제(Mutual exclusion) 조건의 방지
- 임계 구역(Critical Section) 내의 데이터를 보호하지 못하는 매우 큰 문제가 발생함
② 대기(Waiting) 조건의 방지
- 모든 자원을 일시에 요구하는 방법
- 자원의 심한 낭비를 초래(현실적으로 사용하기 어려움)
③ 비선점(Non-preemption) 조건의 방지
- 더 이상 자원의 요구를 거절당할 경우 프로세스는 자신이 가진 자원을 모두 반납
- 그 시점까지 수행했던 모든 작업이 수포로 돌아감(현실적으로 사용하기 어려움)
- 예: 작업을 99/100 완료 후 중단하게 되면 다시 1/100부터 시작해야 함
④ 환형 대기(Circular wait) 조건의 방지
- 자원 할당 그래프 내의 특정 자원 할당을 반납(가장 현실적인 방법)
'Computer Science > 운영체제' 카테고리의 다른 글
주소 바인딩(Address Binding) 방식 (0) | 2022.10.04 |
---|---|
가상기억장치(Virtual Memory) 관리 기법 (0) | 2022.10.03 |
프로세스 실행 다이어그램 (0) | 2022.10.03 |
운영체제의 기능과 역할, 실시간 운영체제 (0) | 2022.10.03 |
[컴퓨터공학개론 과제] 가상기억장치(Virtual Memory)의 관리 (0) | 2022.10.03 |