본문 바로가기

컴퓨터 공학/운영체제

CPU 스케쥴링

프로세스는 CPU 는 수 많은 프로세스들을 처리할 때 어떤 방식으로 큐에서 대기하는 프로세스를 선정할까?

이번에는 CPU 의 프로세스 스케쥴링에 대해 알아보려고 한다. 

 

먼저 CPU 의 처리 작업은 처리하는 대상에 따라 크게 2개로 나눌 수 있다. 

 

1. I/O Burst : CPU 입출력 처리  

2. CPU Burst : CPU 명령 처리

 

결국 CPU 가 수행하는 전체 처리 시간은 I/O Burst + CPU Burst 로 되어 있다고 봐도 무방하며 사용자가 누구냐에 따라서 또 어떠한 작업을 주로 처리하냐에 따라서 I/O Burst 와 CPU Burst 의 비율리 달라지게 된다.

 

그래서 I/O Burst 가 많은 프로세스를 I/O Bound Job, CPU Burst 가 많은 프로세스를 CPU Bound Job 이라고 한다. 이때 사용자의 입출력이 잦은 I/O Bound Job 환경에서는 I/O Burst 가 많고 CPU Burst 가 적은 즉, 실제 프로세스 처리 시간은 적은 상황이 발생할 것이고 반대로 CPU Bound Job 환경에서는 입출력 보다는 처리량이 긴 프로세스를 처리하는 CPU Burst 가 더 많이 발생할 것이다. 따라서 개발자들은 이러한 환경에 맞추어 CPU 가 프로세스를 보다 효율적으로 처리하기 위해 아래의 5가지 요소를 척도로 잡고 CPU 스케쥴링 기법을 고안하게 된다. 

 

1. CPU 이용률 : 전체 시간 중 프로세스 하나를 처리하는 데 걸린 시간

2. CPU 처리량 : 전체 시간 중 프로세스 처리량

3. 소요시간 : 프로세스 생성부터 완전히 종료되기까지 걸린 시간

4. 대기시간 : 프로세스가 Ready Queue 에서 기다린 전체 시간

5. 응답시간 : 프로세스가 생성부터 최초로 CPU 를 할당 받기까지 걸린 시간

 

CPU 스케쥴링은 다음과 같이 크게 작업 중인 프로세스를 완전히 처리하기 전에 다음 프로세스와 교체하는 I/O Bound Job 환경에 좋은 선점형과 작업 중이던 프로세스를 완전히 처리하고 다음 프로세스를 실행하는 CPU Bound Job 환경에 좋은 비선점형으로 나뉜다. (일반 사용자들이 사용하는 환경은 끊임 없이 키보드와 마우스를 입력하니 대부분 선점형이다)

 

 

1. 비선점형 FCFS(First Come First Start)

 

먼저 들어온 프로세스 먼저 처리한다. 처리되기 전까지 다른 프로세스에게 CPU 를 넘겨주지 않는다. 

 

2. 비선점형 SJF(Shortest Job First)

 

처리 시간이 가장 짧은 프로세스 먼저 처리한다. 처리되기 전까지 다른 프로세스에게 CPU 를 넘겨주지 않는다. 

 

3. 선점형 SRTF(Shortest Remain Time First)

 

남은 처리 시간이 가장 짧은 프로세스 먼저 처리한다.

현재 처리 중인 프로세스 보다 짧은 처리시간이 남은 프로세스가 생기면 기존 프로세스와 교체한다. 

 

4. 선점형 우선순위(Priority)

 

프로세스마다 우선순위를 두어 우선순위가 높은 프로세스 먼저 처리한다.

우선순위가 더 높은 프로세스가 생기면 기존 프로세스와 교체한다. 

 

5. 선점형 RR(Round Robin)

 

Ready Queue 에 들어오는 방식은 FCFS 와 동일하다.

특정 시간 단위(Time Quantum)마다 실행 중인 프로세스를 다음 프로세스와 교체한다. 

시간 단위가 너무 커지면 FCFS 와 차이가 없어진다.

따라서 시간 단위는 평균 CPU Burst 의 80% 정도로 하는 것이 적절하다. 

 

 

추가로 프로세스를 목적에 맞게 나누어 단일 큐가 아닌 다중 큐를 나누어 추가로 큐마다 우선순위를 두어 단계를 정하고 스케쥴링을 할 수 있다. 이를 다단계 큐라고 하며 우선순위를 고정으로 사용하는 것이 아닌 실행하며 필요에 따라 우선순위를 조절하는 다단계 큐를 다단계 피드백 큐라고 한다. 

 

이외에도 실시간으로 처리해야하는 프로세스의 경우에는 Real Time 스케쥴링이라하여 Hard(정해진 시간 내에 반드시 종료)/Soft(높은 우선 순위 적용, 반드시 정해진 시간 내에는 끝나지 않음) 로 나누어 CPU 가 다른 프로세스 보다 빠르게 처리하게 할 수 있다. 

 

최근에는 HW 기술이 발전함에 따라 CPU 가 더 이상 단일 CPU 가 아닌 다중 CPU 를 사용하는데 이 경우에는 다수의 CPU 가 하나의 큐를 공유하거나 각각의 큐를 가지고 추가로 CPU 개별로 상이한 스케쥴러를 정하거나 특정 CPU 가 스케쥴러 역할을 하며 나머지 CPU 는 할당 받는 프로세스를 처리만 하는 방식이 존재한다. 

 

마지막으로 프로세스의 스레드 또한 스케쥴링 대상이 되는데 이 경우에는 응용 프로그램의 프로세스가 직접 처리하는 Local 방식과 OS 가 직접 처리하는 Global 방식으로 나뉜다. 

'컴퓨터 공학 > 운영체제' 카테고리의 다른 글

프로세스 동기화  (0) 2023.01.25
프로세스 통신  (0) 2023.01.24
프로세스 관리  (0) 2023.01.19
프로세스(Process), 스레드(Thread)  (0) 2023.01.19
커널(Kernel), 시스템 콜(System Call)  (1) 2023.01.19