728x90
반응형
출처 : https://www.youtube.com/watch?v=XMrlt3ZwfM4&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN&index=21
이전 강의 마지막에서 Deadlock이 발생하려면 다음 4가지 조건이 모두 충족되어야 한다고 했다.
그렇다면 Deadlock을 발생시키지 않으려면 어떻게 해야할까?
바로 위 4가지 조건 중 1가지만 만족시키지 않게하면 deadlock은 발생하지 않을 것이다.
Deadlock 해결 방법
- Deadlock prevention methods (교착 상태 예방)
- Deadlock avoidance methods (교착 상태 회피)
- Deadlock detection and deadlock recovery methods (교착 상태 탐지 및 복구)
Deadlock Prevention
- 4개의 deadlock 발생 필요 조건 중 하나를 제거
- Exclusive use of resources
- Non-preemptible resources
- Hold and wait (Partial allocation)
- Circular wait
- Deadlock이 절대 발생하지 않음
Deadlock Prevention
- 모든 자원을 공유 허용 = 모든 자원을 shared resource로 만들기
- Exclusive use of resources 조건 제거
- 현실적으로 불가능
- 모든 자원에 대해 선점 허용
- Non-preemptible resources 조건 제거 = preemptible resource로 만들기
- 현실적으로 불가능
- 유사한 방법으로는 가능하기는 함
- 프로세스가 할당 받을 수 없는 자원을 요청한 경우, 기존에 가지고 있던 자원을 모두 반납하고 작업 취소
- 이후 처음 (또는 check-point) 부터 다시 시작
- 심각한 자원 낭비 발생 (내가 꽤 많은 작업을 수행한 상태임에도 자원이 없다는 이유로 포기하고 맨 처음 상태로 돌아감, 내가 수행한 작업에 대한 자원은 무용지물이 되어버림) -> 비현실적
- 프로세스가 할당 받을 수 없는 자원을 요청한 경우, 기존에 가지고 있던 자원을 모두 반납하고 작업 취소
3. 필요 자원 한번에 모두 할당 (Total allocation)
- Hold and wait 조건 제거
- 필요한 자원을 한 번에 모두 받고, 작업이 끝날 때까지 자원을 반납하지 않는다.
- Deadlock은 발생하지 않음. but, 자원 낭비 발생
- 필요하지 않은 순간에도 가지고 있음 (P1이 R1~R10까지 할당받았다고 했을 때, R7을 쓰지 않고 있는 상황에서 P2가 R7이 절실히 필요한 상황을 생각해보자. 엄청난 낭비다.)
- 후순위의 프로세스는 무한 대기 현상 발생 가능
4. Circular wait 조건 제거
- Totally allocation을 일반화 한 방법
- 자원들에게 순서를 부여
- 프로세스는 순서의 증가 방향으로만 자원 요청 가능
- Deadlock은 발생하지 않음. but, 자원 낭비 발생
- 프로세스 P1(R1, R2, R3, R4 필요), P2(R1, R3 필요)가 있고 자원은 R1(1개), R2(1개), R3(3개), R4(2개) 가 있다고 가정해보자.
- 먼저 P1이 R1을 요청해서 할당받으면 R2를 요청하고, 차례대로 R4까지 할당받을 것이다. P2는 R1을 요청했는데 P1이 쓰고있으므로 작업을 시작할 수 없다.
- 자원의 요청이 원형이 아닌 일직선의 형태를 이루므로 deadlock은 발생하지 않는다.
- 하지만 P2는 R1이 없으면 R3를 받고 작업을 시작할 수 있는데도, R1의 자원이 생길 때까지 작업을 시작할 수 없다.
Deadlock Prevention
- 4개의 deadlock 발생 필요 조건 중 하나를 제거해서 deadlock이 일어나지 않게 만들자
- Deadlock이 절대 발생하지 않는다.
- 심각한 자원 낭비가 발생한다.
- Low device utilization
- Reduced system throughput
- 비현실적이다.
즉, Deadlock Prevention은 4가지 조건 중 하나만 없애면 deadlock을 완벽하게 예방할 수 있지만, 어느 하나도 없애기가 비현실적이거나 매우 비효율적이라는 문제가 존재한다.
728x90
반응형
'Study > 운영체제' 카테고리의 다른 글
운영체제 7. 교착 상태 Deadlock (5) - Deadlock detection and Recovery (0) | 2023.11.23 |
---|---|
운영체제 7. 교착 상태 Deadlock (4) - Deadlock avoidance (0) | 2023.11.23 |
7. 교착 상태 Deadlock (2) - Deadlock model (2) | 2023.11.22 |
7. 교착 상태 (1) - Deadlock and Resource types (0) | 2023.11.21 |
6. 프로세스 동기화 & 상호 배제 (7) - Monitor (0) | 2023.11.20 |