제가 공부한 내용을 정리하는 블로그입니다.
아직 많이 부족하고 배울게 너무나도 많습니다. 틀린내용이 있으면 언제나 가감없이 말씀해주시면 감사하겠습니다😁
면접 리스트
프로세스와 스레드의 차이는 무엇인가요?
프로세스는 메모리에 올라와 실행되는 프로그램을 의미합니다. 이는 독립적인 메모리 공간을 할당하여 운영체제로부터 자원을 할당받는 작업의 단위를 의미합니다. 각 프로세스들은 서로 통신을 하기 위해 공유 메모리, 메시지 큐 등을 이용합니다.
스레드는 프로세스의 작업단위를 의미합니다. 프로세스와 다르게 메모리를 공유하며 작동합니다.
스케줄러의 종류를 설명해보세요
스케줄러의 종류에는 세가지가 있습니다.
첫번째 장기 스케줄러는 수행해야 하는 작업 중 어느 것을 선택할 지 결정하는 스케줄러입니다. 프로세스 흐름 상 Ready Queue에 적재하는 스케줄러입니다.
두번째 단기 스케줄러는 CPU가 차지할 프로세스를 선별하는 작업을 합니다. CPU는 실행 흐름에서 하나의 작업만 수행할 수 있기에 어느 프로세스를 실행시킬지 단기 스케줄러가 할당합니다. 예를 들어 IO 작업을 하는 프로세스가 있을 때는 실행하는 프로세스를 교체하는 역할을 합니다.
마지막으로 중기 스케줄러는 요즘 운영체제에는 존재하지 않지만 우선순위가 낮은 프로세스를 교체하는 역할을 합니다. 이는 메모리를 효율적을 관리할 수 있게 도와줍니다.
CPU 스케줄러의 종류를 설명해보세요
CPU는 프로세스 작업을 수행하기에 어느 프로세스를 선택할 지 판단하는 CPU 스케줄링 알고리즘이 존재합니다.
해당 알고리즘은 선점형과 비선점형으로 나뉘며
선점형에는 Round-Robin, SRC, 다단계 큐가 있으며
비선점형에는 FCFS, SJF, 우선순위가 있습니다.
선점형
라운드 로빈
- Round Robin은 현대 컴퓨터가 쓰는 선점형 알고리즘 스케줄링 방법으로 각 프로세스는 동일한 할당 시간을 주고 그 시간안에 끝나지 않으면 다시 준비 큐에 넣는 알고리즘
- 할당 시간이 너무 크면 FCFS가 되고 짧으면 컨텍스트 스위칭이 잦아져 비용이 증가.
- 로드 밸런서에서 트래픽 분산 알고리즘으로도 사용됨.
SRF
- 실행 시간이 더 짧은 작업이 들어와도 기존 짧은 작업을 모두 수행하고 그 다음 짧은 작업을 이어감.
다단계 큐
- 우선 순위에 따른 준비 큐를 여러개 사용하고 큐마다 라운드로빈이나 FCFS등 다른 스케줄링 알고리즘을 적용한 방법.
- 큐 간의 프로세스 이동이 안되므로 스케줄링 부담이 적지만 유연성이 떨어짐.
비선점형
FCFS
- First Come, First Served는 가장 먼저 온 것을 가장 먼저 처리하는 알고리즘
- 길게 수행되는 프로세스 때문에 준비 큐에서 오래 기다리는 현상(convoy effect)가 발생.
SJF(Shortest Job First)
- 실행 시간이 가장 짧은 프로세스를 가장 먼저 실행하는 알고리즘.
- 긴 시간을 가진 프로세스가 실행되지 않는 현상(starvation)이 일어나며 평균 대기 시간이 가장 짧음
- 실제로 실행 시간을 알 수 없음.
우선순위
- SJF 스케줄링의 경우 starvation이 발생.
- 오래된 작업일 수록 우선순위를 높이는 방법을 사용하여 보완.
동기와 비동기의 차이가 무엇인가요?
동기와 비동기의 차이에는 시간과 연관이 있습니다.
동기는 요청과 그 결과가 동시에 이루어지는 것이고,요청한 자리에서 결과를 계속해서 기다립니다. 설계과 직관적이고 간단하지만 다른 프로그램이 해당 결과를 기다리기 위해 정지하고 있어야하며 시스템의 효율이 저하될 수 있습니다.
비동기는 요청과 결과가 동시에 이루어지지 않습니다. 설계가 복잡하지만 그 시간동안 다른 일을 처리할 수 있으므로 자원을 효율적으로 사용할 수 있게 됩니다.
blocking과 non-blocking의 차이가 무엇인가요?
blocking과 non-blocking은 제어권이 어디에 있느냐가 관점입니다.
작업을 시킨 주체에게 제어권이 있는지 혹은 작업을 처리하는 주체에게 제어권이 있는지에 대한 것입니다.
blocking은 직접 제어할 수 없는 대상의 작업이 끝날때까지 기다려야하는 경우를 의미하고
non-blocking은 직접 제어할 수 없는 대상의 작업이 완료되기 전에 제어권을 넘겨준 경우를 의미합니다.
멀티 프로세스와 멀티쓰레드의 차이는 무엇인가요?
멀티 프로세스 하나의 프로그램을 여러 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하는 것을 의미합니다.
장점으로는 하나의 프로세스에 오류가 발생하여도 프로그램은 동작하지만 단점은 Context-Switch 비용이 발생하고 통신 기법을 사용해야합니다.
멀티 쓰레드는 프로그램을 여러개의 스레드로 구성하여 각 스레드가 task를 처리하는 것을 의미합니다.
장점으로는 스레드 간 데이터를 공유하므로 Context-Switch가 멀티 프로세스에 비해 빠르며 응답시간이 단축됩니다. 단점으로는 동일한 메모리를 관리하기에 동기화 이슈가 발생합니다.
'기술면접 > 운영체제' 카테고리의 다른 글
[기술면접] 운영체제 3 (0) | 2024.11.28 |
---|---|
[기술면접] 운영체제 1 (4) | 2024.11.28 |