일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 |
Tags
- 파일 시스템
- 상호배제
- 가상 메모리
- COLOR
- 인프런
- Swift
- 앨런
- async
- 운영체제
- Algorithm
- 데드락
- UserDefaults
- decode
- 동시성
- Apple Developer Academy
- deadlock
- Codable
- 오브젝트
- SwiftUI
- @state
- struct
- core data
- Linked List
- IOS
- 알고리즘
- 100 days of SwiftUI
- 동기화
- forEach
- 프로세스 스케줄링
- 비동기
Archives
- Today
- Total
기어가더라도 제대로
[운영체제-김덕수 교수님] 교착상태(3/5)- Deadlock Prevention 본문
데드락을 예방하거나 회피하는 방법은 크게 3가지가 있다
- 예방
- 회피
- 탐지 및 복구
이번 시간엔 예방에 대해 배워보자.
4가지 조건이 성립할 때 데드락이 발생한다.
이중 하나를 삭제하면 데드락은 발생하지 않는다.
- 자원의 배타적 사용
- 비선점 자원
- 자원을 하나 Hold 하고 다른 자원 요청
- Circular wait
예방은 4가지의 데드락 성립요건중에 하나를 제거하는 방법이다.
그 결과 deadlock 은 절대 발생하지 않는다.
1. 모든 자원을 공유 허용
- Exclusive use of resources 조건 제거
- 현실적으로 불가능
- CPU, memory, disk drive 등 공유하기 어려운 부분이 많다. 컴퓨터의 정의 부터 바꿔야할 거같다.
2. 모든 자원에 대해 선점 허용
- Non-preemptible resources 조건 제거
- 현실적으로 불가능
- 유사한 방법
- 프로세스가 할당 받을 수 없는 자원을 요청한 경우. 기존에 가지고 있던 자원을 모두 반납하고 작업 취소
- 이후 처음(또는 check-point) 부터 다시 시작
- 심각한 자원 낭비 발생 -> 비현실적
- 프로세스가 할당 받을 수 없는 자원을 요청한 경우. 기존에 가지고 있던 자원을 모두 반납하고 작업 취소
3. 필요 자원 한번에 모두 할당(Total allocation)
- Hold and wait 조건 제거
- 자원 낭비 발생
- 필요하지 않은 순간에도 가지고 있음
- 무한 대기 현상 발생가능
4. Circular wait 조건 제거
- Totally allocation 을 일반화 한 방법
- 자원들에게 순서를 부여
- 프로세스는 순서의 증가 방향으로만 자원 요청 가능
- 자원 낭비 발생
P1 - 1,2,3,4 의 자원이 필요하다.
P2 - 1,3 의 자원이 필요하다.
P1 이 1번 자원을 사용하고 있을 때, P2 가 1번 자원을 사용하지 못하는 경우가 발생할 수 있다.
결론
- Deadlock prevention 은 4개의 deadlock 발생 필요조건 중 하나를 제거
- Deadlock 이 절대 발생하지 않음
- 심각한 자원 낭비 발생
- Low device utilization
- Reduced system throughput
- 비현실적
'CS > 운영체제' 카테고리의 다른 글
[운영체제-김덕수교수님] 교착상태(5/5) - Detection & Recovery (0) | 2022.08.08 |
---|---|
[운영체제-김덕수교수님] 교착상태(4/5) - Deadlock avoidance (0) | 2022.08.08 |
[운영체제-김덕수 교수님] Deadlock (2/5) - 발생의 예 (0) | 2022.08.06 |
[운영체제-김덕수 교수님] Deadlock (1/5) (0) | 2022.08.06 |
[운영체제-김덕수교수님] 프로세스 상호배제, 동기화(7/7) - Monitor (0) | 2022.08.06 |
Comments