패스잇
CS 기초 · 중급

교착상태(Deadlock)가 발생하는 4가지 필수 조건을 설명하고, 실제 시스템에서 교착상태를 예방하거나 회피하기 위한 대표적인 기법들을 제시해주세요.

힌트 · 상호 배제, 점유 및 대기, 비선점, 순환 대기 조건이 충족될 때 발생합니다. 은행원 알고리즘이나 자원 순서 할당 등의 기법이 있습니다.

상호 배제점유 대기비선점순환 대기자원 할당 그래프

모범답안

교착 상태는 여러 프로세스가 서로 원하는 자원을 점유하고 놓아주지 않아, 모든 프로세스가 영원히 대기하는 상황을 말합니다. 발생 조건은 크게 네 가지입니다.

첫째, 상호 배제입니다. 자원은 한 번에 하나의 프로세스만 사용할 수 있어야 합니다. 둘째, 점유 및 대기입니다. 프로세스가 이미 자원을 가지고 있으면서, 다른 자원을 기다려야 합니다. 셋째, 비선점입니다. 프로세스가 사용 중인 자원을 강제로 빼앗을 수 없습니다. 넷째, 순환 대기입니다. 프로세스들이 서로 꼬리 물기 형태로 자원을 기다리는 상황입니다.

교착 상태를 예방하는 방법으로는 자원 순서 할당이 있습니다. 모든 자원에 고유한 순서를 부여하고, 프로세스가 순서대로 자원을 요청하도록 하는 것입니다. 회피 기법으로는 은행원 알고리즘이 있습니다. 시스템이 안전 상태를 유지하도록 자원 할당량을 조절하는 방식입니다. 자원 할당 그래프를 활용하여 교착 상태 가능성을 미리 탐지하는 방법도 있습니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 운영체제 면접 질문

← 운영체제 면접 질문 전체 보기