[운영체제]스케쥴링 알고리즘

Yeongsan Son·2021년 6월 25일
0

스케쥴링 알고리즘을 알아 보기 전에 프로세스에 대해서 다시 한번 짚고 넘어 가겠다.

프로세스란?

  • 실행중인 프로그램을 프로세스라 부른다
    • 프로세스: 메모리 공간에 할당되어 실행 중인 프로그램
    • 코드이미지(바이너리): 실행 파일 (UNIX, LINUX 계열 - ELF format)

프로세스라는 용어는 작업, task, job과 혼용되어 사용된다.
응용 프로그램은 프로세스가 아니지만 응용 프로그램은 여러 개의 프로세스로 이뤄질 수 있다.
하나의 프로그램은 여러 개의 프로세스가 상호작용을 하면서 실행될 수 있다.

C나 C++을 사용해 프로그램을 만들면 하나의 프로세스이지만
여러 프로그램을 만들어서 IPC 기법으로 서로 통신하면서 프로그램을 만들 수 있다.

스케쥴러와 프로세스

스케쥴러와 프로세스의 관계를 살펴본다면 접근하기가 쉽다.

프로세스의 실행을 스케쥴러가 관리하게 되는데, 우리가 하루 일과표를 계획하고 일과를 진행하는 과정과 같다고 할 수 있다.

그렇다면 스케쥴링은 어떤 순서대로 프로세스를 실행 시킬까?

이 물음에 스케쥴링 알고리즘이 등장하게 된다.

FIFO 스케쥴링 알고리즘

  • First In First Out 스케쥴러
    • 배치 처리 시스템과 유사
  • FCFS 스케쥴러
    • First Come First Served
  • 자료구조의 큐 개념이 적용된다

최단 작업 우선(SJF) 스케쥴링 알고리즘

  • SJF(Shortest Job First) 스케쥴러
    • 가장 프로세스 실행 시간이 짧은 프로세스부터 먼저 실행

  • RealTime OS (RTOS): 응용 프로그램 실시간 성능 보장을 목표로 하는 OS

    • 정확한 프로그램 시작 시간과 프로그램 완료 시간을 보장한다
  • General Purpose OS(GPOS):

    • 프로세스 실행 시간에 민감하지 않고, 일반적인 목적으로 사용되는 OS
    • Windows, Linux

우선순위 기반 스케쥴링 알고리즘

  • Priority-Based 스케쥴러
    • 프로세스에 우선 순위를 정해서 우선 순위가 높은 순서대로 실행
    • 정적 우선 순위:
      • 사용자가 프로세스마다 우선 순위를 미리 지정
    • 동적 우선 순위:
      • 스케쥴러가 상황에 따라 우선 순위를 동적으로 변경

Round Robin 스케쥴링 알고리즘

  • 특정 시간동안 실행되지 못한 프로세스가 CPU 프로세서를 거쳐서 다시 큐의 맨 뒤로 들어옴
    • 시분할시스템을 기본으로 함
    • 특정 시간 동안 실행되지 못한 프로세스를 큐로 넘김으로써 다른 프로그램 실행의 지연 방지
  • 프로그램1: 1초, 프로그램2: 3초, 프로그램3: 2초
    • 프로그램1 1초 실행 후 더 실행할 프로그램 요청이 없으므로 프로그램2 실행
    • 프로그램2 1초 실행 후 나머지 2초의 프로그램2의 요청은 큐의 뒤로 넘긴다
    • 프로그램3 1초 실행 후 나머지 1초의 프로그램3의 요청은 큐의 뒤로 넘긴다
    • 프로그램2 1초 실행 후 나머지 1초의 프로그램2의 요청으 큐의 뒤로 넘긴다
    • ...
    • 1 - 2 - 3 - 2 - 3 - 2

정리하기

  • 기본 스케쥴링 알고리즘
    • FIFO(FCFS) 스케쥴링 알고리즘: 배치 처리 시스템
    • 최단 작업 우선(SJF) 스케쥴링 알고리즘
    • 우선순위 기반 스켈쥴링 알고리즘
      • 정적 우선 순위, 동적 우선 순위
    • Round Robin 스케쥴링 알고리즘
      • 시분할 시스템 기반
profile
매몰되지 않는 개발자가 되자

0개의 댓글