일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- update
- REACTJS
- log4j2
- 정규표현식
- Express
- Regular expression
- eslint
- MySQL
- spring
- Node
- npm
- JavaScript
- regex
- Effective Java 3/e
- expire_logs_days
- spring cloud
- current_date
- migration
- upgrade
- nodejs
- Effective Java
- Chunk
- log_bin
- java
- REACT
- 퀵소트
- Webpack
- git
- mysql 5.5
- Spring Batch
- Today
- Total
내 세상
[Operating System] Deadlock, 교착상태 본문
https://namu.wiki/w/Deadlock
Deadlock, 교착상태
- 다중 쓰레드 프로그래밍의 주요 난점 중 하나
- Example)
- 시스템 파일이나 다른 프로그램이 공유하는 파일을 건드리기 쉬운 프로그램 설치 과정
- "프로그램을 설치할 때는 가능하면 다른 프로그램은 모두 꺼주세요"라는 말이 나오는 이유.
- 차량/항공기 전장 운영체제의 경우, deadlock 발생 시 시스템이 뻗을 경우 대형참사
- 휴대폰 정지 → 인터넷을 통한 복구 → 휴대폰 인증 요구
발생 조건
1. Mutual Exclusion
- 자원 자체를 동시에 쓸 수 없는 경우
2. Hold and Wait
- 자원을 붙잡은 상태에서 다른 자원을 기다리고 있는 경우
3. No Preemption
- 다른 프로세스가 자원을 뺏어올 방법이 없는 경우
4. Circular Wait
- 대기가 꼬리를 물고 사이클이 된 경우
대처 방법
1. Prevention and Avoidance
- Prevention
- 데드락 자체가 일어나지 않도록 예방
- Avoidance
- deadlock이 발생할 것 같으면 회피
- Banker's Algorithm (은행원 알고리즘)
- 자원 요청 → 안전 여부 체크 → 안전 상태이면 자원 할당, 아닌 경우 할당 거부
2. Detection and Recovery
- Detection
- Resource Allocation Graph Algorithm을 통해 Deadlock 탐지 후 해결
- 단, 자원 요청시마다 algorithm을 수행하면 overhead 발생
- Recovery
- deadlock 상태의 process를 종료하거나, 할당된 자원을 해제(Preemption)
'Knowledge > Operating System' 카테고리의 다른 글
[Operating System] Semaphore, Mutex (1) | 2019.05.01 |
---|---|
[Operating System] Process Scheduling (5/5 수정) (0) | 2019.04.29 |
[Operating System] Interrupt, PCB, Context Switching (0) | 2019.04.29 |
[Operating System] 운영체제, 프로세스 상태 전이도 (0) | 2019.04.29 |