인프런 워밍업 클럽 CS 2기 - 2주차 미션
운영체제
1. FIFO 스케줄링의 장단점이 뭔가요?
FIFO = 먼저 들어온 작업이 먼저 나간다는 뜻
FIFO 스케줄링: 스케줄링 큐에 들어온 순서대로 CPU를 할당받는 방식
장점: 단순하고 직관적인 알고리즘
단점: 한 프로세스가 완전히 끝나야 다음 프로세스가 실행되기 때문에, 실행시간이 짧고 늦게 도착한 프로세스가 실행시간이 길고 빨리 도착한 프로세스의 작업을 기다려야 한다.
2. SJF를 사용하기 여러운 이유가 뭔가요?
SJF = Shortest Job First
FIFO(First in First Out)에서 Burst Time이 짧은 프로세스를 먼저 실행했을 때 평균 대기 시간이 짧아진 것에서 아이디어를 얻음
이론적으로는 FIFO보다 성능이 좋으나, 실제 구현 시 문제가 발생함
어떤 프로세스가 얼마나 실행될지 예측하기 힘들다.
Burst Time이 긴 프로세스는 아주 오랫동안 실행되지 않을 수도 있다.
3. RR 스케줄링에서 타임 슬라이스가 아주 작으면 어떤 문제가 발생할까요?
타임슬라이스가 너무 짧으면 CPU 스위칭이 빈번하게 일어나 오버헤드가 발생할 수 있다.
4. 운영체제가 MLFQ에서 CPU Bound Process와 I/O Bound Process를 어떻게 구분할까요?
CPU Bound Process: CPU를 사용하는 프로세스가 실행하다가 CPU 스케줄러에 의해 강제로 CPU를 뺏기는 경우, CPU 사용률이 높음
I/O Bound Process: CPU를 사용하는 프로세스가 실행하다가 스스로 CPU를 반납하는 경우, CPU 사용률이 낮음
5. 공유자원이란 무엇인가요?
프로세스 간 통신을 할 때 공동으로 이용하는 변수나 파일들
여러 프로세스가 공유하고 있기 때문에 각 프로세스의 접근 순서에 따라 결과가 달라질 수 있다.
6. 교착상태에 빠질 수 있는 조건은 어떤 것들을 충족해야할까요?
교착상태(데드락): 여러 프로세스가 서로 다른 프로세스의 작업이 끝나기를 기다리다가 아무도 작업을 진행하지 못하는 상태
상호배제: 어떤 프로세스가 한 리소스를 점유했다면, 그 리소스는 다른 프로세스에게 공유가 되면 안된다.
비선점: 프로세스 A가 리소스를 점유하고 있는데, 프로세스 B가 리소스를 빼앗을 수 없어야 한다.
점유와 대기: 어떤 프로세스가 리소스 A를 가지고 있는 상태에서 리소스 B를 원하는 상태여야 한다.
원형 대기: 점유와 대기를 하고 있는 프로세스가 원형을 이루고 있어야 한다.
자료구조와 알고리즘
1. 재귀함수에서 기저조건을 만들지 않거나 잘못 설정했을 때 어떤 문제가 발생할 수 있나요?
기저 조건: 재귀 함수를 멈추는 조건
기저조건을 만들지 않거나 잘못 설정하면 무한 루프가
발생하여 스택 오버플로우가 발생할 수 있다.
2. 0부터 입력 n까지 홀수의 합을 더하는 재귀 함수를 만들어보세요.
Python
def sum_odd_numbers(n):
if n <= 0:
return 0
# n이 홀수일 때 n을 더하고, n-1로 재귀 호출
elif n % 2 != 0:
return n + sum_odd_numbers(n - 1)
# n이 짝수일 때 n-1로 재귀 호출
else:
return sum_odd_numbers(n - 1)
n = 10
print(sum_odd_numbers(n))
댓글을 작성해보세요.