Interview Question

[Interview Question] 교착상태에 대해서 설명하고, 각 교착상태를 해결하는 방법에 대해서 설명해보세요.

sagecode 2025. 8. 29. 16:40

교착상태, 즉 DeadLock은 두 개 이상의 프로세스가 서로 가진 자원을 기다리며 무한 대기에 빠지는 현상을 말합니다.

 

교착상태가 발생하려면 4가지 조건이 모두 충족되어야 하는데

1. 상호배제, 2. 점유대기, 3. 비선점, 4. 원형대기 입니다.

1. 상호배제는 자원을 동시에 하나의 프로세스만 사용할 수 있다.

2. 점유대기는 프로세스가 이미 자원을 점유한 상태이기 때문에, 다른 자원을 기다리고 있다.

3. 비선점은 상대방이 점유중인 자원을 강제로 회수 할 수 없다.

4. 원형대기는 프로세스들이 원 형태로 서로 자원을 기다리는 상태이다.

 

이 4가지 조건을 동시에 만족했을 때만 deadlock상태가 발생합니다.

 

교착상태 해결방법으로는

1. 자원을 공유가능하도록 설정합니다. 하지만 현실적으로 동기화 문제에 의해 어렵습니다.

2. 자원을 취득하지 않은 상태에서만 자원을 요청하도록 설계합니다.

3. 타임아웃을 두고 자원을 회수하거나, OS 수준에서 강제로 자원을 회수하여 transaction을 rollback합니다.

4. 자원 획득 순서를 정해서 항상 같은 순서로 자원을 획득할 수 있도록 정해놓습니다.