CPU 스케줄링 개념

CPU 스케줄링이란 준비상태에 있는 여러개의 프로세스 중에서 어떤 것을 먼저 처리하여 자원을 할당할지를 결정하는 운영체제 커널의 모듈을 지칭한다. 보통은 준비 큐에 있는 프로세스를 스케줄링 알고리즘을 통해 선택하는 방식으로 이루어진다. 프로세스의 CPU 교체 과정에서 CPU 이용률을 최대화 하기 위해 사용된다.

스케줄링을 해야하는 시점

1. 프로세스가 입출력을 요구할때(실행상태→ 대기상태)

어떤 프로세스에 입출력 요청이 왔을때 그 프로세스는 cpu를 사용하지 않은 상태이다. 이때 해당 프로세스의 cpu이용을 빼앗아 다른 프로세스에게 할당해줘야한다.

2. 프로세스가 종료를 요구할때(실행상태→ 종료상태)

프로세스가 종료될때 운영체제는 cpu를 할당해줄 새로운 프로세스를 찾기 위해 cpu 스케줄링이 일어난다.

3. 입출력이 끝났을때(대기상태→ 준비상태)

입출력 상태에 있던 프로세스는 입출력이 완료되면 준비 상태가 되어 cpu 할당 대상에 추가된다. 이때 우선순위에 따라 스케줄링을 해야한다.

4. 인터럽트가 발생하였을때(실행상태→ 준비상태)

실행중인 프로세스가 자신에게 주어진 시간을 다 썼을때 준비상태로 돌아가고 다른 프로세스에게 CPU를 할당해줘야한다.

단계별 처리 스케줄링

1. 장기 스케줄링

장기 스케줄링 단계에서는 어느 프로그램을 메모리에 먼저 적재할 것인가를 결정하여 준비 큐로 보내는 작업을 한다.

과거에는 적은양의 메모리를 많은 프로세스들에게 할당하면 프로세스당 메모리 보유량이 적어져서 장기 스케줄러가 이를 조절하는 역할을 했지만 요즘은 운영체제에 등록된 프로세스 수가 적절한지 여부에 따라 메모리에 적재할 것인지 판단한다.

이런 이유로 잡 스케줄링(다중처리를 실행하기 위해 주기억 장치에 있는 작업들 간의 실행 우선순위를 정하는 것)이라고도 한다.

2. 중기 스케줄링

중기 스케줄링 단계에서는 너무 많은 프로세스에게 메모리를 할당해 성능이 저하되는 경우 이를 해결하기 위해 메모리에 적재된 프로세스의 수를 동적으로 조절한다.

중기 스케줄링에서는 처리가 보류된 프로세스들이 재개가 가능할 때까지 메모리에서 하드디스크로 옮기는 스왑 아웃과 반대인 스왑 인 작업을 한다.

(하드디스크- 별도의 기억장치)

스왑 아웃 필요성

스왑 아웃이란 처리가 보류된 프로세스들이 재개가 가능할 때까지 메모리에서 하드디스크로 옮기는 작업을 말한다.

많은 프로세스가 메모리에 적재된 상태에 있을때 당장 cpu수행에 필요한 메모리 공간 조차 없게 된다

그렇게 되면 입출력 작업이 수시로 발생하게 되서 시스템의 성능이 저하될 가능성이 있다

이러한 경우 메모리에 올라와 있는 프로세스 중 일부의 메모리를 빼앗아 그 내용을 스왑영역에 저장한다.

스왑 아웃 동작

  1. block 상태의 프로세스들은 당장 cpu를 획득할 가능성이 없기 때문에 block되어 있는 프로세스들을 첫번째로 스왑아웃 시킨다
  2. 그래도 해결되지 않는경우 타이머 인터럽트가 발생해 준비큐로 이동하는 프로세스를 추가적으로 스왑아웃 시킨다.

중지 상태

중기 스케줄링에 의해 추가된 상태로 해당 상태에 프로세스는 메모리를 통째로 빼앗기고 디스크로 스왑 아웃된다.

중지 상태는 중지 준비와 봉쇄 준비가 있다.

  • 중지 준비: 준비 상태의 프로세스가 중기 스케줄러에 의해 디스크로 스왑 아웃
  • 봉쇄 준비: 봉쇄 상태의 프로세스가 중기 스케줄러에 의해 디스크로 스왑 아웃

중지 봉쇄 상태이던 프로세스가 봉쇄되었던 조건을 만족하게 되면 이 프로세스의 상태는 중지 준비 상태로 바뀐다.

중지 상태에 있는 프로세스들은 모두 메모리를 조금도 보유하지 않고 디스크에 통째로 스왑 아웃된 상태로 존재

3. 단기 스케줄링

단기 스케줄링은 준비상태의 프로세스 중에서 어떤 프로세스를 실행 상태로 만들어 cpu를 할당해 줄 것인지 결정한다. 보통 cpu 스케줄러라고 한다.

일반적으로 스케줄러는 단기 스케줄러를 의미하고 단기 스케줄러는 미리 정한 스케줄링 알고리즘에 따라 cpu에 할당할 프로세스를 선택한다.

→ 단기 스케줄러는 빈번하게 호출되기 때문에 수행속도가 충분히 빨라야한다.

스케줄링의 기법

CPU 반납 방식의 자율성여부에 따라 CPU전략은 비선점형과 선점형으로 분류된다

1. 비선점 스케줄링

비선점형 CPU 스케줄링은 실행 중인 프로세스가 자율적으로 CPU를 반납할 때까지 CPU를 계속 점유하여 실행하는 방식이다.

한번 cpu가 할당되면 프로세스가 종료 또는 대기상태로 전환해서 CPU를 방출할때까지 CPU를 점유한다.

장점

  • 입출력 위주라면 CPU를 어느정도 규칙적으로 번갈아 할당 받을 수 있으므로 응답시간이 좋다.

단점

  • 입출력이 적은 프로세스가 많은경우에는 다른 프로세스들의 응답시간이 매우 저조할 것이다.

2. 선점 스케줄링

자율적 CPU 반납과 타율적 CPU 반납까지 이루어지는 방식이다.

장점

어떤 프로세스도 일정시간(프로세스에 주어진 시간) 이상 동안 연속해서 CPU를 점유할 수 없으므로 계산 위주 프로세스가 많더라도 모든 프로세스의 반응 시간 성능을 평균이상으로 유지할 수 있다.

단점

잦은 문맥 교환으로 인해 오버헤드가 발생할 가능성이 있다.

profile
뚠뚠뚠..

0개의 댓글

Powered by GraphCDN, the GraphQL CDN