프로세스 스케줄링

  • by

스케줄링이란? 다양한 작업의 처리 순서를 결정하는 것을 의미합니다.

이러한 스케줄링에는 디스크 스케줄링, 프로세스 스케줄링 등이 있습니다.

오늘은 프로세스 스케줄링에 대해 배웁니다.

프로세스 스케줄링?

지정된 프로세스가 복수의 경우에 프로세스의 처리 순서를 결정하는 것을 의미합니다.

스케줄링 단계

작게는 2개 크고는 3개로 나눌 수 있습니다.

  • 상위 스케줄링
  • 서브스텝 스케줄링
  • 중단 스케줄링

상위 스케줄링

작업이 작업 큐에 들어갈 때 어떤 작업을 프로세스로 만들 것인지를 결정하는 단계.

태스크를 프로세스로 만드는 태스크와 관련된 것만으로 시스템 자원을 효율적으로 사용할 수 있습니다.

CPU가 자유롭다면 CPU 작업을 먼저 프로세스로 만드는 등 요청 작업을 상황에 맞게 스케줄링합니다.

활성 작업은 준비 큐에 들어가 CPU 할당을 기다립니다.

서브스텝 스케줄링

준비 큐에서 어떤 프로세스에 CPU를 할당할지 결정하는 태스크.

즉, 디스패치하는 역할을 하는 주체는 디스패처입니다.

실제 실행이 되는지에 관한 고민을, 서브스텝 스케줄링으로 실행하게 됩니다.

중단 스케줄링

경우에 따라 이러한 처리 중에 시스템 리소스 로드가 대량으로 발생할 때 중간 단계 스케줄링을 사용하는 운영 체제도 있습니다.


단기 부하 조정을 위해 부하를 발생시키는 특정 작업을 일시 중지합니다.

스케줄링 목표

스케줄링의 기본 목표는 두 가지입니다.

공정성과 균형.

공정성 : 모든 프로세스가 적절한 수준에서 공정하게 CPU 작업 수행

균형 : CPU, 입출력 장치 등의 시스템 리소스를 충분히 활용할 수 있도록 한다

운영 체제 유형에 따라 스케줄링의 목표가 달라질 수 있습니다.

각 운영 체제 유형별 스케줄링 목표를 검토합니다.

운영 체제 유형별 스케줄링 목표

일괄 처리 운영 체제

  • 처리량 극대화
  • 반환 시간 최소화
  • CPU 활용 극대화

처리량: 주어진 시간에 처리된 프로세스의 수.

반환 시간: 프로세스 생성 시점부터 모든 작업 완료 후 종료 시점까지의 소요 시간

시분할 운영 체제

  • 빠른 응답 시간
  • 과도한 대기 시간 방지

응답 시간: 요청된 시점부터 반응이 시작되는 시점까지의 소요 시간
대기 시간: 프로세스가 종료될 때까지 준비 대기열에서 대기한 총 시간

실시간 운영 체제

  • 핸들러 사용자 정의

따라서 운영 체제 유형별 스케줄링 목표가 존재합니다.

이 목표를 고려하기 전에 우선적으로 고려해야 하는 두 가지 기본 정책이 있습니다.

스케줄링 정책

스케줄링 정책에는 두 가지가 있습니다.

바로 선점과 논프리 포인트입니다.

선점형 스케줄링

실행 중인 프로세스에 인터럽트를 걸어 해당 프로세스의 실행을 중지합니다.

그 후 다른 프로세스에 CPU 할당이 가능한 스케줄링 방식입니다.


우선순위가 높은 프로세스를 우선 처리해야 하는 경우 편리하고 실시간 시스템과 시분할 시스템에 적합합니다.

그러나 컨텍스트 교환으로 인한 오버헤드가 발생한다는 단점이 있습니다.

따라서 운영 체제는 컨텍스트 교환이 매우 신속하게 수행되도록 해야 합니다.

여기에서 컨텍스트 교환(Context Switching)개념을 잡고 진행합니다.

컨텍스트란 무엇입니까?

CPU가 디폴트에서는, 동작시에 레지스터의 값이 있어, 그 값에 근거해 특정의 프로세스의 조작을 실행합니다.

CPU 모든 레지스터의 내용을 컨텍스트라고 하며 특정 프로세스와 관련된 내용입니다.

컨텍스트 교환은 하나의 프로세스입니다.

CPU 사용 중에 프로세스 교환이 필요한 경우에 발생합니다.

아직 프로세스가 종료되지 않았으므로 실행중인 레지스터 값을 PCB에 저장합니다.

이 상태에서 다른 프로세스의 PCB에서 컨텍스트 복원 CPU에 할당하여 동작하고 다른 프로세스가 실행되는 프로세스를 컨텍스트 교환이라고 합니다.

이러한 컨텍스트 교환이 과도하게 발생하면 오버헤드가 발생합니다.

비선점 스케줄링

이전 게시물에서 프로세스 상태에 대해 이야기했습니다.


실행중인 프로세스가 있으면 프로세스를 즉시 준비 상태로 이동할 수 없다는 특징이 있습니다.

상태 전이는 실행에서 종료 또는 대기에만 가능합니다.


작업이 완전히 실행된 후 종료되고 실행 중인 프로세스가 자발적으로 대기로 전환됩니다.

CPU를 낸 상황에서는 대기로 전환할 수 있습니다.

강제 컨텍스트 교환이 없기 때문에 오버헤드가 발생하지 않지만 긴 프로세스가 실행 중이면 짧은 프로세스가 오랫동안 기다리는 상황이 발생할 수 있습니다.

스케줄링 평가 ​​기준

그렇다면 효율적인 스케줄링을 어떻게 알 수 있습니까?

스케줄링에도 평가 기준이 존재합니다.

평균 대기 시간과 평균 반환 시간입니다.

평균 대기 시간

각 프로세스가 실행이 완료될 때까지 준비 대기열에서 대기하는 평균 시간입니다.

모든 프로세스의 대기 시간을 합한 후 프로세스 수로 나누어 얻을 수 있습니다.

평균 반환 시간

프로세스의 만들기 시점에서 완료 시점까지의 소요 시간의 평균값을 말합니다.

마찬가지로 모든 프로세스의 모든 리턴 시간을 추가하고 숫자로 나누어 얻을 수 있습니다.

오늘은 프로세스 스케줄링의 개념에 대해 알아보았습니다.

다음 게시물에서는 프로세스 스케줄링 알고리즘에 대해 배울 시간이 있습니다.