티스토리 뷰
Deadlock 해결 방법
Deadlock prevention methods
- 교착상태 예방
Deadlock avoidance method
- 교착상태 회피
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이 절대 발생하지 않음
모든 자원을 공유 허용
- Exclusive use of resources 조건 제거
- 현실적으로 불가능
모든 자원에 대해 선점 허용
- Non-preemptible resources 조건 제거
- 현실적으로 불가능
- 유사한 방법
- 프로세스가 할당 받을 수 없는 자원을 요청한 경우, 기존에 가지고 있던 자원을 모두 반납하고 작업 취소
- 이후 처음 (또는 check-point) 부터 다시 시작
- 심각한 자원 낭비 발생 -> 비현실적
필요 자원 한번에 모두 할당 (Total allocation)
- Hold and wait 조건 제거
- 자원 낭비 발생
- 필요하지 않은 순간에도 가지고 있음
- 무한 대기 현상 발생 가능
Circular wait 조건 제거
- Totally allocation을 일반화 한 방법
- 자원들에게 순서를 부여
- 프로세스는 순서의 증가 방향으로만 자원 요청 가능
- 자원 낭비 발생
단점
- 심각한 자원 낭비 발생
- Low device utilization
- Reduced system throughput
- 비현실적
Deadlock Avoidance
- 시스템의 상태를 계속 감시
- 시스템이 deadlock 상태가 될 가능성이 있는 자원 할당 요청 보류
- 시스템을 항상 safe state로 유지
Safe state
- 모든 프로세스가 정상적 종료 가능한 상태
- Safe sequence가 존재
- Deadlock상태가 되지 않을 수 있음을 보장
Unsafe state
- Deadlock 상태가 될 가능성이 있음
- 반드시 발생한다는 의미는 아님
< 가정 >
- 프로세스의 수가 고정됨
- 자원의 종류와 수가 고정됨
- 프로세스가 요구하는 자원 및 최대 수량을 알고 있음
- 프로세스는 자원을 사용 후 반드시 반납한다
- Not practical
- Dijkstra’s algorithm
- Banker’s algorithm
- Habermann’s algorithm
Dijkstra’s banker’s algorithm
- Deadlock avoidance를 위한 간단한 이론적 기법
- 가정 - 한 종류(resource type) 의 자원이 여러 개(unit)
- 시스템을 항상 safe sate로 유지
Safe state
- 1 resource type R, 10 resource units, 3 processes
- Safe state example
- Max. Claim : 최대 자원 필요 수
- Cur.Alloc. : 현재 할당된 자원 수
- Additional Need : 추가로 필요한 자원수
Safe sequence : 프로세스들이 모두 안전하게 종료할 수 있는 순서
- 자원 10개 중 8개 할당 중
-> 할당 가능한 자원 수 2개 - P1에 자원 2개 추가 할당 후 P1 프로세스 종료 후 자원 반납
-> 할당 가능 자원 3개 - P3에 자원 3개 추가 할당 후 P3 프로세스 종료 후 자원 반납
-> 할당 가능 자원 5개 - P2에 자원 4개 추가 할당 후 P2 프로세스 종료
Unsafe state
- 1 resource type R, 10 resource units, 3 processes
- Unsafe state : safe sequence가 없는 상태
- 반드시 교착상태는 아니지만 교착상태가 될 가능성이 있다!
Dijkstra’s banker’s algorithm (example)
• 1 resource type R, 10 resource units, 3 processes
- P1이 자원 하나를 요청하여 할당했다고 가정 ( state 1-1 )
(P1의 현재 할당 자원 1 -> 2 , 추가로 필요한 자원 2 -> 1, 할당 가능한 자원 2 -> 1 ) - 그 후 safe sequence가 있다면 자원 할당 O (accept)
- P2이 자원 하나를 요청하여 할당했다고 가정 ( state 1-2 )
(P2의 현재 할당 자원 5 -> 6 , 추가로 필요한 자원 4 -> 3, 할당 가능한 자원 2 -> 1 ) - 그 후 safe sequence가 없으므로 자원 할당 X (reject)
=> 자원 요청이 들어오면 자원을 할당 했다고 가정하고 safe sequence가 있으면 accept 없으면 reject 되는 것이 Dijkstra’s banker’s algorithm 이다.
Habermann’s algorithm
- Dijkstra’s algorithm의 확장
- 여러 종류의 자원 고려
- Multiple resource types
- Multiple resource units for each resource type
- 시스템을 항상 safe sate로 유지
Habermann’s algorithm (Example)
- 3 types of resources: Ra, Rb, Rc
- Number of resource units for each type: (10, 5, 7)
- 5 processes
- Max. Claim : 최대 자원 필요 수
- Cur.Alloc. : 현재 할당된 자원 수
- Additional Need : 추가로 필요한 자원수
- 전체 자원수 ( 10, 5, 7 ) - 현재 할당된 자원수 ( 7, 2, 5 ) = 가용 자원수 ( 3, 3, 2 )
- safe sequence 가 존재하므로 safe state
- P2가 (1, 0, 2) 자원 요청을 하여 자원 할당 가정 ( state 2-1 )
- 가용 자원 ( 3, 3, 2 ) -> ( 2, 3, 0 )
- safe sequence가 있으므로 safe state -> 요청 수락
- P1가 (0, 3, 0) 자원 요청을 하여 자원 할당 가정 ( state 2-2 )
- 가용 자원 ( 3, 3, 2 ) -> ( 3, 0, 2 )
- safe sequence가 없으므로 unsafe state -> 요청 거부
특징
- Daedlock의 발생을 막을 수 있음
- High overhead
- 항상 시스템을 감시하고 있어야 한다
- Low resource utilization
- Safe state 유지를 위해, 사용 되지 않는 자원이 존재
- Not practical
- 가정
- 프로세스 수, 자원 수가 고정
- 필요한 최대 자원 수를 알고 있음
강의
www.youtube.com/watch?v=XMrlt3ZwfM4&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN&index=21
www.youtube.com/watch?v=qmtOsmixfsA&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN&index=22
'운영체제' 카테고리의 다른 글
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- SPARK
- Allocation methods
- SQL
- Flume
- Disk System
- 빅데이터 플랫폼
- I/O Mechanisms
- aop
- maven
- 하둡
- gradle
- jdbc
- Free space management
- Spring
- RAID Architecture
- Disk Scheduling
- oracle
- Java
- vmware
- HDFS
- linux
- springboot
- File Protection
- 빅데이터
- hadoop
- Replacement Strategies
- mapreduce
- JSON
- Variable allocation
- I/O Services of OS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함