운영체제2

참고 링크

1

프로세스 스케줄러

프로세스를 스케줄링하기 위한 Queue에는 세 가지 종류가 존재한다.

  1. Job Queue: 현재 시스템 내에 있는 모든 프로세스의 집합
  2. Ready Queue: 현재 메모리 내에 있으면서 CPU를 잡아서 실행되기를 기다리는 프로세스의 집합
  3. Device Queue: Device I/O 작업을 대기하고 있는 프로세스의 집합

각각의 Queue에 프로세스를 넣고 빼주는 스케줄러도 크게 세 종류가 존재

img img

장기스케줄러 (Long-term scheduler or job scheduler)

New -> Ready or Runninig -> Terminated 를 관리한다. 즉 메모리와 디스크 사이의 스케줄링을 담당하게 된다.

메모리는 한정되어 있는데 많은 프로세스가 한꺼번에 메모리에 올라오는 경우, 대용량 메모리에 임시로 저장된다. 이 pool에 저장되어 있는 프로세스 중 어떤 메모리를 할당하여 ready queue로 보낼 지 결정하는 역할을 한다.

이를 통해 메모리에 몇 개의 프로그램이 올라갈지(degree of Multiprogramming)을 제어할 수 있다.

참고. 메모리에 프로그램이 너무 많이 올라가도, 적게 올라가도 성능이 좋지 않다. time shariinig system에서는 장기 스케줄러가 없고 바로 메모리에 올라가 ready 상태가 된다.

😄 시분할 시스템 (time sharing system) 이란

: 컴퓨터를 대화식으로 사용하려는 시도에서 탄생. 오늘날 대부분 시스템은 시분할 시스템이다.

시분할 운영체제는 많은 사용자들이 컴퓨터를 공유하도록 한다. 시스템은 한 사용자에서 다음 사용자로 빠르게 전환함으로써 각 사용자에게 자신만이 컴퓨터를 사용하고 있는 것과 같은 착각을 주지만, 실제로는 여러 사용자가 하나의 컴퓨터를 공유하여 사용하고 있는 것이다.

단기스케줄러 (Short-term scheduler or CPU scheduler)

Ready -> Running -> Waiting -> Ready 를 관리한다. 즉 CPU와 메모리 사이의 스케줄링을 담당

Ready Queue에 존재하는 프로세스 중 어떤 프로세스를 running 시킬지 결정한다. 즉 프로세스에 CPU를 할당한다 (scheduler dispatch)

중기스케줄러 (Medium-term scheduler or Swapper)

CPU를 차지하기 위한 경쟁이 심해질 때 우선순위가 낮은 프로세스를 잠시 제거(디스크로 보냄)한 후 나중에 경쟁이 완화되면 다시 메모리로 불러와 중단된 부분부터 다시 실행시킨다. 이를 swapping이라고 부른다.

장기스케줄러와 단기스케줄러의 가장 큰 차이점은 실행 빈도이다. 단기 스케줄러는 상당히 빨라야하고 호출 빈도수가 많다. 그에 반해 장기스케줄러는 단기스케줄러보다 호출 빈도수가 적다. 장기 스케줄러는 스케줄링 시간이 꽤 걸리더라도 신중하게 프로세스를 선택한다. 만약 장기 스케줄러가 I/O 프로세스나 CPU 중심 프로세스 중 한쪽으로 편중에서 프로세스를 받아온다면 ready queue와 device queue 한 쪽에 프로세스가 집중되고 그렇게 되면 단기 스케줄러와의 균형도 붕괴된다.

CPU 스케줄러 전략

장점과 단점을 위주로 소개

CPU 스케줄러(단기 스케줄러)이기 때문에 스케줄링 대상은 Ready Queue에 있는 프로세스이다. CPU 스케줄링은 크게 두 가지로 구분된다.

  • 선점(Preemptive)

    작업이 끝나기 전에 자원을 필요하다면 스케줄러가 뺏어버린다.

  • 비선점(Non-Preemptive)

    작업이 끝날 때까지 스케줄러가 CPU 할당을 뺏을 수 없다.

비선점(Non-Preemptive)

1. FCFS

말 그대로 먼저 온 프로세스를 먼저 처리한다.

문제점

  • Convoy effect

    : 소요시간이 긴 프로세스가 먼저 도착하면 효율성이 매우 저하

2. SJF (Shortest Job First)

말 그대로 CPU burst time이 짧은 프로세스에게 CPU를 먼저 할당한다.

문제점

  • Starving

    : 프로세스 처리 중에 계속 짧은 프로세스가 들어오면 처리 시간이 긴 프로세스는 CPU 할당을 받을 수 없다.

선점 (Preemptive)

1. Priority Scheduling

우선 순위에 따라 CPU를 할당한다.

문제점

  • Starving

2. Round Robin

프로세스에게 주기적으로 CPU를 할당한다.

3. SRT (Shortest Remaining Time First)

이름 그대로 잔여시간이 짧은 프로세스를 우선하여 스케줄링한다.

문제점

  • Starving

[jungin]
Written by@[jungin]
안녕하세요

GitHub