참고 링크
프로세스를 스케줄링하기 위한 Queue에는 세 가지 종류가 존재한다.
각각의 Queue에 프로세스를 넣고 빼주는 스케줄러도 크게 세 종류가 존재
New -> Ready or Runninig -> Terminated 를 관리한다. 즉 메모리와 디스크 사이의 스케줄링을 담당하게 된다.
메모리는 한정되어 있는데 많은 프로세스가 한꺼번에 메모리에 올라오는 경우, 대용량 메모리에 임시로 저장된다. 이 pool에 저장되어 있는 프로세스 중 어떤 메모리를 할당하여 ready queue로 보낼 지 결정하는 역할을 한다.
이를 통해 메모리에 몇 개의 프로그램이 올라갈지(degree of Multiprogramming)을 제어할 수 있다.
참고. 메모리에 프로그램이 너무 많이 올라가도, 적게 올라가도 성능이 좋지 않다. time shariinig system에서는 장기 스케줄러가 없고 바로 메모리에 올라가 ready 상태가 된다.
😄 시분할 시스템 (time sharing system) 이란
: 컴퓨터를 대화식으로 사용하려는 시도에서 탄생. 오늘날 대부분 시스템은 시분할 시스템이다.
시분할 운영체제는 많은 사용자들이 컴퓨터를 공유하도록 한다. 시스템은 한 사용자에서 다음 사용자로 빠르게 전환함으로써 각 사용자에게 자신만이 컴퓨터를 사용하고 있는 것과 같은 착각을 주지만, 실제로는 여러 사용자가 하나의 컴퓨터를 공유하여 사용하고 있는 것이다.
Ready -> Running -> Waiting -> Ready 를 관리한다. 즉 CPU와 메모리 사이의 스케줄링을 담당
Ready Queue에 존재하는 프로세스 중 어떤 프로세스를 running 시킬지 결정한다. 즉 프로세스에 CPU를 할당한다 (scheduler dispatch)
CPU를 차지하기 위한 경쟁이 심해질 때 우선순위가 낮은 프로세스를 잠시 제거(디스크로 보냄)한 후 나중에 경쟁이 완화되면 다시 메모리로 불러와 중단된 부분부터 다시 실행시킨다. 이를 swapping이라고 부른다.
장기스케줄러와 단기스케줄러의 가장 큰 차이점은 실행 빈도이다. 단기 스케줄러는 상당히 빨라야하고 호출 빈도수가 많다. 그에 반해 장기스케줄러는 단기스케줄러보다 호출 빈도수가 적다. 장기 스케줄러는 스케줄링 시간이 꽤 걸리더라도 신중하게 프로세스를 선택한다. 만약 장기 스케줄러가 I/O 프로세스나 CPU 중심 프로세스 중 한쪽으로 편중에서 프로세스를 받아온다면 ready queue와 device queue 한 쪽에 프로세스가 집중되고 그렇게 되면 단기 스케줄러와의 균형도 붕괴된다.
장점과 단점을 위주로 소개
CPU 스케줄러(단기 스케줄러)이기 때문에 스케줄링 대상은 Ready Queue에 있는 프로세스이다. CPU 스케줄링은 크게 두 가지로 구분된다.
선점(Preemptive)
작업이 끝나기 전에 자원을 필요하다면 스케줄러가 뺏어버린다.
비선점(Non-Preemptive)
작업이 끝날 때까지 스케줄러가 CPU 할당을 뺏을 수 없다.
말 그대로 먼저 온 프로세스를 먼저 처리한다.
문제점
Convoy effect
: 소요시간이 긴 프로세스가 먼저 도착하면 효율성이 매우 저하
말 그대로 CPU burst time이 짧은 프로세스에게 CPU를 먼저 할당한다.
문제점
Starving
: 프로세스 처리 중에 계속 짧은 프로세스가 들어오면 처리 시간이 긴 프로세스는 CPU 할당을 받을 수 없다.
우선 순위에 따라 CPU를 할당한다.
문제점
프로세스에게 주기적으로 CPU를 할당한다.
이름 그대로 잔여시간이 짧은 프로세스를 우선하여 스케줄링한다.
문제점