deadlock(교착 상태)은 컴퓨터 과학에서 여러 프로세스나 스레드가 서로의 작업이 끝나기를 기다리며 아무것도 진행하지 못하는 상태를 나타낸다. deadlock이 발생하는 이유는 다음과 같다.
- 상호 배제 (Mutual Exclusion): 리소스가 한 번에 하나의 프로세스나 스레드에 의해서만 사용될 수 있는 경우 발생
- 보유 및 대기 (Hold and Wait): 프로세스나 스레드가 어떤 리소스를 보유한 상태에서 다른 리소스를 기다리는 경우 발생
- 비선점 (No Preemption): 어떤 프로세스나 스레드에 할당된 리소스는 그 프로세스나 스레드에 의해서만 해제될 수 있는 경우 발생
- 순환 대기 (Circular Wait): 프로세스나 스레드 간에 순환 형태로 리소스를 기다리는 경우 발생
deadlock이 발생하면 각각의 작업이 끝나기를 기다리는 상태로 인해 시스템이 무한정 대기하게 되어 일어나면 안 되는 상황이다. 따라서 deadlock을 방지하거나 탐지하여 해결하는 기법들이 중요하게 다뤄지고 있다.
'운영체제(OS) > keyword' 카테고리의 다른 글
(Project1-Threads) 멀티 레벨 피드백 큐(MLFQS) (0) | 2023.12.15 |
---|---|
(Project1-Threads) 컨텍스트 스위칭(Context Switching) (0) | 2023.12.15 |
(Project1-Threads) 경쟁 상태(Race Condition) (0) | 2023.12.15 |
(Project1-Threads) 세마포어와 뮤텍스(Semaphore, Mutex) (0) | 2023.12.15 |
(Project1-Threads) CPU Scheduling 알고리즘 (0) | 2023.12.15 |