OS

반응형


  CPU 이용률을 최대한으로 사용하기 위한 프로세스 스케줄러에 대해 정리하겠다. 시스템에는 여러 개의 수행 가능한 프로세스들이 있을 수 있으며, 이들 중 하나를 선택하여 CPU를 할당하게 된다. 이때 프로세스 스케줄러가 어떤 프로세스에게 CPU 자원을 할당할지 스케줄링하는 것을 프로세스 스케줄링이라고 한다. 우선 준비 완료 상태의 프로세스들은 준비 완료 큐라는 곳에 들어간다. 준비 완료 큐에 들어가서 CPU를 할당받을 때까지 기다리는 것이다. CPU를 할당받아 특정 프로세스가 실행되는 도중, 해당 프로세스가 입출력 요청을 하거나 자식 프로세스를 생성하고 그 프로세스의 종료를 기다린다고 할 수 있다. 그러면 대기 상태로 전환되어 장치 큐에 들어가서 입출력 요청이 완료되거나 자신이 만든 자식 프로세스가 종료될 때까지 대기한다. 참고로 장치들은 자신의 개별 장치 큐를 각각 갖는다. 실행 상태였던 프로세스는 인터럽트의 결과로 인해 CPU로부터 제거될 수 있는데 이 경우엔 다시 준비 완료 큐로 들어가게 된다. 보통 큐들에 들어가는 것은 프로세스의 PCB이다. 프로세스가 종료되면 모든 큐에서 삭제되고 PCB를 포함한 모든 자원들을 반납한다. 이렇게 프로세스는 상태를 변화시키며 큐 사이를 이동하게 되는데, 이때, 운영체제는 적절한 스케줄링을 통해 큐에서 한 프로세스를 선택해야 합니다. 이 스케줄링을 하는 것을 스케줄러라고 하며, 장기 스케줄러와 단기 스케줄러(CPU 스케줄러)가 있다. 장기 스케줄러는 디스크에 저장되어 있는 프로세스들을 주메모리로 적재한다. 주메모리에 프로세스들을 무한대로 적재할 수 있는 것이기 아니기 때문에, 주메모리에 적재할 프로세스들의 수를 제어해야 한다. 다른 말로 다중 프로그래밍의 정도를 제어한다고 한다. 장기 스케줄러는 입출력 중심 프로세스와 CPU 중심 프로세스들을 적절한 비율로 혼합하여 선택해야 한다. 그래야 CPU와 입출력 장치들이 균형 있게 사용되기 때문에 시스템이 안정적이다. 참고로 입출력 중심 프로세스와 CPU 중심 프로세스는, 말 그대로 입출력 요청을 많이 하는 프로세스와 CPU 연산을 많이 하는 프로세스를 각각 의미한다. 단기 스케줄러는 준비 완료된 프로세스를 하나 선택하여 CPU를 할당한다. 당연히 CPU 할당이 훨씬 더 빈번하게 일어나기 때문에, 단기 스케줄러가 장기 스케줄러에 비해 실행 빈도수가 높다. 시분할 시스템 등의 일부 운영체제들은 중기 스케줄러라는 것도 도입했다. 중기 스케줄러는 메모리에서 프로세스를 제거하여 나중에 다시 메모리로 불러와서 실행을 재개하는 스와핑 기법을 통해 다중 프로그래밍의 정도를 조절한다. 프로세스는 중기 스케줄러에 의해 스왑되어서 나가고 추후에 다시 스왑되어 들어오게 된다.


  프로세스는 기본적으로 CPU를 이용하여 연산중이거나, 입출력 요청을 하는 두 가지 사이클을 갖는다. 프로세스의 실행은 CPU 버스트로 시작된다. 프로세스는 CPU를 차지하여 실행되다가 입출력 버스트가 발생하고, 그 뒤에는 또 다른 CPU가 발생한다. 이렇게 CPU 버스트와 입출력 버스트가 번갈아 발생하다가 마지막에 프로세스 종료 요청을 위한 CPU 버스트로 마무리된다. 이렇게 중간에 입출력 버스트가 발생하여 CPU가 유휴 상태가 될 때마다 운영체제는 단기 스케줄러(CPU 스케줄러)를 이용하여 준비 완료 큐에 있는 프로세스들 중 하나를 선택한다. 이 프로세스 스케줄링은 선점 스케줄링 방식과 비선점 스케줄링 방식으로 분류할 수 있다. 선점 스케줄링 방식은, 한 프로세스가 CPU를 차지하여 실행 중일 때, 다른 프로세스가 이를 중지시키고 CPU를 빼앗아 차지할 수 있다는 방식일다. RR(Round Robin), SRT(Shortest Remaining Time), MLQ(MultiLevel Queue), MFQ(Multilevel Feedback Queue) 알고리즘이 선점 스케줄링 기법의 예이다. 비선점 스케줄링이란, 한 프로세스가 CPU를 차지하여 실행 중일 때, 다른 프로세스가 이를 중지시키고 CPU를 빼앗을 수 없다는 방식이다. FIFO(First In First Out), SJF(Shortest Job First), HRN(Highest Response ratio Next)와 같은 방식들이 비선점 스케줄링 기법의 예이다. 이 각각의 스케줄링 알고리즘은 다음 포스팅에서 정리해야겠다.

반응형

+ Recent posts