프로세스와 스케쥴러

tycode·2021년 4월 14일
0

C.S (Computer Science)

목록 보기
4/40
post-custom-banner

프로세스 (process)

  • 실행 중인 프로그램을 프로세스라고 함
    • 프로세스: 메모리에 올려져서, 실행 중인 프로그램
    • 코드 이미지(바이너리): 실행 파일, 예:ELF format

프로세스는 작업, task, job라는 용어와 혼용

  • 응용 프로그램 ≠ 프로세스

    • 응용 프로그램은 여러 개의 프로세스로 이루어질 수 있음.
    • 여러 개의 프로세스(프로그램)가 상호작용 하면서 실행될 수 있음.
  • 여러 프로그램을 만들어서, 서로 통신하면서 프로그램을 작성할 수도 있음. (IPC기법)

  • 스케쥴러가 프로세스 실행을 관리한다.

스케쥴링 알고리즘

  • 여러 개의 프로세스가 있는데 어느 시점에서 어떤 프로세스를 실행 및 교체를 할지 결정하는가를 뜻한다.
  • 목표
    • 시분할 시스템 예: 프로세스 응답 시간 가능한 짧게
    • 멀티 프로그래밍 예: CPU 활용도를 최대로 높혀, 프로세스를 빨리 실행

1. FIFO 스케쥴러

프로세스가 저장매체를 읽는 다든지, 프린팅을 한다든지 하는 작업 없이, 쭉 CPU를 처음부터 끝까지 사용한다.

  • 배치 처리 시스템과 유사
  • FCFS (First Come First Served) 스케쥴러 (CPU가 처리)

프로세서 = CPU (헷갈리지 말자)

2. 최단 작업 우선(SJF) 스케쥴러

  • SJF(Shortest Job First) 스케쥴러
    • 가장 프로세스 실행시간이 짧은 프로세스부터 먼저 실행을 시키는 알고리즘.
    • 프로세스 딜레이가 줄겠지만, 모든 실행시간을 다 알아야한다.

기타

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

    • 정확하게 프로그램 시작, 완료 시간을 보장
    • 시간에 민감한 프로세스인 경우에 쓰인다
    • Hardware RTOS, Software RTOS
  • General Purpose OS(GPOS):

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

3. 우선순위 기반 스케쥴러

  • Priority-Based스케쥴러
    • 정적 우선순위
      • 프로세스마다 우선순위를 미리 지정
        예) 웹브라우저를 자주 쓰면 우선순위 높히고, 아닌건 우선순위 낮히고.
    • 동적 우선순위
      • 스케쥴러가 상황에 따라 우선순위를 동적으로 변경
        예) 오래걸릴 거 같은 프로세스를 우선순위를 높히는, 그 반대의 경우 등.

4. Round Robin 스케쥴러

  • 시분할 시스템을 기본으로.
    • 동일한 시간을 모두 주고, 완료 못 한건 다시 뒤로 (Ready Queue)로 가서 대기.

중간 정리

  • FIFO (FCFCS) 스케쥴링 알고리즘 (배치 처리 시스템)

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

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

    • 정적 우선순위
    • 동적 우선순위
  • Round Robin 스케쥴링 알고리즘

    • 시분할 시스템 기반

    프로세스 상태와 스케쥴링 알고리즘 관계


멀티 프로그래밍과 Wait

  • 멀티 프로그래밍: CPU 활용도를 극대화 하는 스케쥴링 알고리즘
  • Wait: 간단히 저장매체로부터 파일 읽기를 기다리는 시간으로 가정
  • Program을 프로세스라고 보자

이렇게 100% 활용하기 위해 스케쥴러가 우선순위 결정해야 한다.
그 때 필요한 요소가 바로 프로세스 상태 정보

프로세스 상태

  • running state: 현재 CPU에서 실행 상태
  • ready state: CPU에서 실행 가능 상태(실행 대기 상태)
  • block state: 특정 이벤트 발생 대기 상태, 발생 전까지는 계속 대기 상태(예: 프린팅이 다 되었다!)

프로세스 상태간 관계

  • 3가지의 상태: ready, running, block states

Process1, Process2, Process3이 ready에 있다면, 무엇을 running시켜야 하는지 결정할 때, 스케쥴러 입장에서 새로운 정책이 필요할 때가 된다.

그래서 어떤 스케쥴링 알고리즘을 쓰냐에 따라 CPU 활용도가 달라진다.

CPU idle 상태: CPU가 아무것도 실행하지 않는 상태

선점형과 비선점형 스케쥴러

  • 선점형 스케쥴러 (Preemptive Scheduling)
    : 하나의 프로세스가 다른 프로세스 대신에 프로세서(CPU)를 차지할 수 있음
  • 비선점형 스케쥴러 (Non-Preemptive Scheduling)
    : 하나의 프로세스가 끝나지 않으면 다른 프로세스는 CPU를 사용할 수 없음

선점형과 비선점형 스케쥴러 차이

  • 선점형: 프로세스 running 중에 스케쥴러가 이를 중단시키고, 다른 프로세스로 교체 가능.
  • 비선점형: 프로세스가 자발적으로 blocking 상태로 들어가거나, 실행이 끝났을 때만 (end), 다른 프로세스로 교체 가능.

예시:

스케쥴러 구분 (정책, policy)

  • FIFO(FCFS), SJF, Priority-based는 어떤 프로세스를 먼저 실행시킬지에 대한 알고리즘.
    (비선점형 스케쥴러에 가깝다)
  • RoundRobind은 시분할 시스템을 위한 기본 알고리즘.(선점형 스케쥴러)

쉬어가기

  • 랙?: 마우스/키보드 반응이 느린 경우?
    • 특정 프로그램(게임)이 혼자 CPU를 많이 차지하고 있어서 마우스/키보드/GUI(화면/창) 등이 안 먹힌다.
post-custom-banner

0개의 댓글