교착상태(Deadlock)

Download Report

Transcript 교착상태(Deadlock)

제07강 : 교착상태(Deadlock)
교착상태
(Deadlock)
Resource-Allocation Graph
• Process
• Resource Type j (with 4 instances)
Rj
• Pi requests an instance of Rj
Pi
• Pi is holding an instance of Rj
Pi
Rj
Rj
교착상태(Deadlock)의 정의
• 안일어날 event를 기다리며 영원히 block 된 상태
• 예:
– 시스템은 2대의 tape drive (A & B) 보유
– 두개의 병렬 프로세스
P0
Req Tape
Req Tape
Copy Tape
Rel Tape
Rel Tape
P1
Req Tape
Req Tape
Copy Tape
Rel Tape
Rel Tape
A
B
P0
Tape
P1
교착상태(Deadlock)의 정의
• 안일어날 event를 기다리며 영원히 block 된 상태
• 예:
– 시스템은 2대의 tape drive (A & B) 보유
– 두개의 병렬 프로세스
P0
Req Tape
Req Tape
Copy Tape
Rel Tape
Rel Tape
P1
Req Tape
Req Tape
Copy Tape
Rel Tape
Rel Tape
P0
P1
Tape
교착상태(Deadlock)의 정의
• 안일어날 event를 기다리며 영원히 block 된 상태
• 예:
– 시스템은 2대의 tape drive (A & B) 보유
– 두개의 병렬 프로세스
P0
Req Tape
Req Tape
Copy Tape
Rel Tape
Rel Tape
P1
Req Tape
Req Tape
Copy Tape
Rel Tape
Rel Tape
P0
P1
Tape
교착상태(Deadlock)의 정의
• 안일어날 event를 기다리며 영원히 block 된 상태
• 예:
– 시스템은 2대의 tape drive (A & B) 보유
– 두개의 병렬 프로세스
P0
Req Tape
Req Tape
Copy Tape
Rel Tape
Rel Tape
P1
Req Tape
Req Tape
Copy Tape
Rel Tape
Rel Tape
P0
P1
Tape
교착상태(Deadlock)의 정의
• 안일어날 event를 기다리며 영원히 block 된 상태
• 예:
– 시스템은 2대의 tape drive (A & B) 보유
– 두개의 병렬 프로세스
P0
Req Tape
Req Tape
Copy Tape
Rel Tape
Rel Tape
P1
Req Tape
Req Tape
Copy Tape
Rel Tape
Rel Tape
P0
P1
Tape
교착 상태가 일어나기 위한 네 가지 조건
(동시 만족되야 교착상태)
① 상호 배제(Mutual exclusion) 조건
자원은 한번에는 한 프로세스만 사용해야 한다.
② 점유 및 대기(Hold and Wait) 조건
각 프로세스가 이미 자원을 갖고 있으면서
다른 자원을 더 요구하고 있다.
P0
③ 비선점(Non- preemption) 조건
프로세스에 할당된 자원은
Tape
스스로 반납하기 전에는 빼앗지 못한다.
P
Req Tape
④ 환형 대기(Circular wait) 조건
Req Tape
프로세스 간의 자원 요구 형태를 추적해보면 Copy Tape
Rel Tape
결국 자기 자신에게로 되돌아 온다.
Rel Tape
0
P1
P1
Req Tape
Req Tape
Copy Tape
Rel Tape
Rel Tape
운영체제의 기능
• 자원의 할당
– CPU, memory 스케줄링 등
• 편리한 인터페이스
P0
P1
Req Tape
Req Tape
Copy Tape
Rel Tape
Rel Tape
Req Tape
Req Tape
Copy Tape
Rel Tape
Rel Tape
– 사용자 인터페이스
– 입출력 device driver
• 제어
– 여러 프로그램들이 자원을 공유할때
– 발생하는 문제 제어
교착상태(Deadlock)
세가지 대처방법
1.예방(Prevent)
2.회피(Avoid)
3.탐지및 복구
(Detect & Recovery)
교착상태(Deadlock)
세가지 대처방법
1.예방(Prevent) 무균실
2.회피(Avoid)
예방주사, 여행자제
3.탐지및 복구
병 걸리면 치료
(Detect & Recovery)
교착상태(Deadlock)
세가지 대처방법
1.예방(Prevent)
2.회피(Avoid)
3.탐지및 복구
(Detect & Recovery)
교착 상태 예방(Prevention)
(네 조건 중 하나라도 못 일어나게)
① 상호 배제(Mutual exclusion) 조건
자원은 한번에는 한 프로세스만 사용해야 한다.
② 점유 및 대기(Hold and Wait) 조건
각 프로세스가 이미 자원을 갖고 있으면서
다른 자원을 더 요구하고 있다.
③ 비선점(Non- preemption) 조건
P0
프로세스에 할당된 자원은
Tape
스스로 반납하기 전에는 빼앗지 못한다.
④ 환형 대기(Circular wait) 조건
프로세스 간의 자원 요구 형태를 추적해보면
결국 자기 자신에게로 되돌아 온다.
P1
① 점유 및 대기(hold-and-wait) 조건의 방지
• 프로세스는 모든 자원을 한꺼번에 요구해야
• 대기 조건이 형성 안됨 -- 교착 상태 예방
• 단점 : 필요하지도 않은 시점에서
자원을 미리 확보하도록 함.
자원 효율의 저하 초래.
Process
Request All
..…
…..
Release All
P0
P1
Tape
② 비선점(nonpreemption) 조건의 방지
•
•
•
•
•
자원 A에 대한 요구가 block 되면,
자신이 이미 가지고 있던 자원 모두 반납 (roll back)
즉 자원의 선점을 스스로 허용
P0
P1
교착 상태를 예방.
단점 : 선점해도 되는 자원에만 사용
Tape
예:
메모리 공간
많은 자원들이 선점될 수 없다.
(프린터를 중간에서 뺏을 수는 없다)
Roll back  처음부터 다시 시작
자원 효율의 저하 초래
P0
P1
Req Tape
Req Tape
Copy Tape
Rel Tape
Rel Tape
Req Tape
Req Tape
Copy Tape
Rel Tape
Rel Tape
③ 환형 대기(circular-wait) 조건의 방지
• 모든 자원들에 일련번호 (linear ordering) 부여
• 모든 프로세스는 오름차순으로만 자원을 요구
– (1 -> 2 -> 3 ..)
• 모든 프로세스는 내림차순으로만 자원을 반납
– (3 -> 2 -> 1 ..)
• 환형 대기(circular-wait) 조건이 형성되지 않음.
• 단점:
– 필요하지도 않은 시점에서 자원을 미리 확보해야함
1
– 자원 효율의 저하 초래.
1
2
P0
2
Tape
P1
③ 환형 대기(circular-wait) 조건의 방지
• 모든 자원들에 일련번호 (linear ordering) 부여
• 모든 프로세스는 오름차순으로만 자원을 요구
– (1 -> 2 -> 3 ..)
• 모든 프로세스는 내림차순으로만 자원을 반납
– (3 -> 2 -> 1 ..)
• 환형 대기(circular-wait) 조건이 형성되지 않음.
• 단점:
– 필요하지도 않은 시점에서 자원을 미리 확보해야함\
1
– 자원 효율의 저하 초래.
P0
1
2
P1
2
Tape
상호 배제(Mutual Exclusion) 조건의 방지?
• Tape drive를 두 프로세스가 같이 사용?
• Sharable 자원  교착상태가 안일어 난다
– 예:
읽기전용 CD-ROM drive
Note
교착상태 예방은 자원의 낭비가 가장 심하다. (비싸짐)
교착상태가 원천적으로 봉쇄되야하는 응용에 사용
예: 중환자실, 747 제어 등
교착상태(Deadlock)
세가지 대처방법
1.예방(Prevent)
2.회피(Avoid)
3.탐지및 복구
(Detect & Recovery)
교착 상태 회피(Avoidance)
교착 상태의 예방(원천봉쇄)는 자원을 너무 낭비
운영하며 적절히 피해가도록 하는 방법.
(1) 프로세스는 각 자원의 Maximum Claim을 미리 선언
(2) OS(resource allocator)에게 자원 요청/허가
(3) OS는 교착상태 가능성을 사전 점검
(3) 교착상태 가능성이 없으면 (safe) 자원을 허가.
교착 상태 가능성이 있으면 (unsafe) block 시킴
*** unsafe하다고 반드시 교착상태는 아니다.
P: 모든 프로세스가
R: Maximum Claim 요구를  unsafe의 판단근거
t:
동시에 요청할때
(5) 최악에 대비하는 방법이므로 자원의 낭비가 따른다.
참조 - 은행원 알고리즘