메이쁘

[OS] 2020.11.16. 오늘의 면접 Q&A 본문

면접 대비 CS지식/SELF CS면접 Q&A

[OS] 2020.11.16. 오늘의 면접 Q&A

메이쁘 2020. 11. 17. 00:48

안녕하세요.

 

CS관련 질문과 면접에 맞는 답변을 작성하면서 지식도 쌓고 면접도 대비하는 시간을 가지려고 합니다.

 

 

틈틈히 게시글을 작성하며 면접 대비 데이터셋을 확보해둔 다음

 

언젠간 면접하게 될 때 모아서 쓰려고 합니다.

 

(실제로 면접에서 들었던 질문이 아니라, 제가 스스로 답을 정해놓고 짜논 질문이라 이렇게 안나올 수 있습니다!!!)

 

 

 

이번 글은 운영체제 카테고리 입니다.

 

 

 

 

  -- 질문 목록

 

Q1.  데드락(DeadLock) 에 대해 설명해보세요.

Q2.  데드락(DeadLock) 의 발생조건 4가지를 말해보세요.

Q3.  데드락(DeadLock) 처리 방법 4가지를 말해보세요.

Q4.  은행원 알고리즘(Banker Algorithm) 에 대해 설명하세요.


Q1.  데드락(DeadLock) 에 대해 설명해보세요.

 

A.  데드락은 프로세스가 자원을 얻지 못해서 다음 일을 처리하지 못하는 상태 입니다. 즉, 교착 상태라고도 말하는데요. 보통 시스템적으로 한정된 자원을 여러 곳에서 동시에 사용하려고 할 때 발생합니다.

 

예를 들어,

프로세스 1이 리소스 1을 사용하고 있고, 리소스 2를 사용하기 위해 요청했으며

프로세스 2가 리소스 1을 사용하기 위해 요청했고, 리소스 2를 사용하고 있다면

 

프로세스 1 -> 리소스 1(사용 - Lock) / 리소스 2(요청 - Wait)

프로세스 2 -> 리소스 1(요청 - Wait) / 리소스 2(사용 - Lock)

 

상태가 되서 프로세스 1, 2 모두 다음 리소스를 얻지 못해 멈추게 됩니다. 이는 사거리의 모든 자동차가 서 있는 상태와 같습니다.

 

 

Q2.  데드락(DeadLock) 의 발생조건 4가지를 말해보세요.

 

A.  네. 우선, 데드락은 주로 멀티프로그래밍 환경에서 한정된 자원을 놓고 서로 경쟁할 때 발생하는데, 이는 대기 상태로 들어간 프로세스들이 실행 상태로 변경이 불가능할 때 발생하는 것과 같습니다.

 

데드락이 발생하기 위해선 이러한 4가지 조건을 전부 만족해야합니다.

 

먼저, 상호 배제(Mutual Exclusion) 입니다. 자원은 한 번에 한 프로세스만 사용 가능하다 는 조건입니다.

 

다음, 점유 대기(Hold And Wait) 입니다. 최소한 하나의 자원을 점유(Lock)하고 있으면서 다른 프로세스에 할당되어 사용되고 있는 자원을 추가로 점유하기 위해 대기(Wait) 하는 프로세스가 존재해야 합니다.

 

또, 비선점(No preemption) 이 있습니다. 다른 프로세스에 할당된 자원은 해당 프로세스가 사용이 끝날때까지 강제로 빼앗을 수 없습니다.

 

마지막으로, 순환 대기(Circular Wait) 가 있습니다. 프로세스의 집합에서 순환 형태(사이클)로 자원을 대기(Wait) 하고 있어야 합니다.

 

이러한 상호 배제, 점유 대기, 비선점, 순환 대기 4가지 조건을 모두 성립해야 데드락이 발생할 수 있습니다.

 

 

 

 

Q3.  데드락(DeadLock) 처리 방법 4가지를 말해보세요.

 

A.  데드락을 처리하기 위한 방법으로 예방, 회피, 탐지 및 회복, 무시 가 있습니다.

 

예방(Prevention) 이란, 데드락 발생 조건 중 하나를 제거하면서 해결하는 방법입니다. 즉, 상호 배제, 점유 대기, 비선점, 순환 대기 4가지 조건 중 하나를 제거합니다.

 

다음으로, 회피(Avoidance)데드락이 발생할 시 피해가는 방법입니다. 대표적으로, 은행원 알고리즘을 사용하여 피해갑니다.

 

또, 탐지 및 회복(Detection & Recovery)자원 할당 그래프를 통해 데드락을 감지하며, 만약 데드락을 감지할 경우 이전 상태로 회복하는 방법이죠. 일부러 데드락을 발생하게 놔두고 감지해서 회복하는 경우도 있습니다.

 

마지막으로, 무시(Ignore) 는 말 그대로 데드락 발생을 무시하고 지나가는 방법입니다.

 

 

Q4.  은행원 알고리즘(Banker Algorithm) 에 대해 설명하세요.

 

A.  데드락을 처리하기 위한 방법 중 회피에 해당하는 알고리즘입니다. 데드락에 빠질 수 있는 상태를 불안전 상태, 데드락에 빠질 수 없는 상태를 안전 상태 라고 가정했을 때, 운영체제는 이러한 안전 상태인 경우에만 요청을 허락하여 자원을 할당해주고, 나머지 요구들은 안전 상태가 될 때 까지 계속 거절하는 알고리즘입니다.

 

즉, 은행원 알고리즘은 은행은 최소한 한 명에게 대출해줄 수 있는 돈을 가지고 있어야 한다는 뜻에서 나왔으며, 바꿔말하면 운영체제가 최소한 하나의 프로세스가 일을 수행할 수 있는 경우에만 요청을 허락하여 시스템의 자원을 할당해주는 것과 같습니다.

 

 

 

 

이상입니다.

 

감사합니다!

Comments