[인프런 워밍업 클럽 2기 - CS] 2주차 미션
운영체제
FIFO 스케줄링의 장단점이 뭔가요?
FIFO 스케줄링의 장점은 프로세스가 들어온 순서대로 처리되기에 실행순서가 중요한 프로세스를 처리할 때 유용할 수 있으며 프로세스의 대기시간을 비교적 예측하기 쉽다는 것입니다. 단점은 실행시간이 긴 프로세스가 먼저 들어온다면, 이어서 들어온 프로세스들의 실행시간이 더 짧더라도 대기시간이 길어진다는 것입니다.
SJF를 사용하기 어려운 이유가 뭔가요?
SJF를 사용하기 위해서는 각 프로세스의 실행시간을 정확히 예측해야 합니다. 하지만 운영체제가 각 프로세스의 실행시간을 정확하게 예측하는 것은 매우 어려운 일이기 때문에 실제로 사용하기는 어렵습니다.
RR 스케줄링에서 타임 슬라이스가 아주 작으면 어떤 문제가 발생할까요?
타임 슬라이스가 아주 작으면 프로세스가 자주 교체되게 되고, 이에따라 컨텍스트 스위칭도 매우 빈번하게 일어나게 됩니다. 따라서 CPU가 프로세스를 처리하는 시간보다 컨텍스트 스위칭에 소모하는 시간이 더 길어지게 되어서 CPU의 프로세스 처리 효율이 매우 떨어질 수 있습니다.
운영체제가 MLFQ에서 CPU Bound Process와 I/O Bound Process를 어떻게 구분할까요?
CPU 할당시간을 다 사용하지 않았음에도 CPU 자원을 반환하는 프로세스는 I/O Bound Process, CPU 할당시간을 다 사용하거나 다 사용했음에도 끝나지 않은 프로세스를 CPU Bound Process로 구분합니다.
공유자원이란무엇인가요?
여러 프로세스들이 공통적으로 사용하고자 하는 자원을 말합니다.
교착상태에 빠질 수 있는 조건은 어떤 것들을 충족해야할까요?
1) 한 프로세스가 이미 사용중인 자원은 다른 프로세스가 동시에 사용할 수 없다는 상호배제, 2) 다른 프로세스가 이미 사용중인 자원은 뺏어올 수 없다는 비선점, 3) 프로세스가 공유자원을 이미 가진 상태로 다른 프로세스가 가진 공유자원이 사용 가능해질 때까지 기다리고 있는 점유와 대기, 4) 점유와 대기가 원형으로 이루어져서 예를 들어 A → B → C → A 이런 식으로 프로세스들이 서로 꼬리를 물고 원형으로 대기하고 있는 원형 대기 이 모든 조건을 충족해야 교착상태에 빠지게 됩니다.
자료구조와 알고리즘
재귀함수에서 기저조건을 만들지 않거나 잘못 설정했을 때 어떤 문제가 발생할 수 있나요?
재귀함수가 종료되지 않고 계속 호출되어서 콜스택에 재귀함수가 계속 쌓이게 됩니다. 그러다 메모리 공간이 부족하여 콜스택이 넘치게 되면 프로그램이 강제로 종료됩니다.
0부터 입력 n까지 홀수의 합을 더하는 재귀 함수를 만들어보세요.
자바스크립트 코드입니다.
function sumOdd(n) {
if (n === 0) return 0;
return n % 2 !== 0 ? n + sumOdd(n - 1) : sumOdd(n - 1);
}
console.log(sumOdd(10)) // 25
댓글을 작성해보세요.