본문 바로가기
CS/Operating System

[ OS 기초 ] 04. 프로세스 스케줄링

by IM조이 2021. 6. 24.

01. 프로세스 스케줄링의 개념
02. 스케줄링의 기준
03. 스케줄링 단계(level)
04. 스케줄링 정책

 

00 도입

앞서 배웠던 내용을 간단히 정리해보면,

  • 프로세스는 자원을 할당받아 목적을 달성하기 위한 작업을 수행한다.
  • 운영체제는 다양한 방식으로 프로세스를 처리한다 (일괄처리, 시분할 등등)
  • 다중 프로그래밍 시스템에서는 여러 프로세스를 동시에 처리해야 한다
  • 이때 운영체제가 어떤 프로세스에세 어떤 자원을 먼저 할당해줄지 결정하는게 스케줄링

 

01 프로세스 스케줄링

우리가 사용하는 시스템은 멀티 프로그래밍 시스템으로 여러 프로세스를 동시에 실행한다. 프로세스가 여러개인만큼 자원인 프로세서(cpu)를 번갈아가면서 사용해야한다. 따라서, 각 프로세스 수행을 위한 cpu를 할당해야 하는데(=자원을 나누어 사용해야 하는데), 이를 어떻게 할당해줄지 결정하는 걸 프로세스 스케줄링이라고 한다.

이러한 자원 할당에는 크게 두 가지 종류가 있다.

  • 시간 분할 할당 : cpu처럼 한번에 한 프로세스만 사용할 수 있는 경우 <= 프로세스 스케줄링이 해당
  • 공간 분할 할당 : 메모리처럼 공간을 나누어 사용하는 경우

 

그런데, 프로세스 스케줄링을 하는 이유는?

시스템의 성능을 향상시키기 위해서

 

스케줄링 한다는 건 자원을 좀 더 효율적으로 할당해서 성능을 향상시키겠다는 것인데, 이때 성능 향상의 지표에는 다양한 종류가 있다. 예를 들면 응답시간(요청에 대한 응답이 돌아오기까지의 시간), 작업처리량(단위시간 동안의 작업 처리량), 자원활용도(주어진 시간 동안 자원이 활용된 시간 = 자원을 얼마나 방치하지 않고 사용했는지) 등등. 이 중 어떤 한 가지 지표가 가장 중요하다고 단정지을 수는 없고, 프로세스의 특성, 즉 작업의 목적에 가장 잘 부합하는 지표다. 위 세 지표 이외에도 수많은 지표가 있다.

참고
- 대기시간(Waiting Time) : 작업 요청으로 프로세스 도착시간 ~ 실행 시작 시간
- 응답시간(Response Time) : 실행 시작 시간 ~ 첫번째 응답(출력)이 나오는 시간
- 실행시간(Burst Time) : 실행 시작 시간 ~ 실행 종료 시간
- 반환시간(Turn-around Time) : 프로세스 도착시간 ~ 실행종료시간 ( = 대기시간WT + 실행시간BT)

 

 

02 스케줄링의 기준

스케줄링 기법에서는 스케줄링을 할 때 여러 항목(criteria)들을 고려한다.

  • 프로세스의 특성 - I/O bounded vs Compute bounded
  • 시스템의 특성 - 일괄처리 시스템(많은 처리량이 중요) or 대화형 시스템(빠른 응답이 중요)
  • 프로세스의 시급성(긴급성) - 하드, 소프트, 리얼타임 시스템
  • 우선순위
  • 프로세스 총 실행 시간

 

02-1 I/O bounded vs Compute bounded

프로세스는 cpu 연산 > I/O > cpu 연산 > I/O > ... > 이런식으로 cpu를 쓰는 것과 I/O를 번갈아 가면서 수행한다. 어떤 프로그램을 실행하느냐에 따라 이 정도의 차이가 있는데, 만약 cpu를 더 쓴다면 프로세스의 성능이 cpu에 더 큰 영향을 받는다는 의미에서 compute bounded 라고 부르고, I/O 과정이 더 많다면 I/O bounded라고 부른다. 이러한 프로세스의 특성에 따라서도 스케줄링 기법을 조절해 더 효율적으로 작업을 수행할 수 있다. 

 

 

03 스케줄링의 단계

스케줄링은 발생 빈도에 따라 세 종류로 나눌 수 있다.

  • Long-term scheduling
  • Mid-term scheduling
  • Short-term scheduling

 

각 스케줄링 수준을 그림으로 정리

 

03-1 Long-term scheduling
발생 빈도가 가장 낮고 대표적으로 Job Scheduling 이 해당된다. 
- 프로세스 : Job 들이 커널에 등록된 것
- 잡 스케줄링 : 이 Job 중 어떤 것을 먼저 등록시킬지를 경정하는 것
- 이때 몇 개를 스케줄링 하느냐에 따라 다중프로그래밍 정도(multi-programming degree)를 조절하는 것
  : 만약 100개의 프로세스가 있을 때 이 100개를 모두 동시에 커널에 등록하면 성능이 저하될 수도 있다. 따라서 한 번에 n개 단위로 커널에 등록하는 방식으로 스케줄링하면 더 효율적으로 자원을 이용하면서 작업을 수행할 수 있다.

특히 I/O bounded 와 cpu bounded 프로세스를 잘 조합해서 등록해야 한다.
(왜? 만약 한 쪽으로 치우치게 등록한다면 둘 중 한 하드웨어는 활용 못하고 놀리게 되어 효율적인 자원 활용이 불가능하기때문이다)

다만, 시분할 시스템은 예외로 기본적으로 시간을 나누어 cpu를 사용하기 때문에 long-term scheduling이 상대적으로 덜 중요하다.

03-2 Mid-term scheduling
앞서 잡 스케줄링이 long-term scheduling에 해당되었다면 메모리할당, 즉 suspended ready에서 ready 상태로 어떤 프로세스에게 메모리를 할당해줄지 결정하는 것은 Mid-term scheduling에 해당한다. (잡스케줄링보다는 빈번하게 발생)

03-3 Short-term scheduling
short-term scheduling은 ready 에서 running으로 올려주는 작업, 즉 cpu를 할당과 관련된 스케줄링이다. 이 부분을 프로세스 스케줄링이라 부르며 가장 빈번하게 발생하기때문에, 만약 이 과정이 느리다면 시스템이 느려진다. 

 

 

04 스케줄링 정책

정책이란 스케줄링을 수행하는 방법, 방식, 기준, 가이드라인 정도로 이해할 수 있다.

04-1 선점(Preemptive) vs 비선점(Non-preemptive)
선점한다 = 다른 프로세스가 할당받은 cpu를 뺏을 수 있다
비선점 = 선점하지 못한다 = 뺏어올 수 없고, 내가 뺏길리도 없는 

선점 시스템에서는 타인에 의해 자원을 빼앗길 수 있고 이는 다시말해 여러 프로세스가 반복적으로 수행되는 것을 의미하기 때문에 응답성이 높아진다는 장점이 있다. 하지만 여러 프로세스의 반복 수행은 곧 문맥 교환(context switching)이 더 빈번해진다는 것을 의미하기 때문에 overhead가 발생한다.(이는 곧 비용으로 연결된다)

비선점 시스템은 할당 받은 자원을 오로지 자신만 쓰는 시스템으로 문맥 교환으로 인한 오버헤드는 적지만, 다른 프로세스는 자원을 사용할 수 없기 때문에 평균 응답 시간이 증가한다.(내가 끝날때까지 기다려야 해서). 또 우선순위가 높은 일을 처리하지 못하는 우선순위 역전 현상도 발생할 수 있다.

04-2 우선순위
각 프로세스에 우선순위를 어떻게 부여할 것인지에 관한 정책은 크게 두 개로 나눌 수 있다.

04-2-1 Static Priority
한 번 정한 우선순위는 바뀌지 않는 시스템. 구현이 쉽고 오버헤드도 적지만 시스템 환경 변화에 대한 대응은 어렵다

04-2-2 Dynamic Priority
우선순위를 동적으로 바꿔주는 시스템으로, 구현이 더 어렵고 우선순위가 바뀌는 과정에서 오버헤드도 생긴다. 하지만 시스템 환경 변화에 빠르고 유연하게 대응할 수 있다는 장점이 있다.

 

**  KOREATECH 무료 OS강의(클릭) 학습 후 나름대로 이해한 뒤 정리한 내용입니다. **

 

[Course] Operating System (CPA310) - 운영체제 강의

o Operating System (운영체제), CPA310, KOREATECH o Instructor: Duksu Kim (김덕수) o Course homepage: https://sites.google.com/view/hpclab/courses/operating-system 운...

www.youtube.com

 

댓글