본문 바로가기
os

[OS] 스케쥴러

by 윤-찬미 2021. 3. 15.

📋 목차

  • 서론
  • 스케쥴링이란?
  • 스케쥴러의 종류 (장기, 단기, 중기)
  • Virtual Memory Management(가상메모리)
  • 정리

👩🏻‍💻 서론

오늘은 [OS] 시리즈의 스케쥴러에 대해 알아보겠습니다.

스케쥴러에 대해 제대로 이해하지 못했다! 하시는 분들이 읽으시면 도움이 될 것 같습니다!

우선 지난시간에 포스팅 했던 프로세스와 PCB편을 꼭 읽어주세요!

 

👩🏻‍💻 스케쥴링이란?

우선 오늘 배워볼 스케쥴링이 뭔지에 대해 간략하게 설명 드리겠습니다.

위키 백과에 정의되어 있는 스케쥴링의 정의는 아래와 같습니다.

스케줄링(scheduling)은 다중 프로그래밍을 가능하게 하는 운영 체제의 동작 기법이다.

지난 시간에 프로세스에 대해 공부했던 기억이 나시나요?

그런 프로세스들에게 자원들을 배정해주고 시스템의 성능을 개선시킬 수 있도록 하고 여러프로그램을 실행시킬 수 있도록 해주는 기법을말합니다!

 

프로세스를 스케줄링하기 위한 Queue 에는 세 가지 종류가 존재합니다.

 

  • Job Queue : 현재 시스템 내에 있는 모든 프로세스의 집합
  • Ready Queue : 현재 메모리 내에 있으면서 CPU 를 잡아서 실행되기를 기다리는 프로세스의 집합
  • Device Queue : Device I/O 작업을 대기하고 있는 프로세스의 집합

그림으로 큐의 사이클을 보면 아래와 같습니다.

출처: [ https://twinw.tistory.com/4 ]

 

👩🏻‍💻 스케쥴러의 종류 (장기, 단기, 중기)

각각의 Queue 에 프로세스들을 넣고 빼주는 스케줄러에도 크게 세 가지 종류가 존재합니다.

종류는 아래와 같습니다.

  • 장기스케줄러(Long-term scheduler or job scheduler)
  • 단기스케줄러(Short-term scheduler or CPU scheduler)
  • 중기스케줄러(Medium-term scheduler or Swapper)

장기 스케쥴러

Job Queue 에 있던 많은 프로세스들이 한꺼번에 메모리에 올라올 경우, 대용량 메모리(일반적으로 디스크)에 임시로 저장됩니다.

메모리는 한정되어 있습니다. 만약 내가 10개의 JOB을 실행해야 한다고 가정 해봅시다. 메모리에는 5개만 올릴 수 있습니다. 이때 이 중 어떤 프로세스에 메모리를 할당하여 ready queue 로 보낼지 결정 해주는 스케쥴러가 장기 스케줄러 입니다.

 

장기 스케쥴러는 New->Ready와 Running(or Ready) ->Terminated 일때를 관리합니다.

즉 장기 스케쥴러는 메모리와 디스크 사이의 스케줄링을 담당합니다.

 

단기 스케쥴러

단기 스케쥴러의 포인트는 어떤놈을 CPU에 올릴 것이냐! 가 관건입니다.(CPU는 하나의 프로세스밖에 실행을 못합니다.) 롱텀스케쥴러(장기스케쥴러) 에 의해 ready queue에 올라가 있는 프로세스들 중에서 CPU를 차지할 녀석을 골라주는 역할을 해주는게 단기 스케쥴러 입니다.

 

단기 스케쥴러는 ready -> running -> waiting -> ready일때를 관리 합니다.

즉 단기 스케쥴러는 CPU 와 메모리 사이의 스케줄링을 담당합니다.

 

중기 스케쥴러

현 시스템에서 메모리에 너무 많은 프로그램이 동시에 올라가는 것을 조절하는 스케줄러를 말합니다.

즉 장기스케쥴러가 메모리에 5개를할당했는데, cpu가 실행하기엔 너무 버거워! 등과 같은 이유로 메모리에 올라와 있는 프로세스를 다시 디스크로 내리는 것을 중기스케쥴러가 합니다. 그리고 이러한 과정을 "swapping"이라고 합니다.

 

👩🏻‍💻 Virtual Memory Management

자 요즘날에는 위에서 배운 스케쥴러들은 잘 쓰이지 않는(?) 기법이라고 합니다.

아예 모든 스케쥴러 전체를 다 올려 버립니다. 이유는 Virtual Memory의 등장때문입니다.

 

가상메모리에 대해 딥하게 말하려면 새로 포스팅을 파야할 것 같으나 맛보기로 간단하게 알려드리겠습니다.

 

가상메모리의 개념은 크게 어렵지 않습니다.

 

예를 들어 cpu에서 하나의 프로세스를 돌리는데 필요한 메모리 공간이 2GB입니다.

그런데 메인메모리가 가지고 있는 메모리용량이 250MB밖에 없다고 해봅시다.

이럴경우 하드디스크(HD)를 확장해서 씁니다. 이런것을 가상메모리 기법이라고 합니다.

 

프로그램이 실행될땐 프로세스가 실제 메모리(RAM에 올라와 있어야 합니다. 하지만,

프로그램이 실행될때 실행되는 프로세스 전체가 실제 메모리에 있을 필요는 없습니다.

현재 실행되야하는 부분만 실제 메모리에 있고 나머지는 가상메모리에 존재 함으로써 우리는 이제

실제 메모리 용량보다 큰 프로그램을 실행 시킬 수 있는 것 입니다.

 

가상메모리로 인해 얻는 장점은 아래와 같습니다.

  • 물리 메모리 크기에 제약받지 않게 된다.
  • 더 많은 프로그램을 동시에 실행할 수 있게 된다. 이에 따라 응답시간은 유지되고, CPU 이용률과 처리율은 높아진다.
  • swap에 필요한 입출력이 줄어들기 때문에 프로그램들이 빠르게 실행된다.

가상메모리에 프로그램이 실행될 경우 필요한 부분을 실제 메모리로 옮겨지게 되는데,

이러한 과정을 MAPPING이라고 하고 이러한 역할을 MMU라는 친구가 해줍니다.

 

이정도 개념만 아시고 다음 포스팅을 읽으시면 많은 도움이되실 겁니다.

 

오늘의 주제와는 조금 벗어난 이야기가 될 수 있기 때문에,

Virtual Memory에 대해서는 다음 포스팅에 이어서 쭉 설명 해드리도록 하겠습니다.

 

👩🏻‍💻 정리

스케쥴링이란?

스케줄링(scheduling)은 다중 프로그래밍을 가능하게 하는 운영 체제의 동작 기법이다.

 

스케쥴러의 종류?

- 장기 스케쥴러

메모리는 한정되어 있는데 많은 프로세스들이 한꺼번에 메모리에 올라올 경우, 대용량 메모리(일반적으로 디스크)에 임시로 저장된다. 이 pool 에 저장되어 있는 프로세스 중 어떤 프로세스에 메모리를 할당하여 ready queue 로 보낼지 결정하는 역할을 한다.

- 단기 스케쥴러

Ready Queue 에 존재하는 프로세스 중 어떤 프로세스를 running 시킬지 결정.

- 중기 스케쥴러

여유 공간 마련을 위해 프로세스를 통째로 메모리에서 디스크로 쫓아냄 (swapping)

'os' 카테고리의 다른 글

[OS] CPU 스케쥴러 쉽게 설명하기  (1) 2021.05.12
[OS] 프로세스와 PCB 그리고 스레드  (0) 2021.03.07