메이쁘

[OS - 프로세스] 2020.11.18. 오늘의 면접 Q&A 본문

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

[OS - 프로세스] 2020.11.18. 오늘의 면접 Q&A

메이쁘 2020. 11. 18. 22:33

안녕하세요.

 

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

 

 

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

 

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

 

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

 

 

 

이번 글은 OS - 프로세스 카테고리 입니다.

 

 

 

 

  -- 질문 목록

 

Q1.  프로세스 스케줄링이 무엇인가요?

Q2.  프로세스 상태도를 그리고 간단히 설명할 수 있나요?

Q3.  스케줄링은 언제 발생하나요? (스케줄링 시점)

Q4.  선점형 스케줄링과 비선점형 스케줄링의 차이는 무엇인가요?

Q5.  선점형 스케줄링의 기법은 어떤 것들이 있나요?

Q6.  비선점형 스케줄링의 기법은 어떤 것들이 있나요?


Q1.  프로세스 스케줄링이 무엇인가요?

 

A.  프로세스 스케줄링이란 CPU를 사용하기 위한 프로세스들의 우선순위를 관리하고 그에 맞게 처리하는 일을 의미합니다. 이러한 스케줄링에는 크게 장기, 중기, 단기 세 꼭지로 나눕니다.

 

 

장기 스케줄링이란 어떤 프로세스가 CPU를 차지할 수 있는지 결정해서 Ready Queue에 보내는 작업 을 뜻합니다. 작업 스케줄러에 의해 수행됩니다. 간단하게 말씀드리면, 어떤 프로세스를 커널에 등록할 것인지 정하는 작업 입니다.

 

중기 스케줄링이란 어떤 프로세스들이 메모리를 할당받을 것인지 결정하는 작업 입니다. 이 때, 만약 이러한 프로세스가 많을 경우 과부하 방지를 위해 프로세스를 일시적으로 정지(Waiting) 시키면서 관리합니다.

 

단기 스케줄링이란 프로세스 실행을 위해 언제 CPU에 어떤 프로세스를 할당할 것인지 결정하는 작업 입니다. 프로세스 스케줄링과 문맥 교환은 프로세스 스케줄러에 의해 수행됩니다.

 

 

프로세스 스케줄링(장기/중기/단기) (출처 : https://velog.io/@hax0r/)

 

 

 

 

Q2.  프로세스 상태도를 그리고 간단히 설명할 수 있나요?

 

A. 

프로세스 상태맵 (출처 : https://dduddublog.tistory.com/23)

 

총 5가지의 상태가 있으며, 프로세스는 위 5가지의 상태 중 1가지를 가지고 있습니다.

 

new(create)프로세스가 생성되는 중을 나타냅니다. '중' 이라고 표현한 이유는 프로세스는 생성되었지만 OS의 스케줄러에서 승인하지 않은 프로세스도 존재하기 때문입니다.

 

ready준비완료의 상태로, 아직 프로세스가 사용되진 않지만 CPU를 제외한 모든 자원은 이미 준비된 상태이며 CPU 할당만을 기다리고 있습니다.

 

running 은 프로세스가 프로세서를 차지하여 명령어를 실행하고 있는 중입니다. 

 

waiting프로세스가 어떤 이벤트(입/출력 완료, 시그널 수신 등) 가 발생하기를 기다리고 있는 상태 입니다. 실행 도중 일어날 수 있습니다.

 

terminated프로세스의 실행이 종료되고 CPU를 반납하는 상태입니다.

 

 

 

Q3.  스케줄링은 언제 발생하나요? (스케줄링 시점)

 

A.  크게 4개의 시점에서 발생합니다. 

running -> waiting 시점은 보통 I/O 요청이 일어나거나 자식 프로세스가 종료 대기를 할 때 입니다.

running -> ready 시점은 인터럽트(Interrupt) 가 발생했을 때 입니다.

waiting -> ready 시점은 I/O가 완료되었을 때 입니다.

running -> terminate 시점은 프로세스가 완전히 종료되었을 때 입니다.

 

위에서부터 차례대로 1 ~ 4 의 번호를 매기면 1과 4는 비선점 스케줄링이고 2와 3은 선점 스케줄링 입니다.

 

 

 

 

 

Q4.  선점형 스케줄링과 비선점형 스케줄링의 차이는 무엇인가요?

 

A.  선점형 스케줄링은 어떤 프로세스가 CPU를 할당받아 실행되고 있는 중에도 다른 프로세스에 의해 언제든 CPU 점유를 빼앗길 수 있습니다. 이는 문맥교환 오버헤드가 크며, 대화형 시스템 또는 리얼타임 시스템에 적합합니다.

 

반면, 비선점형 스케줄링은 선점형 스케줄링과 반대로 다른 프로세스가 절대 CPU를 빼앗을 수 없습니다. 그렇기 때문에, 프로세스의 실행이 완료되고 CPU를 반납해야지 다음 차례의 프로세스가 실행될 수 있습니다. 문맥교환 오버헤드가 작으며, 일괄처리 시스템에 적합합니다. 단점은 하나의 프로세스가 오랫동안 CPU를 잡는 경우도 있어 처리율이 낮아질 수 있습니다.

 

 

 

Q5.  선점형 스케줄링의 기법은 어떤 것들이 있나요?

 

A.  선점형 스케줄링에는 크게 SRT, RR(Round Robin), MLQ(다단계 큐) 세 가지 기법이 존재합니다.

 

먼저, SRT는 Shortest Remaining Time 의 약자로, CPU 점유시간이 가장 낮은 프로세스에 먼저 CPU를 할당하는 기법입니다. 단, 선점형 스케줄링이므로 중요한 프로세스가 있거나 남은 실행 프로세스의 실행 시간이 짧은 경우 현재 실행중인 프로세스를 중단하고 해당 프로세스로 옮겨 실행합니다.

 

다음으로, RR(Round Robin) 기법은 프로세스들 사이에 우선순위를 두지 않고 순서대로 일정 시간 단위만큼 할당하는 기법입니다. 문맥 교환의 오버헤드가 큽니다.

 

마지막으로, MLQ는 Multi-Level Queue의 약자로, 프로세스들을 특정 우선순위 그룹으로 분류한 후 각각의 다른 Ready Queue를 사용하는 기법입니다. 각각의 Ready Queue 내부는 RR 기법을 사용하고, 하위 Ready Queue의 프로세스를 실행하고 있더라도 상위 Ready Queue에 프로세스가 들어오면 상위 프로세스에 CPU를 할당합니다.

 

 

 

 

Q6.  비선점형 스케줄링의 기법은 어떤 것들이 있나요?

 

A.  비선점형 스케줄링에는 크게 FIFO, SJF, HRN 세 가지 기법이 존재합니다.

 

FIFO는 First-In-First-Out(큐와 같음) 으로, 선입선출의 방식입니다. 즉, 먼저 Ready Queue에 들어온 프로세스부터 처리합니다. 대신, 비선점형 스케줄링이므로 아무리 작업시간이 길어도 해당 프로세스를 계속 실행해야합니다.

 

SJF는 Shortest Job First 의 약자로, 평균 대기 시간을 최소화하기 위해 CPU 점유 시간이 가장 짧은 프로세스부터 CPU를 먼저 할당하는 방식입니다. 단점은 실행시간이 긴 프로세스는 짧은 프로세스들에게 밀려 무한히 대기해야 할 수 있습니다.

 

HRN은 Highest Response-Ratio Next 의 약자로, SJF 기법을 보완하고자 대기시간과 실행시간을 이용하여 우선순위를 계산하고, 이러한 우선순위에 맞게 프로세스를 실행하는 기법입니다. 장점은 무한히 대기해야 하는 프로세스의 비율을 낮출 수 있습니다.

 

 

 

 

 

관련 질문사항이 더 많지만 분할해서 작성하겠습니다.

이상입니다.

 

감사합니다!

Comments