본 글은 다음 강의를 들으며 정리한 내용입니다.
강의 정보 : 운영체제 / 이화여대 반효경
강의 링크
Deadlock (교착상태)
Resource (자원)
하드웨어, 소프트웨어 등을 포함하는 개념
(예) I/O device, CPU cycle, memory space, semaphore 등
프로세스가 자원을 사용하는 절차
Deadlock Example 1:
시스템에 2개의 tape drive가 있다.
프로세스 P1과 P2가 각각 하나의 tape drive를 보유한 채 다른 하나를 기다리고 있다.
Deadlock Example 2:
P0 | P1 |
---|---|
P(A); | P(B); |
P(B); | P(A); |
Mutual exclusion (상호 배제)
No preemption (비선점)
Hold and wait (보유대기)
Circular wait (순환대기)
(deadlock X)
Vertex
Edge
(deadlock)
(deadlock X)
그래프에 cycle이 없으면 deadlock이 아니다.
그래프에 cycle이 있으면
Deadlock Prevention
Deadlock Avoidance
Deadlock Detection and Recovery
Deadlock Ignorance
위로 갈 수록 더 강력한 방법
위 2가지 방법은 deadlock이 생기기 전 미연에 방지
아래 2가지 방법은 일단 deadlock이 생기게 놔둠
Deadlock이 발생하는 4가지 조건 중 하나를 원천적으로 차단해서 deadlock에 들어가지 못 하게 하는 방법
Mutual exclusion
Hold and wait
No preemption
Circular wait
utilization 저하, throughput 감소, starvation 문제
생기지도 않을 deadlock을 미리 생각해서 제약조건을 많이 달아놓기 때문에 비효율적
자원 요청에 대한 부가정보를 이용해서 자원 할당이 deadlock으로부터 안전(safe)한지를 동적으로 조사해서 안전한 경우에만 할당
가장 단순하고 일반적인 모델은 프로세스들이 필요로 하는 각 자원별 최대 사용량을 미리 선언하도록 하는 방법
safe state
safe sequence
가용 자원 + 모든 Pj(j < i)의 보유 자원
에 의해 충족되어야 한다.시스템이 safe state에 있으면 ➔ no deadlock
시스템이 unsafe state에 있으면 ➔ possibility of deadlock
Deadlock Avoidance
Resource Allocation Graph algorithm
사용Banker's Algorithm
사용Claim edge Pi ➔ Rj
request edge의 assignment edge 변경 시 (점선을 포함하여) cycle이 생기지 않는 경우에만 요청 자원을 할당한다.
cycle 생성 여부 조사 시 프로세스의 수가 n일 때 O(n^2) 시간이 걸린다.
가정
방법
Example :
Resource type 당 single instance인 경우
Resource type 당 multiple instance인 경우
Wait-for graph 알고리즘
Process termination
Resource Preemption
Deadlock이 일어나지 않는다고 생각하고 아무런 조치도 취하지 않음