* 교착상태에 대한 대응 방안
: 교착상태 방지(예방) (Deadlock Prevention)
: 교착상태 회피 (Deadlock Avoidance)
: 교착상태 탐지 및 복구 (Deadlock Detection & Recovery)
: 교착상태 무시 (Don't Care)
2-1) 교착상태 방지기법(Deadlock Prevention)
* 교착상태의 원인이 되는 4 가지 필요조건들 중 한 가지 이상이 발생되지 않도록 한다..
(상호배타 / 점유와 대기 / 비선점 / 환형 대기)
(1) 상호배타(Mutual exclusion) 방지
: 자원을 공유 가능하게 하면 된다.
: 문제 점 - 그러나 원천적으로 사용중인 자원을 공유하는 것은 불가능 하다.
CPU, Memory, Print 등은 동시 공유가 불가능하다.
(2) 점유와 대기(Hold & Wait) 방지
: 어느 자원을 점유한 상태에서 다른 자원을 기다리지 않도록 한다. 즉, 점유하고 있는 자원이 없을 때만 요청한다.
: 요청한 자원을 다른 프로세스가 점유하고 있다면 자신이 점유한 자원을 놓아 주도록 한다.
: 필요한 자원을 동시에 요청하도록 한다(어느 하나만 점유 불가능).
: 문제점 - 자원 활용률 저하, 특정 프로세스의 기아(starvation) 발생 가능성
(3) 비선점 (No preemption) 방지
: 자원을 선점 가능하게
: 문제점 - 가능한 경우도 있지만 대체로 불가능 하다.
CPU는 선점할 수 있어도 그 이외의 자원은 불가능 하다. 프린터를 사용중인데 강제로 빼앗아서 다른 인쇄물을 출력 할수는 없다.
(4) 순환대기 (Circular wait) 방지
: 자원에 번호를 부여하고 프로세스는 번호의 오름차순으로 자원을 요청하도록 한다.
< 식사하는 철학자: 순환대기 방지 >
P0: R0 요청 후 R1 요청
P1: R1 요청 후 R2 요청
P2: R2 요청 후 R3 요청
P3: R3 요청 후 R4 요청
P4: R0 요청 후 R4 요청 <= 때문에 순환이 깨어짐
댓글 없음:
댓글 쓰기