코딩 기록들
데드락(교착상태)이란? 본문
데드락 정의
- 둘 이상의 프로세스가 점유하고 있는 자원(cpu, core,lam 즉 메모리)을 서로 기다릴 때 무한한 대기상태에 빠지는 것
- 두개 이상의 프로세스나 스레드가 서로 자원을 얻지 못해 다음 처리를 하지 못하는 상태
- '교착 상태'라고도 부르며, 시스템적으로 한정된 자원을 여러곳에서 사용할때 발생
- '외나무 양끝에서 두사람이 서로 비켜주기만 기다리는'것과 같음
데드락 조건
: 아래의 4가지 조건이 모두 만족되야만 발생
- 상호 배제(Mutual Exclusion) : 한 번에 한 프로세스만 자원을 사용 할 수 있다.
- 점유대기(Hold and Wait) : 먼저 다른 프로세스가 점유한 자원을 뺏을 수 없다.
- 비선점((Nonpreeptive) : 자원을 점유한 상태로 다른 프로세스의 자원을 대기하는 프로세스가 존재한다. (여기서 선점(preemptive) 이란 우선권이 있을 수 있어, 우선권이 있는 프로세스가 다른 프로세스의 자원을 가져 올 수 있다는 말을 의미함. 비선점(Nonpreemptive)은 우선권 개념없이, 먼저 점유한 프로세스의 자원을 뺏을 수 없다는 의미가 됨)
- 순한대기 : 프로세스들이 순환 형태로 다른 프로세스가 요구하는 자원을 보유하고 있는 것
데드락 처리방법
1. 데드락 예방 : 위의 데드락 조건중 한가지 제거하는 방법
1) 상호 배제 조건 방지 : 하나의 자원을 여러 프로세스가 공유 할 수 있게 함 (동기화 문제가 발생 할 수 있음)
2) 점유 대기 조건 방지 : OS 에 필요한 자원을 모두 한꺼번에 요구하고, 처리하도록 하여 자원을 대기하지 않도록 함
3) 비선점 방지 : 우선권이 더 높은 다른 프로세스가 자원을 점유를 가져 올 수 있게 함
4) 순환대기 방지 : 자원을 순환 형태로 대기하지 않도록 일정한 한쪽 방향으로만 자원을 요구 할 수 있도록 함
2. 데드락 회피 avoidance
- OS가 자원을 할당해줄 때, 데드락의 가능성이 없도록 자원을 할당해주는 방식. 이렇게 데드락이 발생할 가능성이 없는 상태를 '안전상태'라고 함
3. 데드락 탐지 detection : 데드락이 발생했는지을 확인하는 알고리즘
- 현재 자원 할당상태를 알 수 있는 자원 할당그래프 등의 방법을 이용하여 탐지함
- 데드락 탐지 후에는, 순환대기 상태에서 벗어날 수 있도록 데드락 회복 기법을 사용
- 데드락이 발생한 모든 프로세스를 중지시키는 방법, 프로세스를 종료시켜가며 탐지&회복을 반복하는 방법 등이 있음
4. 데드락 회복 recovery : 교착상태의 프로세스를 종료하거나 할당 자원을 해제함으로서 회복
- 프로세스 종료
- 교착상태의 프로세스를 모두 중지
- 교착상태가 제거될때까지 한 프로세스씩 중지
- 자원 선점. 즉, 데드락이 깨질때까지 프로세스로부터 자원을 계속 선점, 이들을 다른 프로세스에 주는 것
- 교착 상태의 프로세스가 점유하는 자원을 선점하여 다른 프로세스에 할당, 해당 프로세스를 일시 정지
- 우선순위가 낮은 프로세스를 위주로 프로세스 자원 선점
'면접준비하기' 카테고리의 다른 글
IP주소(1) - ARP, 홉바이홉 통신 (0) | 2023.09.14 |
---|---|
Loss Surface 란? (0) | 2023.03.01 |
RDBMS / NOSQL (0) | 2023.03.01 |
스레드 & 프로세스 (0) | 2023.02.28 |
TCP / UDP (0) | 2023.02.27 |