[Operating System] Deadlock

olwooz·2023년 1월 26일
0

Operating System

목록 보기
6/10

Deadlock (교착 상태)

- 두 개 이상의 프로세스들의 서로가 가진 공유 자원을 기다리며 중단된 상태

원인 (발생 조건)

1. 상호 배제 Mutual exclusion

- 한 프로세스가 자원을 독점하고 있으며 다른 프로세스들은 접근 불가

2. 점유 대기 Hold and wait

- 특정 프로세스가 점유한 자원을 다른 프로세스가 요청하는 상태

3. 비선점 No preemption

- 다른 프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 빼앗을 수 없음

4. 순환 대기 Circular wait

- 프로세스의 집합에서 순환 형태로 자원을 대기하고 있어야 함

해결 방법

1. 예방 (prevention)

교착 상태 발생 조건 중 하나를 제거하면서 해결 (자원 낭비 심함)

- 상호배제 부정: 여러 프로세스가 공유 자원 사용
- 점유대기 부정: 프로세스 실행 전 모든 자원 할당
- 비선점 부정: 자원 점유 중인 프로세스가 다른 자원을 요구할 때 가진 자원 반납
- 순환대기 부정: 자원에 고유번호 할당 후 순서대로 자원 요구

2. 회피 (avoidance)

은행원 알고리즘 - 교착 상태 발생 시 피해나가는 방법

교착 상태가 되도록 혀용한 다음 회복 (선 탐지 후 회복)

  1. 탐지
    • 자원 할당 그래프를 통해 교착 상태를 탐지
    • 자원 요청 시 탐지 알고리즘 실행 오버헤드
  2. 회복
    • 교착 상태 일으킨 프로세스를 종료하거나 할당된 자원을 해제시켜 회복
    • 프로세스 종료 방법
      • 교착 상태의 프로세스 모두 중지
      • 교착 상태가 제거될 때까지 하나씩 중지
    • 자원 선점 방법
      • 교착 상태의 프로세스가 점유하고 있는 자원을 선점해 다른 프로세스에게 할당 (해당 프로세스 일시정지)
      • 우선 순위가 낮은 프로세스나 수행 횟수 적은 프로세스 위주로 프로세스 자원 선점

3. 응답 없음 (현대 운영체제의 방법)

교착 상태는 매우 드물게 일어나기 때문에 처리하는 비용이 더 커서 교착 상태 발생 시 '응답 없음' 메시지를 띄우고 사용자가 직접 작업 종료하게 함

0개의 댓글