인프런 워밍업 클럽 CS 2기 - 2주차 미션

인프런 워밍업 클럽 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까지 홀수의 합을 더하는 재귀 함수를 만들어보세요.

image

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))

image

댓글을 작성해보세요.

채널톡 아이콘