CPU 스케줄링이란 준비상태에 있는 여러개의 프로세스 중에서 어떤 것을 먼저 처리하여 자원을 할당할지를 결정하는 운영체제 커널의 모듈을 지칭한다. 보통은 준비 큐에 있는 프로세스를 스케줄링 알고리즘을 통해 선택하는 방식으로 이루어진다. 프로세스의 CPU 교체 과정에서 CPU 이용률을 최대화 하기 위해 사용된다.
어떤 프로세스에 입출력 요청이 왔을때 그 프로세스는 cpu를 사용하지 않은 상태이다. 이때 해당 프로세스의 cpu이용을 빼앗아 다른 프로세스에게 할당해줘야한다.
프로세스가 종료될때 운영체제는 cpu를 할당해줄 새로운 프로세스를 찾기 위해 cpu 스케줄링이 일어난다.
입출력 상태에 있던 프로세스는 입출력이 완료되면 준비 상태가 되어 cpu 할당 대상에 추가된다. 이때 우선순위에 따라 스케줄링을 해야한다.
실행중인 프로세스가 자신에게 주어진 시간을 다 썼을때 준비상태로 돌아가고 다른 프로세스에게 CPU를 할당해줘야한다.
장기 스케줄링 단계에서는 어느 프로그램을 메모리에 먼저 적재할 것인가를 결정하여 준비 큐로 보내는 작업을 한다.
과거에는 적은양의 메모리를 많은 프로세스들에게 할당하면 프로세스당 메모리 보유량이 적어져서 장기 스케줄러가 이를 조절하는 역할을 했지만 요즘은 운영체제에 등록된 프로세스 수가 적절한지 여부에 따라 메모리에 적재할 것인지 판단한다.
이런 이유로 잡 스케줄링(다중처리를 실행하기 위해 주기억 장치에 있는 작업들 간의 실행 우선순위를 정하는 것)이라고도 한다.
중기 스케줄링 단계에서는 너무 많은 프로세스에게 메모리를 할당해 성능이 저하되는 경우 이를 해결하기 위해 메모리에 적재된 프로세스의 수를 동적으로 조절한다.
중기 스케줄링에서는 처리가 보류된 프로세스들이 재개가 가능할 때까지 메모리에서 하드디스크로 옮기는 스왑 아웃과 반대인 스왑 인 작업을 한다.
(하드디스크- 별도의 기억장치)
스왑 아웃 필요성
스왑 아웃이란 처리가 보류된 프로세스들이 재개가 가능할 때까지 메모리에서 하드디스크로 옮기는 작업을 말한다.
많은 프로세스가 메모리에 적재된 상태에 있을때 당장 cpu수행에 필요한 메모리 공간 조차 없게 된다
그렇게 되면 입출력 작업이 수시로 발생하게 되서 시스템의 성능이 저하될 가능성이 있다
이러한 경우 메모리에 올라와 있는 프로세스 중 일부의 메모리를 빼앗아 그 내용을 스왑영역에 저장한다.
스왑 아웃 동작
중지 상태
중기 스케줄링에 의해 추가된 상태로 해당 상태에 프로세스는 메모리를 통째로 빼앗기고 디스크로 스왑 아웃된다.
중지 상태는 중지 준비와 봉쇄 준비가 있다.
중지 봉쇄 상태이던 프로세스가 봉쇄되었던 조건을 만족하게 되면 이 프로세스의 상태는 중지 준비 상태로 바뀐다.
중지 상태에 있는 프로세스들은 모두 메모리를 조금도 보유하지 않고 디스크에 통째로 스왑 아웃된 상태로 존재
단기 스케줄링은 준비상태의 프로세스 중에서 어떤 프로세스를 실행 상태로 만들어 cpu를 할당해 줄 것인지 결정한다. 보통 cpu 스케줄러라고 한다.
일반적으로 스케줄러는 단기 스케줄러를 의미하고 단기 스케줄러는 미리 정한 스케줄링 알고리즘에 따라 cpu에 할당할 프로세스를 선택한다.
→ 단기 스케줄러는 빈번하게 호출되기 때문에 수행속도가 충분히 빨라야한다.
CPU 반납 방식의 자율성여부에 따라 CPU전략은 비선점형과 선점형으로 분류된다
비선점형 CPU 스케줄링은 실행 중인 프로세스가 자율적으로 CPU를 반납할 때까지 CPU를 계속 점유하여 실행하는 방식이다.
한번 cpu가 할당되면 프로세스가 종료 또는 대기상태로 전환해서 CPU를 방출할때까지 CPU를 점유한다.
장점
단점
자율적 CPU 반납과 타율적 CPU 반납까지 이루어지는 방식이다.
장점
어떤 프로세스도 일정시간(프로세스에 주어진 시간) 이상 동안 연속해서 CPU를 점유할 수 없으므로 계산 위주 프로세스가 많더라도 모든 프로세스의 반응 시간 성능을 평균이상으로 유지할 수 있다.
단점
잦은 문맥 교환으로 인해 오버헤드가 발생할 가능성이 있다.