안녕하세요 이번 시간에는 운영 체제의 스케줄링에 대해서 알아보는 시간을 갖도록 하겠습니다.
스케줄링이란 CPU 시간을 여러 작업에 분배하여 효율적으로 작업을 수행하기 위해 사용되는 기술입니다. 운영체제 내의 스케줄러가 스케줄링 작업을 수행하며, 시스템의 작업 또는 프로세스들을 관리하고 실행 순서를 결정하는 역할을 담당합니다.
스케줄러는 크게 3가지로 구성됩니다.
장기 스케줄러란 운영체제 내에서 실행할 프로세스를 선택하는 역할을 하는 스케줄러입니다. 시스템 부팅 시에 실행되며 메모리에 있는 프로세스 중 실행할 프로세스를 선택하여 준비 큐(작업 또는 프로세스를 수행하기 전 필요한 준비 작업을 대기시키는 큐) 또는 준비 리스트로 보내게 됩니다. 실행 가능한 프로세스들 중에서 가장 적절한 작업들을 선택하여 메모리에 할당하여 시스템의 성능을 향상시키고 자원을 효율적으로 사용합니다.
단기 스케줄러란 운영체제 내에서 프로세스들이 CPU를 사용하는 시간을 조절하는 역할을 하는 스케줄러입니다. 장기 스케줄러로 인해 프로세스가 준비 큐로 이동하게 되면 단기 스케줄러가 준비 큐 내에서 프로세스를 선택하고 CPU에 실행을 위임하게 됩니다. 이 때 프로세스의 우선 순위, 작엽량, 도착 순서 등을 고려하여 CPU에 할당하며 스케줄링 알고리즘을 사용하여 최적화할 수 있습니다.
중기 스케줄러란 현재 메모리에 있는 프로세스 중 일부를 디스크로 이동시키는 역할을 수행합니다. 장기 스케줄러와 단기 스케줄러 사이에 위치하며 시스템의 로드가 많아져 메모리에 여유 공간이 부족할 때 활성화됩니다. 메모리의 효율적인 사용을 위해 메모리 내의 프로세스 수를 제어하고 프로세스를 디스크로 스왑하는 작업을 수행합니다.
멀티태스킹 환경에서 CPU는 여러 프로세스 또는 스레드 간에 전환되며 작업을 수행하고, 이 때 각 작업은 타임 퀀텀(타임 슬라이스)를 할당받게 됩니다. 타임 퀀텀이란 각 프로세스마다 어느 정도로 작업하고 교체할 것인지에 대한 시간 주기로, 한 프로세스가 CPU를 독점하지 않도록 제한을 두는데 사용됩니다. 각 프로세스는 할당된 타임 퀀텀동안만 실행되며 그 이후에는 다른 프로세스가 실행되어 CPU 사용을 공정하게 분배하여 멀티캐스킹 환경에서 응답 시간을 향상시키는데 도움을 줍니다.
만약 타임 퀀텀이 적정값보다 작을 경우 다음의 문제가 발생할 수 있습니다.
만약 타임 퀀텀이 적정값보다 클 경우 다음의 문제가 발생할 수 있습니다.
헷갈릴 수 있는 개념을 하나 잡고자 합니다. 바로 응답 시간과 대기 시간인데요, 응답 시간의 경우 요청을 받은 후 해당 요청에 대한 응답을 완료하는데 걸리는 시간으로 시스템의 성능과 효율성을 평가하는데 사용됩니다. 반면 대기 시간의 경우 사용자가 시스템이나 서비스를 사용하기 위해 기다려야 하는 시간으로 사용자의 만족도와 서비스 품질을 평가하는데 사용됩니다.