computer science

[OS] 운영체제 Process Scheduling

yjs3819 2021. 7. 21. 20:42
728x90

OS가 관리하는 스케쥴링이란 뭔지? 그중 프로세스 스케쥴링이란 뭔지?에 대해서 알아보자

다중프로그래밍(Multi Programming)

OS를 구분함에 있어 하나의 시스템에서 여러개의 프로세스가 존재하는 시스템을 다중 프로그래밍이라 했었다.
이렇게 여러개의 프로세스가 하나의 시스템에 존재하면 한정된 자원을 잘~~ 할당해야 컴퓨터 시스템의 성능이 높아질수 있다.
자원을 할당할 프로세스를 선택하는 것을 스케쥴링이라 한다.

스케쥴링이란 자원을 할당할 프로세스를 선택하는 것이다. (in 다중프로그래밍)

한정된 자원을 관리하는데 있어 시간을 분할 해서 프로세스에게 할당할지, 아니면 한정된 자원의 공간을 분할해서 프로세스에게 할당할지에 대한 방법이 존재한다.

자원 관리

  • 시간 분할 관리
    한정된 자원을 할당하는 시간을 분할하여 한정된 자원을 관리하는 방법이다.
    대표적으로 하나의 cpu를 할당할 프로세스는 하나만 선택할수 있는데 프로세스가 cpu를 할당받는 시간을 분할하는 프로세스 스케쥴링이 존재한다.

프로세스 스케쥴링이란 프로세서(cpu)를 할당할 프로세스를 선택하는 것을 의미한다.

  • 공간 분할 관리
    하나의 자원을 공간적으로 분할하여 동시에 사용하게하여 자원을 관리하는 방법을 의미한다. 대표적으로 메모리 자원에 대해서 공간을 분할하여 관리한다.

스케쥴링의 목적

한정된 자원을 할당할 프로세스를 왜 잘선택해야하는가?

당연히 시스템의 성능을 향상하기 위해서이다.
그런데 성능은 뭘 의미하는거야?

시스템 성능 지표(성능을 나타낼 지표)

  • 응답시간
    작업 요청으로부터 응답을 받을 때까지의 시간 (real time system같이 제한시간이 있는 시스템에서 매우 중요한 지표겠다.)
  • 작업 처리량
    단위시간 동안 완료된 작업의 수 (batch system같은 일정 개수의 완료된 작업이 모일때까지 기다리는 시스템에서 매우 중요한 지표겠다.)
  • 자원활영도
    주어진 시간동안 자원이 활용된 시간 (매우 비싼 장비를 사용할 때 최대한 많이 자원을 활용해야 좋으므로 이러한 경우에 중요한지표겠다.)즉 시스템의 목적과 상황에 따라서 시스템 내에서 성능을 나타내는 가장중요한 지표는 바뀐다!

이 외에도 시스템의 성능을 나타낼 지표는 많지만 대표적인 세개만 써보았다.

스케줄링은 시스템의 목적에 맞는 지표를 고려하여 선택하도록 하자!!

스케쥴링의 기준

스케줄링의 기준은 스케줄링 기법 즉, 한정된 자원을 할당할 프로세스를 선택하는 기법이 고려하는 항목을 의미한다.
(= 어떤 기준으로 자원을 할당할 프로세스를 선택할까?)

  1. 프로세스의 특성에따라
    프로세스는 수행중에 cpu를 사용하여 연산을 하거나, I/O를 대기하는 작업을 번갈아가면서 한다. 이중 cpu를 사용하여 연산을 하는 시간을 cpu burst라 하고, I/O를 대기하는 시간을 I/O burst라 한다. 이 때 cpu burst 시간이 더 많은 프로세스를 compute-bounded process라 하고 I/O burst시간이 더 많은 프로세스를 I/O-bounded process라 한다.
    프로세스가 compute-bounded process인지 I/O-bounded process인지에 따라서 스케줄링의 기법을 정할수 있다.
  2. 시스템 특성
    어떤 시스템인지에 따라 스케줄링의 기법을 정할수있다.(batch 인지, 시분할인지, real time인지, interactive인지..)
  3. 프로세스의 긴급성
    말 그대로 프로세스의 긴급성에 따라서 스케쥴링 기법을 정할수있다.
  4. 프로세스 우선순위
    프로세스의 우선순위에따라서...

스케쥴링의 단계(LEVEL)

자원을 할당하는 프로세스를 선택하는 빈도가 매우 긴지, 중간정도인지, 짧은지에 따라 스케쥴링의 단계가 존재한다.

Long-term scheduling(스케쥴링 텀 길때)

  • Job Scheduling(JOB이 커널에 등록되어 프로세스가 되는 스케쥴링)
    왜냐면 새롭게 프로세스를 시작하는 경우는 다른 경우에 비해서 매우 적기 때문이다.

Mid-term scheduling(스케쥴링 텀 중간)

  • Memory allocation
    suspended상태의 프로세스가 memory를 할당받는 텀(Job scheduling보단 텀이 짧다)

Short-term scheduling(스케쥴링 텀 짧음)

  • Process Scheduling
    초반에 언급했지만 프로세서를 할당할 프로세스를 선택하는 것을 프로세스 스케쥴링이라 하고 이는 매우 빈번히 일어난다. 매우 빈번하게 스케쥴링이 일어난다는 말은 그만큼 시스템 성능에 중요하다는 것이다.(Job scheduling이나 Memory allocation보다 자주일어나니 스케쥴링이 효율적이여야 시스템 전체 성능이 향상되겠다!!)

전에 정리한 프로세스 상태 전이도에 프로세스 스케쥴링 단계를 합친 그림이다.
어떤 스케쥴링이 일어날때 빈번하게 일어나는지 확인!

스케쥴링 정책

어떤 방법, 방식으로 프로세스에게 자원을 할당할까?

선점 vs 비선점

자원을 할당받고 있는 프로세스를 강제적으로 자원을 뺏어서 다른 프로세스에게 줄지(선점), 자원을 할당받은 프로세스는 프로세스 수행이 끝날 때까지 건들지 말지(비선점)에 대한 방식이다.

각 방식에는 장/단점이존재한다.

선점

  • Context switch overhead가 크다.
  • 스케쥴링이 자주일어나야하는 시스템에서 적합하다.

비선점

  • Context switch overhead가 적다.
  • 프로세스의 우선순위가 자주 역전되는 시스템에서 좋지 못하다.

우선순위

프로세스의 중요도를 의미한다.
프로세스의 우선순위가 정적으로 변하지 않는 방식와 동적으로 변하는 방식이 존재한다.
선점 비선점과 같이 서로간의 장/단점이 존재한다. 그렇기에 위에서 말한 스케쥴링 기준에 따라서 적절하게 선택하면된다.

 

김덕수 교수님의 운영체제 강의

https://www.youtube.com/watch?v=_gNeoGQx-Tc&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN&index=8

728x90