728x90
실제로 면접 2군데에서 물어본 질문임.
Q. 교착 상태(데드락)에 대해서 설명하고 4가지 조건에 대해서 설명하세요.
교착 상태란 자원을 소유한 스레드 사이에서, 각 스레드가 다른 스레드가 소유한 자원을 요청하여 모든 스레드가 무한정 대기하는 현상을 말한다.
교착상태의 4가지 조건은 다음과 같다.
상호배제, 점유대기, 비선점, 순환대기
상호배제 : 프로세스들이 필요로 하는 자원에 대해 배타적 통제권을 요구함
점유대기 : 프로세스가 할당된 자원을 가진 상태에서 다른 자원 기다림
비선점 : 프로세스가 어떤 자원의 사용을 끝날 때까지 그 자원을 뺏을 수 없음
순환대기 : 각 프로세스는 순환적으로 다음 프로세스가 요구하는 자원을 갖고 있음
이 4가지 조건 중 하나라도 만족하지 않으면 교착상태는 발생하지 않는다.
(순환대기는 점유대기와 비선점을 모두 만족해야만 성립합. 따라서 4가지가 서로 독립적이진 않음)
Q. 교착상태와 기아상태의 해결법은?
예상, 회피, 감지 및 복구, 무시 이런방법이 있다.
컴퓨터시스템은 대부분 "무시" 방식을 사용한다. 성능을 생각했을때 사용자에게 해결을 넘기는 것이 좋다. 하지만 중요한 시스템인 경우 예상, 회피, 감지 및 복구를 사용하는 경우도 있다.
728x90
'Solution > 면접' 카테고리의 다른 글
[개발자 면접] 참조의 지역성이란? 가상메모리란? (1) | 2022.03.27 |
---|---|
[개발자 면접] 페이징과 세그먼테이션이란? (0) | 2022.03.25 |
[개발자 면접] 선점형 스케줄링과 비선점 스케줄링의 차이 (0) | 2022.03.25 |
[개발자 면접] 프로세스와 스레드의 차이점 (5) | 2022.03.24 |
[개발자 면접] 프로세스간 통신(IPC)이란? (5) | 2022.03.23 |