본문 바로가기

Solution/면접

[개발자 면접] 교착상태란 무엇인지? 교착상태의 4가지 조건에 대해서

728x90

실제로 면접 2군데에서 물어본 질문임.


Q. 교착 상태(데드락)에 대해서 설명하고 4가지 조건에 대해서 설명하세요.

교착 상태란 자원을 소유한 스레드 사이에서, 각 스레드가 다른 스레드가 소유한 자원을 요청하여 모든 스레드가 무한정 대기하는 현상을 말한다.

교착상태의 4가지 조건은 다음과 같다.

상호배제, 점유대기, 비선점, 순환대기 

 

상호배제 : 프로세스들이 필요로 하는 자원에 대해 배타적 통제권을 요구함

점유대기 : 프로세스가 할당된 자원을 가진 상태에서 다른 자원 기다림

비선점 : 프로세스가 어떤 자원의 사용을 끝날 때까지 그 자원을 뺏을 수 없음

순환대기 : 각 프로세스는 순환적으로 다음 프로세스가 요구하는 자원을 갖고 있음

 

이 4가지 조건 중 하나라도 만족하지 않으면 교착상태는 발생하지 않는다. 

(순환대기는 점유대기와 비선점을 모두 만족해야만 성립합. 따라서 4가지가 서로 독립적이진 않음)


Q. 교착상태와 기아상태의 해결법은?

예상, 회피, 감지 및 복구, 무시 이런방법이 있다.
컴퓨터시스템은 대부분 "무시" 방식을 사용한다. 성능을 생각했을때 사용자에게 해결을 넘기는 것이 좋다. 하지만 중요한 시스템인 경우 예상, 회피, 감지 및 복구를 사용하는 경우도 있다. 

 

 
728x90