Sqix

CS - OS - 02. 프로세스 스케쥴링 본문

CS/OS

CS - OS - 02. 프로세스 스케쥴링

Sqix_ow 2021. 11. 16. 19:13

배치 처리 시스템

하나의 프로그램 실행 요청의 처리가 완료된 이후 다음 프로그램이 순차적으로 진행될 수 있도록 하는 처리 기법

  • Queue와 유사한 형태로, First in - First out 형태(등록된 프로그램 순서대로 처리)
  • 모든 처리작업이 종료되어야 결과가 도출되므로, 각 사용자 입장에서는 응답시간이 길다.

시분할 시스템

프로그램 실행의 동시성과 이용자의 다중성을 확보하기 위해 응답 시간을 최소화하는 시스템

  • 응용 프로그램이 CPU를 점유하는 시간을 잘개 쪼개어 사용하도록 하는 시스템

멀티 태스킹

단일 CPU에서 여러 응용 프로그램이 동시에 실행되는 것 처럼 보이도록 하는 시스템

  • 다중 프로그램이 매우 짧은 기간동안 실행되도록 하여 동시에 실행되는 것처럼 보이게 함.
  • 시분할 시스템과 기본 원리가 동일.

멀티 프로세싱

다중 CPU에서 하나의 프로세스를 병렬 처리하여 처리속도를 극대화하는 기법

스케줄링 알고리즘

프로세스

  • 메모리에 올려져서 실행 중인 프로그램.
  • 코드의 이미지(바이너리) 파일 -> exe, elf 등의 포맷.
  • 하나의 응용 프로그램은 하나의 프로세스일 수도 있고 여러 프로세스가 상호작용하며 실행될 수도 있음(IPC).
  • 스케줄러에 의해 프로세스 실행이 관리됨.

스케줄링 알고리즘

  • 목표에 따라서 알고리즘이 구현됨
    • ex) 시분할 시스템 : 프로세스 응답 시간을 최대한 짧게
    • ex) 멀티 프로그래밍 : CPU 활용도를 최대로 높여서 프로세스 실행시간을 최소화

FIFO 스케줄러

  • First in First out, 먼저 들어온 프로세스를 먼저 실행한다
  • 가장 간단한 스케줄러로 배치 시스템과 유사

SJF 스케줄러

  • 최단 작업(Shortest Job) 우선 스케줄러
  • 가장 프로세스 실행 시간이 짧은 프로세스부터 프로세서가 처리하는 알고리즘

Priority Based 스케줄러

  • 정적 우선순위 => 프로세스마다 우선순위가 미리 지정되는 스케줄링 알고리즘
  • 동적 우선순위 => 스케줄러가 상황에 따라 우선순위를 동적으로 변경

Round Robin 스케줄러

  • 특정 실행시간 이후 프로세스가 종료되지 않았으면 다음 프로세스를 실행시키고 이전 프로세스는 큐의 끝으로 가서 rdy 상태가 됨
  • 모든 프로세스에 대한 균등한 실행시간을 보장해주기 위한 스케줄러

멀티 프로그래밍을 위한 스케줄링 알고리즘

멀티 프로그래밍

  • 일반적으로 응용프로그램은 CPU를 온전히 사용하기보다 별도로 작업을 중간에 필요로 하는 경우가 많음.
    • ex) I/O 장치를 활용하거나, 레지스터 이외의 캐시나 주 메모리, 보조기억장치 등에 접근하여야 하는 경우
  • 응용프로그램의 실행을 짧은 시간 안에 완료할 수 있음.
  • 타이머 인터럽트 기능을 제공하며 메모리 보호(Canary 등) 기능이 있는 경우 각 프로그램들에게 프로세스를 일정 시간만큼
    할당할 수 있고, 또한 각 프로그램들이 서로의 메모리 영역을 침범할 수 없도록 할 수 있다.
  • 스케줄러가 어떤 프로세스가 현재 Wait 상태인지, Run 상태인지를 인지하여야 한다.
    • 어떤 시점에 특정 프로세스를 CPU에 할당할지 판단할 수 있어야 함
  • State Queue
    • Ready State Queue / Running State Queue / Block State Queue를 활용하여 각 프로세스의 상태마다 큐에 삽입

프로세스 상태

  • new : 새로운 프로세스가 생성된 상태
  • ready : 프로세스가 바로 프로세서에 할당되어 실행될 준비가 완료된 상태
  • running : 프로세스가 프로세서에 할당되어 실행중인 상태
  • exit(terminated) : 프로세스가 종료된 상태
  • blocked(waiting) : 프로세스가 특정 이벤트의 종료까지를 대기중인 상태

선점형 / 비선점형 스케줄러

  • 선점형 스케줄러 : 프로세스가 실행되고 있더라도 스케줄러가 우선순위 조건을 고려하여 프로세스를 교체할 수 있음
    • ex) SJF / FIFO / 우선순위 기반 스케줄링 등
  • 비선점형 스케줄러 : 프로세스가 자발적으로 waiting 상태가 되거나 동작을 마친 후에 다른 프로세스로 교체할 수 있음
    • ex) 라운드 로빈 등

'CS > OS' 카테고리의 다른 글

CS - OS - 06. Thread  (0) 2021.11.23
CS - OS - 05. Inter Process Communication(IPC)  (0) 2021.11.19
CS - OS - 04. 프로세스와 컨텍스트 스위칭  (0) 2021.11.19
CS - OS - 03. 인터럽트  (0) 2021.11.18
CS - OS - 01. 운영체제의 큰 틀 이해  (0) 2021.11.15
Comments