CPU 스케줄링

  1. 스케줄링의 목적
  2. 스케줄링 시 고려 사항
  3. 스케줄링 알고리즘

1) 스케줄링의 목적

CPU 스케줄링의 목적은 모든 프로세스가 공평하게 작업하도록 하는 것이다. 특정 프로세스가 시스템 자원을 독점하거나 파괴하는 것을 막기 위해 중요도에 따라 우선순위를 배정한다. 또한 시스템 자원을 효율적으로 배분하여 전체적인 시스템의 성능도 높여야 한다.

2) 스케줄링 시 고려 사항

어떤 프로세스에 우선적으로 CPU를 할당할지 결정할 때 고려해야 할 사항이다.

  1. 선점형 스케줄링과 비선점형 스케줄링

    선점형 스케줄링

    어떤 프로세스가 CPU를 할당받아 실행 중이더라도 운영체제가 CPU를 강제로 빼앗을 수 있는 스케줄링 방식이다. 문맥 교환(Context Switching) 같은 부가적인 작업으로 인해 낭비가 생기는 것이 단점이다. 그러나 CPU를 독점할 수 없기 때문에 빠른 응답 시간을 요구하는 대화형 시스템이나 시분할 시스템에 적합하다.

    비선점형 스케줄링

    어떤 프로세스가 CPU를 점유하면 다른 프로세스가 이를 빼앗을 수 없는 스케줄링 방식이다. 프로세스가 종료되거나 자발적으로 대기 상태에 들어가기 전까지는 계속 실행된다. 선점형 스케줄링보다 작업량이 적고 문맥 교환에 의한 낭비도 적지만, CPU 사용 시간이 긴 프로세스가 있을 경우 오랫동안 기다리게 되어 전체 시스템의 처리율이 떨어진다. 과거의 일괄 작업 시스템에서 사용하던 방식이다.

  2. CPU 집중 프로세스와 입출력 집중 프로세스

    CPU 집중 프로세스

    수학 연산과 같이 CPU를 많이 사용하는 프로세스를 말한다. 즉 CPU 버스트(=CPU를 할당받아 실행하는 작업)가 많은 프로세스이다.

    입출력 집중 프로세스

    저장장치에서 데이터를 복사하는 일과 같이 입출력을 많이 사용하는 프로세스를 말한다. 즉 입출력 버스트(=입출력 작업)가 많은 프로세스이다.

    입출력 집중 프로세스는 잠깐 CPU를 사용한 후 대기 상태로 이동하기 때문에 다른 프로세스(CPU 집중 프로세스)가 CPU를 사용할 수 있다. 따라서 스케줄링을 할 때 입출력 집중 프로세스의 우선순위를 높이면 시스템의 효율이 향상된다.