[인프런 워밍업 클럽 2기 - CS] 2주차 미션
운영체제
FIFO 스케줄링의 장단점이 뭔가요?:
장점:
구현이 간단하며 요청된 순서대로 처리(선입선출).
CPU 점유가 긴 프로세스가 없다면 응답 속도가 빠를 수 있다.
단점:
긴 작업이 앞에 있을 경우 짧은 작업이 오래 기다려야 한다.
SJF를 사용하기 여러운 이유가 뭔가요?:
각 프로세스의 실행 시간을 미리 예측하기 어렵다.
실행시간이 너무 긴 프로세스는 너무 늦게 실행된다.
RR 스케줄링에서 타임 슬라이스가 아주 작으면 어떤 문제가 발생할까요?:
컨텍스트 스위칭 비용이 증가하여 CPU 시간이 많이 소모된다.
실제로 작업 처리 시간이 감소하여 성능 저하 발생 가능하다.
운영체제가 MLFQ에서 CPU Bound Process와 I/O Bound Process를 어떻게 구분할까요?:
PU 사용량이 많다 보니 타임 슬라이스를 넘어 CPU가 뺏기게 된다.
I/O Bound Process의 경우 CPU 사용량이 적다 보니 타임 슬라이스 내에 CPU를 반납한다.
공유자원이란무엇인가요?:
여러 프로세스가 동시에 접근할 수 있는 자원을 말한다(예: 프린터, 파일, 데이터베이스 등).
교착상태에 빠질 수 있는 조건은 어떤 것들을 충족해야할까요?:
상호 배제: 자원을 프로세스가 가져갔다면 다른 프로세스에게 공유되면 안된다.
비선점: 다른 프로세스가 자원을 강제로 뺏을 수 없어야 한다.
점유 및 대기: 자원을 점유한 채 다른 프로세스는 이 리소스를 원하면서 기다리고 있어야 한다.
원형 대기 : 점유와 대기를 하는 프로세스들의 관계가 원형을 이루고 있어야 한다.
위에 조건이 하나라도 충족되지 않으면 교착상태가 일어나지 않는다.
자료구조와 알고리즘
재귀함수에서 기저조건을 만들지 않거나 잘못 설정했을 때 어떤 문제가 발생할 수 있나요?:
무한 루프: 기저 조건이 없거나 잘못 설정되면 함수가 종료되지 않고 계속 호출되면서 무한 루프가 발생한다.
Stack Overflow: 재귀 호출이 무한정 계속되면 스택 메모리가 가득 차서 Stack Overflow 에러가 발생하게 된다.
0부터 입력 n까지 홀수의 합을 더하는 재귀 함수를 만들어보세요. :
function sumOdd(n){
// 재귀 로직
if (n <= 0) return 0;
n % 2 !== 0 ? n + sumOdd(n - 2) : sumOdd(n - 1);
}
console.log(sumOdd(10)) // 25
댓글을 작성해보세요.