본문 바로가기
CS/Operating System

[OS] CPU 스케줄링

by 안녕나는현서 2021. 12. 2.
728x90

CPU 스케줄링

  • CPU 스케줄러 : 프로세스가 생성된 후 종료될 때까지 모든 상태 변화를 조정하는 일을 함
  • 스케줄링 : 여러 프로세스의 상황을 고려하여 CPU와 시스템 자원을 어떻게 배정할지 결정하는 일

 

스케줄링의 단계

- 고수준 스케줄링

  • 고수준(high level), 장기(long-term), 작업(job), 승인(admission) 스케줄링
  • 가장 큰 틀에서 이루어지는 CPU 스케줄링
  • 전체 작업의 수를 조절 (작업 : 일의 가장 큰 단위, 1개 또는 여러 개의 프로세스로 이루어짐)
  • 시스템 내에서 동시에 실행 가능한 프로세스의 총 개수 결정

 

- 저수준 스케줄링

  • 저수준(low level), 단기(short-term) 스케줄링
  • 가장 작은 단위의 스케줄링
  • 어떤 프로세스에 CPU를 할당할지, 어떤 프로세스를 대기 상태로 보낼지 등을 결정

 

- 중간수준 스케줄링

  • 중간 수준(middle level) 스케줄링
  • 고수준 스케줄링과 저수준 스케줄링 사이에 일어나는 스케줄링
  • 중지(suspend)와 활성화(active)로 전체 시스템의 활성화된 프로세스 수를 조절하여 과부하를 막음

 

스케줄링의 목적

  • 공평성 : 모든 프로세스가 자원을 공평하게 배정받아야 함
  • 효율성 : 시스템 자원이 유휴 시간 없이 사용되도록 스케줄링하고, 유휴 자원 사용하려는 프로세스는 우선권 부여해야 함
  • 안정성 : 우선순위 사용하여 중요 프로세스가 먼저 작동하도록 배정함으로써 시스템 자원을 점유/파괴라여는 프로세스로부터 자원을 보호해야 함
  • 확장성 : 프로세스가 증가해도 시스템이 안정적으로 작동하도록 조치해야 함
  • 반응 시간 보장 : 시스템은 적절한 시간 안에 프로세스의 요구에 반응해야 함
  • 무한 연기 방지 : 특정 프로세스의 작업이 무한히 연기되어서는 안 됨

 

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

- 선점형 스케줄링

  • 어떤 프로세스가 CPU를 할당받아 실행 중이더라도 운영체제가 CPU를 강제로 빼앗을 수 있는 스케줄링 방식
  • 문맥 교환 같은 부가적인 작업으로 낭비가 생김
  • 빠른 응답 시간을 요구하는 대화형 시스템, 시분할 시스템에 적합
  • 대부분의 저수준 스케줄러에서 사용하는 방식

 

- 비선점형 스케줄링

  • 어떤 프로세스가 CPU를 점유하면 다른 프로세스가 이를 빼앗을 수 없는 스케줄링 방식
  • 선점형보다 작업량이 적고 문맥 교환에 의한 낭비도 적음
  • 기다리는 프로세스가 많아 시스템 처리율이 떨어짐
  • 과거의 일괄 작업 시스템에서 사용하던 방식

 

프로세스 우선순위

- 커널 프로세스와 일반 프로세스

  • 커널 프로세스의 우선순위가 일반 프로세스보다 높음
  • 우선 순위가 높다 = 더 빨리 자주 실행된다
  • 일반 프로세스에서도 중요도에 따라 우선순위가 다름
    • 일반 프로세스의 우선순위는 사용자가 조절 가능
    • 우선순위를 조절할 때는 해당 프로세스뿐 아니라 다른 프로세스의 실행 속도에도 영향을 미친다는 것 주의!

 

- CPU 집중 프로세스와 입출력 집중 프로세스

  • CPU 집중 프로세스 : 수학 연산과 같이 CPU를 많이 사용하는 프로세스, CPU 버스트가 많은 프로세스
    (* CPU 버스트 : CPU를 할당받아 실행하는 작업)
  • 입출력 집중 프로세스 : 저장장치에서 데이터를 복사하는 일과 같이 입출력을 많이 사용하는 프로세스, 입출력 버스트가 많은 프로세스 (* 입출력 버스트 : 입출력 작업)
  • CPU 집중 프로세스와 입출력 집중 프로세스가 같이 있을 때는 입출력 집중 프로세스를 먼저 실행 상태로 옮기는 것이 효율적 → 사이클 훔치기 (cycle stealing)

 

- 전면 프로세스와 후면 프로세스

  • 전면 프로세스 (상호작용, 대화형 프로세스) : GUI를 사용하는 운영체제에서 화면의 맨 앞에 놓인 프로세스, 현재 입출력을 사용하는 프로세스
  • 후면 프로세스 (일괄 작업 프로세스) : 사용자와 상호작용이 없는 프로세스
  • 전면 프로세스의 우선순위가 후면 프로세스보다 높음

 

다중 큐

- 준비 큐

  • 우선순위에 따라 여러 개의 큐를 만들어서 보다 편리하게 높은 우선순위의 프로세스에 CPU를 할당
  • 한 번에 하나의 프로세스를 꺼내어 CPU 할당

 

- 대기 큐

  • 같은 입출력을 요구한 프로세스끼리 모아 시스템 효율 높임
  • 여러 개의 프로세스 제어 블록을 동시에 꺼내어 준비 상태로 옮김
  • 시스템에는 많은 입출력장치가 있기 때문에 입출력이 동시에 끝날 경우 여러 개의 인터럽트 한꺼번에 처리됨
  • 인터럽트 벡터 : 동시에 끝나는 인터럽트를 처리하기 위해 사용하는 자료구조

 

- 프로세스 우선순위 배정 방식

  • 고정 우선순위 방식
    • 운영체제가 프로세스에 우선순위를 부여하면 프로세스가 끝날 때까지 바뀌지 않는 방식
    • 우선순위가 변하지 않아 구현 쉬움
    • 시스템 변화에 대응하기 어려워 작업 효율 떨어짐
  • 변동 우선순위 방식
    • 프로세스 생성 시 부여받은 우선순위가 프로세스 작업 중간에 변하는 방식
    • 구현 어려움
    • 시스템 효율성 높일 수 있음
    • 반전 우선순위 : 프로세스의 낮은 우선순위를 높은 우선순위로 바꾸는 것

 

 

728x90

'CS > Operating System' 카테고리의 다른 글

[OS] 프로세스 간 통신  (0) 2021.12.05
[OS]CPU 스케줄링 알고리즘  (0) 2021.12.02
[OS] 스레드  (0) 2021.11.02
[OS] 프로세스  (0) 2021.11.02
[OS] 운영체제 개요  (0) 2021.11.02

댓글