CPU 스케줄링

lainshower_·2023년 1월 13일
0

본 벨로그의 내용 및 이미지는 다음의 강의를 참고해서 작성이 되었으며, 틀린 내용이 있을 수도 있으니 너그럽게 봐주시면 감사하겠습니다:)


CPU 스케줄링

스케줄링은 여러 프로세스의 상황을 고려하여 CPU와 시스템 자원을 어떻게 배정할지 결정하는 일을 말한다.

스케줄링의 단계

스케줄링은 크게 CPU에게 얼만큼의 작업의 양(capacity)을 배정하고 배정된 작업의 순서(order)를 어떻게 할것인지로 구분지어 설명할 수 있다.

  • 고수준 스케줄링 : 시스템 내의 전체 '작업 수'를 조절하는 행위이다. (작업이란 일반적으로 여러 개의 프로세스들의 집합이라고 보면 된다. jobs = {proc1, proc2, ... }) 작업 요청이 오면 승인 여부를 결정하는 일이며, 작업의 양을 조절한다고 보면 된다.
  • 중간수준 스케줄링 : 고수준과 저수준 사이의 스케줄링으로, 고수준 스케줄링에 의해 어떤 프로세스가 활성화 되었다고 해도 시스템 상에 과부하가 걸릴 수 있기 때문에 도중에 일부 프로세스를 중지 상태로 옮겨서 다른 프로세스가 원활히 처리되게 하는 일이라고 보면 된다.
  • 저수준 스케줄링 : 준비 상태 있는 프로세스 중 어떤 프로세스를 골라 실행하고, 어떤 프로세스를 대기 상태로 보낼지를 결정하는 일로, 순서를 결정하는 일이라고 보면 된다.

Preemptive vs Non-preemptive

스케줄링은 크게 선점형 스케줄링과 비선점형 스케릴링으로 나누어질 수 있다.

  • 선점형 스케줄링 (preemptive scheduling) : '어떤 프로세스가 CPU를 받아 실핼 중이더라도' 운영체제가 CPU를 강제로 빼앗을 수 있는 스케줄링 방식이다.
  • 비선점형 스케줄링 (Non-preemptive scheduling) : 어떤 프로세스가 CPU를 점유하면 다른 프로세스가 이를 빼앗을 수 없는 스케줄링 방식.

선점형 스케줄링은 하나의 프로세스가 CPU를 독점할 수 없기 때문에 빠른 응답 시간을 요구하는 대화형 시스템이나 시분할 시스템에 적합하다. 인터럽트 처리가 대표적인 선점형 스케줄링 방식이다.

선점형 스케줄링 방식에도 비선점형 프로세스가 존재할 수 있다. (백업) 하지만 비선점형 프로세스가 선점형 프로세스에 크게 영향을 주지 못하도록 해야하기 때문에 중요도를 낮게 설정해야 한다.

프로세스 우선순위

아까 프로세스의 중요도에 대해서 설명했는데, 이는 사실상 프로세스의 '우선순위'와 같은 말이다. CPU 스케줄러는 우선순위가 높은 프로세스부터 처리한다.

프로세스의 우선순위는 일반적으로 (1) 매우 높음 (2) 약간 높음 (3) 보통 (4) 약간 낮음 (5) 매우 낮음과 같이 구분된다. GUI와 같이 사용자와 직접적으로 상호작용하는 프로세스의 우선순위는 상대적으로 매우 높은편이며, 압축해제와 같은 프로세스는 상대적으로 낮은 우선순위를 가지고 있다.

프로세스는 생성된 후 생성, 준비, 실행, 대기 상태를 거쳐서 완료되며, 실질적인 작업은 실행와 대기를 번갈아가면서 처리된다. 이때 CPU를 할당 받아 작업을 처리하는 작업을 CPU 버스트, 입출력 작업을 입출력 버스트라고 한다.

  • CPU 집중 프로세스 : CPU 버스트가 많은 프로세스.
  • 입출력 집중 프로세스 ; 입출력 버스트가 많은 프로세스. (ex. 데이터 복사)

CPU 집중 프로세스와 입출력 집중 프로세스가 같이 있을 때는 입출력 프로세스를 먼저 처리하는게 효율적이다. 입출력 집중 프로레스가 CPU > 대기 (=긴 시간동안 I/O처리) 할 때 CPU 집중 프로세스가 실행되면 되기 때문

프로세스는 사용자와의 상호작용 정도에 따라도 구분되어진다.

  • 전면 프로세스 : GUI를 사용하는 운영체제에서 화면의 맨 앞에 놓인 프로세스. 현재 입력과 출력을 사용하는 프로세스
  • 후면 프로세스 : 사용자와 상호작용이 없는 프로세스 (ex. 압축 프로그램)

0개의 댓글