티스토리 뷰
반응형
Deadlock
- 모든 프로세스가 다른 프로세스의 작업이 끝나기를 기다리고있는 상태
- Deadlock(교착상태) 발생 필수 조건 4가지
- Mutual exclusion (상호배제)
- 최소한 1개의 자원은 공유할 수 없어야 한다.
- Hold and wait (점유대기)
- 최소한 1개의 자원을 소유한 프로세스가 다른 프로세스가 소유하고 있는 자원을 얻기를 기다려야 한다.
- No preemption (비선점)
- Preemption이 없어야 한다.
- Circular wait (순환대기)
- 서로 다른 프로세스가 자원을 소유하고 요청하는 사이클이 존재해야 한다.
- Mutual exclusion (상호배제)
Resource Allocation Graph
- Resource 종류마다 1개의 인스턴스만 있고, 사이클이 존재한다면 항상 데드락이 발생한다.
- Resuorce 종류마다 여러개의 인스턴스가 있고, 사이클이 존재한다면 항상 데드락인 것은 아니다.
Handling Deadlocks
- Prevent or avoid deadlock
- 시스템이 절대 교착상태에 빠지지 않도록 보장한다.
- Deadlock avoidance에서는 추가적인 정보가 필요하다.
- Detect and recover deadlock
- 시스템이 교착상태에 빠지도록 하지만, 이를 감지하고 복구한다.
- Ignore
- 교착상태가 드물게 일어나기 때문에, prevention/avoidance는 오버헤드가 있다.
- 대부분의 운영체제는 교착상태를 단순히 무시한다.
Deadlock Prevention
- 다음 4가지 조건 중 적어도 1가지를 만족하지 않도록 하겠다.
- Mutual exclusion (상호배제)
- 자원을 공유 가능하도록 하겠다.
- 자원을 공유 가능하게 만드는 것이 어려움
- Hold and wait (점유대기)
- 프로세스가 자원을 요청할 때, 다른 자원을 소유하고 있지 않도록 한다.
- No preemption
- 만약 프로세스가 자원을 소유하고 있고, 할당받을 수 없는 다른 자원을 요청한다면, 소유중인 모든 자원을 해제한다.
- 만약 프로세스가 자원을 요청하고 있고, 그 자원이 추가적인 자원을 요청하고 있는 프로세스에 의해서 소유되고 있다면 preempt 한다.
- Circular wait
- 모든 자원에 대해서 순서를 정하고, 프로세스가 그 순서대로 자원을 요청하도록 한다.
- 번호가 큰(우선순위가 낮은) 자원을 할당받은 상태에서 번호가 낮은(우선순위가 큰) 자원을 요구한다면, 번호가 큰 자원을 해제한다.
- Mutual exclusion (상호배제)
Deadlock Avoidance
- 자원이 어떻게 요청되는지에 대한 추가적인 정보가 필요하다. 각 요청마다, 해당 요청이 대기해야 하는지 아닌지 결정한다.
- Safe state
- Safe sequence가 존재한다.
- 어떤 순서로 할당했을시 데드락은 발생하지 않고, 모든 프로세스의 요구를 처리할 수 있는 순서
- Safe state에서 시스템은 각 프로세스에게 자원을 할당하는 모든 요청을 만족할 수 있는 safe sequence가 존재한다면 데드락을 피할 수 있다.
- Safe sequence가 존재한다.
- Unsafe state
- 데드락이 발생할 가능성이 있는 상태 (= Safe sequence를 찾을 수 없는 상태)
- 모든 unsafe state가 교착상태인 것은 아니다.
Banker's Algorithm
- Deadlock avoidance를 위한 알고리즘이다.
- 자료구조
- Available: 각 자원유형에 따른 사용가능한 인스턴스의 갯수
- Max: 각 프로세스가 필요로하는 최대 자원 갯수
- Alloaction: 프로세스에게 현재 할당된 자원 갯수
- Need: 프로세스가 필요한 자원의 갯수
반응형
'컴퓨터공학 > 운영체제' 카테고리의 다른 글
[운영체제] 동기화 (2) (0) | 2020.01.14 |
---|---|
[운영체제] 동기화 (1) (0) | 2020.01.10 |
[운영체제] 프로세스 스케줄링 (0) | 2019.10.29 |
[운영체제] 멀티스레드 프로그래밍 (0) | 2019.10.29 |
[운영체제] 프로세스 (0) | 2019.10.29 |
댓글
링크
공지사항
최근에 달린 댓글
- Total
- Today
- Yesterday