개발자 기술 면접 준비/정리

데드락이란?

ucong 2021. 6. 7. 23:05

데드락(DeadLock = 교착상태 )이란?

- 한정된 자원을 여러 프로세스가 사용하고자 할 때 발생하는 상황으로, 프로세스가 자원을 얻기 위해 영구적으로 기다리는 상태

 

예시

- 자원 A를 가진 프로세스 P1과 자원 B를 가진 프로세스 P2가 있을 때, P1은 B를 필요로 하고 P2는 A를 필요로 한다면 두 프로세스 P1, P2는 서로 자원을 얻기위해 무한정 기다리게 된다.

 

DeadLock 의 발생조건

1. 상호배제

- 한번에 오로지 하나의 프로세스만이 자원 선점이 가능

(제가 사용하고 있으니 제가 다쓸때까지 기다리세요!)

 

2. 점유 대기

- 공유 자원에 대한 접근 권한을 가지고 있는 프로세스가, 다른 자원에 대한 접근을 요구할 수 있음

(제가 지금 이걸 사용하고 있지만 다른것도 필요해요!)

3. 비선점

- 한 프로세스가 다른 프로세스의 자원 접근 권한을 강제로 취소할 수 없음

(제가 쓰고 있으니 아무도 뺏어가지 못합니다!)

 

4. 순환대기

- 두 개 이상의 프로세스가 자원 접근을 기다리는데, 그 사이에 순환이 생성됨

(여기서 끝일리가.. 또해결해야되네.. )

 

DeadLock 의 발생조건

 

1. 예방

- 발생조건 4가지중 한가지를 제거하는 방법

2. 회피

- 교착상태 발생시 피해가는 방식 ( 안정 상태/ 안전 순서/ 불안정 상태 / 은행원 알고리즘)

3. 회복

- 데드락 탐지 및 회복 ( 자원 선점하기 )

 

 

[ 참고 ]

https://velog.io/@nnnyeong/OS-%EA%B5%90%EC%B0%A9%EC%83%81%ED%83%9C-DeadLock-%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC

'개발자 기술 면접 준비 > 정리' 카테고리의 다른 글

메모리 구조  (0) 2021.06.07
메모리란?  (0) 2021.06.07
멀티 프로세스 VS 멀티 쓰레드  (0) 2021.06.07
컨텍스트 스위칭이란?  (0) 2021.06.07
프로세스 VS 스레드  (0) 2021.06.07