본문 바로가기
면접 질문/운영체제

[운영체제/OS] 데드락과 기아 상태 면접 질문 및 답변 정리

by 그적 2024. 2. 1.

 

  • 데드락에 대해 설명해 주세요.
더보기

데드락은 이미 자원을 할당 중인 여러 프로세스가 다른 프로세스가 점유 중인 자원을 필요로 해 서로의 작업이 끝나기를 기다리는 상태입니다. 데드락은 상호배제, 점유대기, 비선점, 순화대기라는 네 가지 조건을 모두 만족해야 발생합니다.

 

  • 데드락의 발생 조건을 알고 계신가요?
더보기

네. 첫 번째로 상호배제, 상호배제는 하나의 프로세스만 공유 자원을 이용할 수 있도록 하는 것입니다. 두 번째로 점유대기, 점유 대기는 이미 다른 자원을 점유하고 있는 상태에서 다른 프로세스의 자원을 요구하는 것입니다. 셋째, 비선점은 다른 프로세스가 사용 중인 자원을 뺏어올 수 없다는 것이며, 마지막으로 순환 대기는 여러 프로세스의 자원 할당과 요구가 순환 구조를 띄고 있는 것입니다.

 

  • 데드락 발생 조건 중 예방하는 방법에 대해 아는 대로 설명해 주세요.
더보기

데드락을 예방하는 방법은 데드락이 발생되기 위해 네 가지 조건을 모두 만족해야 하는데, 이러한 조건들 중 하나라도 부정할 경우 데드락을 예방할 수 있습니다. 우선 상호배제를 부정하는 것은 사실상 동기화를 위한 방법과 모순되므로 불가능하며, 나머지 조건들을 부정하는 것을 설명해 보겠습니다.

점유 대기를 부정하는 것은 현재 자원을 점유하고 있는 상태에서 다른 자원을 요구할 수 없는 것인데, 한 번에 모든 자원을 요구해야 하는 상황이 발생하기 때문에 자원이 낭비된다는 단점을 가지고 있습니다. 비선점을 부정하는 것은 다른 프로세스가 사용 중이던 자원을 뺏어올 수 있으며, 드라이브나 프린터처럼 쉽게 자원을 저장하고 복구할 수 없는 경우에는 불가능합니다. 마지막으로 순환 대기를 부정하는 것은 모든 자원에 번호를 부여해 단방향으로 자원을 이용할 수 있도록 하는 것입니다. 이는 현재보다 낮은 번호의 자원을 필요로 할 경우, 현재 자원을 해제하고 다시 요구하므로 비효율적입니다.

 

  • 데드락 발생 조건 중 회피하는 방법에 대해 아는 대로 설명해 주세요.
더보기

데드락 회피는 데드락 발생 가능성을 염두에 두면서, 데드락 발생을 막는 방법입니다. 이를 위한 알고리즘이 크게 두 가지가 있는데, 첫 번째로 자원 할당 그래프 알고리즘이 있습니다. 모든 프로세스가 사용할 자원을 미리 알림으로써 자원을 할당할 때 데드락이 발생할 가능성이 존재하는지 확인할 수 있습니다. 두 번째로 은행원 알고리즘이 있습니다. 은행원 알고리즘은 현재 남은 자원의 수가 프로세스가 필요로 하는 자원의 수보다 클 경우에만 자원을 할당할 수 있도록 하는 알고리즘입니다. 이론상으로는 완벽하지만 자원을 할당할 때 해당 작업을 필요로 하기 때문에 매우 비효율적입니다.

 

  • 데드락 발생 조건 중 회복하는 방법에 대해 아는 대로 말씀해 주세요.
더보기

데드락 발생을 허용해 데드락 발생 시 회복하는 방법은 데드락 발생 확인 알고리즘과 회복 알고리즘이 필요로 합니다. 그중 회복 알고리즘은 데드락이 발생한 프로세스를 강제로 종료시키거나 자원을 뺏는 방법으로 구현할 수 있습니다.

 

  • 현대 컴퓨터는 데드락을 어떻게 관리하고 있나요?
더보기

데드락을 해결하는 방법에는 크게 예방, 회피, 회복으로 분류할 수 있지만, 사실 현대 컴퓨터는 데드락을 무시하는 방법을 채택했습니다. 데드락이 발생하지 않는다는 가정 하에 데드락을 관리하고 있지 않으며, 실제로 데드락이 발생하게 된다면 사용자가 직접 프로세스를 종료하거나 컴퓨터를 재부팅하는 방법으로 이를 해결하고 있습니다.

 

  • 기아 상태를 설명해 주세요.
더보기

프로세스는 자원 할당을 받기 위해 대기 큐에 기다리는데, 이때 우선순위가 낮아 평생 자원을 할당받지 못해 기다리는 프로세스가 존재하는 것을 기아 상태라고 부릅니다.

 

  • 기아 상태 해결 방법은 무엇이 있나요?
더보기

기아 상태는 대기 큐에서 기다리는 시간에 따라 점진적으로 우선순위를 높여주는 에이징 기법으로 해결할 수 있습니다. 또는 우선순위를 아예 사용하지 않고 먼저 들어온 순서대로 자원을 사용하는 FIFO 방식으로 해결할 수 있습니다.

 

  • 교착 상태(데드락)와 기아 상태를 비교해 설명해 주시겠어요?
더보기

데드락은 여러 프로세스의 자원의 할당과 요구가 순환 구조를 이루는 것이며, 기아 상태는 하나의 프로세스가 평생 자원을 할당받지 못하는 상태를 의미합니다.

 

댓글