[인프런 워밍업클럽 CS 2기] 2주차 미션
운영체제
FIFO 스케줄링의 장단점이 뭔가요?
: 장점은 단순하고 직관적이라는 것이 있지만, 단점은 온 순서대로 실행되기 때문에짧고 늦게 도착한 프로세스
가길고 일찍 도착한 프로세스
를 기다려야한다는점이 있습니다.
또한 I/O 작업이 있다면 끝날 때까지 쉬고있기 때문에 CPU 사용률이 떨어지게 됩니다.SJF를 사용하기 여러운 이유가 뭔가요?
: 이론적으로는 좋은 알고리즘이지만, 어떤 프로세스가 얼마나 사용될지 예측이 어렵고Burst Time이 긴 프로세스
는 아주 오랫동안 실행되지 않을 수도 있다는 점이 있기 때문입니다.RR 스케줄링에서 타임 슬라이스가 아주 작으면 어떤 문제가 발생할까요?
: 컨텍스트 스위칭이 자주 일어나게되고, 타임 슬라이스에서 처리되는 프로세스 처리량보다 컨텍스트 스위칭 처리양이 많아져서 오버헤드가 커지게 됩니다.운영체제가 MLFQ에서 CPU Bound Process와 I/O Bound Process를 어떻게 구분할까요?
: 프로세스가 CPU를 사용하다가 스스로 반납한다면 CPU 사용률이 적은 것이기 때문에 - I/O Bound Process,
프로세스가 CPU를 사용하다가 타임 슬라이스 크기를 오버해서 강제로 CPU를 뺏기게 되면 CPU 사용률이 많은 것이기 때문에 - CPU Bound Process 입니다.공유자원이란무엇인가요?
: 여러 프로세스가 공유하고 있는, 공동으로 사용하는 변수나 파일들입니다.교착상태에 빠질 수 있는 조건은 어떤 것들을 충족해야할까요?
: 아래 네가지 조건들을 모두 충족해야합니다.
(1) 상호배제 - 어떤 프로세스가 한 리소스를 점유했다면, 그 리소스는 다른 프로세스에게 공유되면 안됨
(2) 비선점 - 어떤 프로세스가 한 리소스를 점유했다면, 다른 프로세스가 그 리소스를 빼앗을 수 없음
(3) 점유와 대기 - 어떤 프로세스가 한 A 리소스를 가지고 있고, 그 상태에서 B 리소스를 원하는 상태여야함
(4) 원형대기 - 점유와 대기를 하는 프로세스들의 관계가 원형을 이룸
자료구조와 알고리즘
재귀함수에서 기저조건을 만들지 않거나 잘못 설정했을 때 어떤 문제가 발생할 수 있나요?
: 무한 실행되서 메모리 이슈가 나게 되는 문제가 발생할 수 있습니다.0부터 입력 n까지 홀수의 합을 더하는 재귀 함수를 만들어보세요.
function sumOdd(n){
// 재귀 로직
if (n <= 0) return 0;
if (n % 2 == 0) {
return sumOdd(n - 1);
} else {
return n + sumOdd(n - 2);
}
}
console.log(sumOdd(10)) // 25
회고
미션을 풀어나가는데 복습이 큰 도움이 되어 계속해서 해나가야겠다는 생각이 들었습니다.
다만, 재귀 함수를 만들어보는 자료구조와 알고리즘의 2번 문제인 코드 작성 미션이 생각보다 잘 풀리지 않았는데, 재귀 부분 코드 작성을 좀 더 복습하며 익혀야될 것 같습니다.
댓글을 작성해보세요.