개인공부/컴퓨터 구조와 운영체제

[컴퓨터구조와 운영체제] CPU 스케쥴링

개바리여리 2025. 1. 15. 12:52

 

CPU 스케쥴링 :

운영체제가 프로세스들에게 공정하고 합리적으로 CPU의 리소스를 배분해주는 것을 칭한다.

 

효율적이며 합리적인 작업을 위해서는 CPU는 여러 프로세스들에게 공정하고 합리적인 자원분배가 일어나야 한다.

 

 

가장 공정한 CPU 스케쥴링을 구현하려면 어떻게 해야할까? 그냥 순차적으로 프로세스들에게 동일한 시간동안 자원을 배분하면 될까? --> 아니다 보통은 프로세스의 우선순위를 바탕으로 순서를 정하게 된다.

 

입출력 작업이 많은 프로세스(디스크 백업)의 우선순위는 보통적으로 CPU 작업이 많은 프로세스(컴파일, 그래픽 계산)의 우선순위보다 높다.

그 이유는 IO 프로세스들은 잠깐의 시간동안만 CPU를 실행하고 당분간은 대기상태로 접어들기 때문에 우선적으로 쳐내고 나머지 시간동안 CPU 작업의 프로세스들에게 집중을 할 수 있기 때문이다.

 

 

운영체제는 모든 프로세스 PCB를 확인하며 우선순위를 정하지 않는다. 너무 많고 비효울적이기 때문이다.

스케줄링 큐를 통하여 우선순위를 정하게 된다.

 

 

스케줄링 큐 : 작업(task)을 예약된 시간 또는 우선순위에 따라 관리하고 실행하기 위해 특정 분류별로 구분하여 사용하는 자료구조

 

*스케쥴링 큐에서는 무조건 선입선출이 되지 않는다. 

 

 

스케줄링 큐에는 준비 큐와 대기 큐가 존재한다.

 

준비 큐 : CPU를 이용하기 위해 기다리는 큐

대기 큐 : 입출력장치를 이용하기 위해 기다리는 큐

 

 

 

선점형 스케줄링과 비선점형 스케줄링

선점형 : 현재 CPU를 사용 중인 프로세스의 CPU 자원을 다른 프로세스에 할당

문맥교환이 자주 발생하여 오버헤드가 발생 할 수있다.

 

비선점형:  현재 작업 중인 프로세스의 작업이 종료될때 까지 대기  

모든 프로세스의 균등한 실행이 어렵다.

 

 

 

스케줄링 알고리즘

  • 선입 선처리 스케줄링
  • 최단 작업 우선 스케줄링
  • 라운드 로빈 스케줄링
  • 최소 잔여 시간 우선 스케줄링
  • 우선순위 스케줄링
  • 다단계 큐 스케쥴링
  • 다단계 피드백 큐 스케줄링

 

1. 선입 선처리 스케줄링 (FCFS, First Come First Saved)

준비 큐에 삽입된 순서대로 처리하는 비선점 스케줄링, 먼저 요청한 프로세스 부터 할당한다.

단점 : 프로세스 대기시간이 매우 길어질 수 있다.

 

2. 최단 작업 우선 스케줄링 (SJF, Shortest Job First)

CPU사용이 긴 프로세스는 나중에 실행하고 짧은 시간을 가지는 프로세스 먼저 실행한다.

CPU 사용 시간이 가장 짧은 프로세스부터 처리하는 스케줄링 방식이다.

 

3. 라운드 로빈 스케줄링 (RR, Round Robin)

선입 선처리 + 타임 슬라이스(각 프로세스가 CPU를 점유가능한 시간)

정해진 타임 슬라이스만큼 시간 동안 돌아가며 CPU를 이용하는 선점형 스케줄링

(정해진 시간을 모두 사용했어도 완료되지 않았다면 다시 큐의 맨뒤에 삽입되는 문맥교환이 일어난다.)

타임 슬라이스가 너무 작으면 문맥교환에서 발생하는 오버헤드가 커질 수 있어 주의

 

4. 최소 잔여 시간 우선 스케줄링

정해진 시간만큼 CPU를 사용하지만 다음 프로세스로는 잔여 작업시간이 가장 적은 프로세스를 선택한다.

5. 우선 순위 스케줄링 

프로세스들에 우선순위를 부여하고, 우선순위 높은 프로세스부터 실행

만약 순위가 같다면, 선입 선처리로 수행한다.

단점: 우선순위가 높은 프로세스만 계속 실행한다면 낮은 프로세스는 실행이 지속적으로 연기되어서 기아현상이 발생

보안법 : 에이징 기법(장기간 대기한 프로세스의 우선순위를 점차 높이는 방식) --> 언젠가는 실행이 된다.

 

6. 다단계 큐 스케줄링 (Multilevel queue)

우선순위 별로 준비 큐를 여러 개 사용하는 스케줄링 방식

 

장점: 프로세스 유형별로 우선순위의 구분이 쉽다.

큐 마다 타임슬라이스를 조절하여 지정할 수 있고 각 큐마다 스케줄링 방식을 다르게 적용할 수 있다.

하지만 큐마다 이동이 불가능하여 여전히 우선순위가 낮은 프로세스들은 기아현상이 발생할 수 있다.

 

7. 다단계 피드백 큐 스케줄링 (Multilevel feedback queue)

다단계 큐 스케줄링의 발전된 형태

큐 간의 이동이 가능하다. 

 

타임슬라이스 만큼 실행했는데도 완료되지 않는다면 다음 우선순위 큐로 프로세스 이동.

 

다단계적으로 cpu 집중 프로세스의 우선순위는 상대적으로 점점 낮아지며, 

입출력 집중 프로세스의 우선순위는 높아진다.

 

만약 일정시간 대기상태에 오랫동안 머물 있는 프로세스는 에이징 기법을 적용하여 기아 현상을 방지한다.

 

 

출처 :  https://www.youtube.com/watch?v=CdrozYcVccE&list=PLVsNizTWUw7FCS83JhC1vflK8OcLRG0Hl&index=33