- Today
- Yesterday
- Total
메이쁘
[OS] 2020.11.16. 오늘의 면접 Q&A 본문
안녕하세요.
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. 데드락을 처리하기 위한 방법 중 회피에 해당하는 알고리즘입니다. 데드락에 빠질 수 있는 상태를 불안전 상태, 데드락에 빠질 수 없는 상태를 안전 상태 라고 가정했을 때, 운영체제는 이러한 안전 상태인 경우에만 요청을 허락하여 자원을 할당해주고, 나머지 요구들은 안전 상태가 될 때 까지 계속 거절하는 알고리즘입니다.
즉, 은행원 알고리즘은 은행은 최소한 한 명에게 대출해줄 수 있는 돈을 가지고 있어야 한다는 뜻에서 나왔으며, 바꿔말하면 운영체제가 최소한 하나의 프로세스가 일을 수행할 수 있는 경우에만 요청을 허락하여 시스템의 자원을 할당해주는 것과 같습니다.
이상입니다.
감사합니다!
'면접 대비 CS지식 > SELF CS면접 Q&A' 카테고리의 다른 글
[OS - 프로세스] 2020.11.18. 오늘의 면접 Q&A (0) | 2020.11.18 |
---|---|
[CS지식] 2020.11.16. 오늘의 면접 Q&A (0) | 2020.11.17 |
[Network] 2020.11.16. 오늘의 면접 Q&A (0) | 2020.11.16 |
[TCP/IP] 2020.11.16. 오늘의 면접 Q&A (0) | 2020.11.16 |
[Protocol] 2020.11.11. 오늘의 면접 Q&A (0) | 2020.11.11 |