취업 준비/운영체제

스케쥴링 알고리즘

openingsound 2020. 12. 30. 19:14

프로세스(process)

  • 프로세스의 실행을 관리하는 주체는 CPU다.
  • 작업, task, job이라는 용어로 사용되기도 함
  • 메모리에 올려져서, 실행중인 프로그램

응용프로그램

  • 응용프로그램 ≠ 프로세스
    • 여러개의 프로세스로 이뤄어질 수 있음
  • 하나의 응용 프로그램은 여러 개의 프로세스가 상호작용을 하면서 실행 됨
  • C/C++ 하나로 만들면 하나의 프로세스 이곘지만 보통 이러진 않음

스케쥴러

  • 프로세스 실행을 관리한다.

스케쥴링 알고리즘

  • 어느 순서대로 프로세스를 실행시킬까?
  • 목표
    • 시분할 시스템 예 : 프로세스 응답 시간을 가능한 짧게 하는것 (대기시간을 짧게하자)
    • 멀티 프로그래밍 예 : CPU활용도를 최대로 높여서, 프로세스를 빨리 실행

FIFO

  • 프로세스가 저장매체를 읽는 다든지, 프린팅을 한다든지 하는 작업 없이, 쭉 CPU를 처음부터 끝까지 사용한다고 가정
  • 가장 간단한 스케쥴러
  • FCFS(First Come First Seved)라고도 함
  • 자료구조 Queue와 같다

최단 작업 우선(SJF)

  • SJF (Shotrtest Job First)스케쥴러

  • 가장 프로세스 실행 시간이 짧은걸 먼저 실행 시킨다.

  • FIFO보다 응답 시간이 짧을 수 있다.

  • 큰 실행 시간을 요구하는 프로세스 보다 총 시간은 빠를 수 있겠지만 프로세스 마다 실행 시간을 알아야 한다.

  • 효율성을 극단적으로 고려했기 때문에 버스트 시간이 긴 프로세는 계속 뒤로 밀린다.

    >  CPU가 하나의 프로세스를 처리하여 완료하는데 걸리는 시간을 CPU버스트 시간이라고 한다.

우선순위 기반 스케쥴러(Priority-Based )

  • 정적 우선순위
    • 프로세스마다 우선순위를 미리 지정
    • ex) 웹 브라우저는 높고 카카오톡읕 낮게
  • 동적 우선순위
    • 스케쥴러가 상황에 따라 우선순위를 동적으로 변경
    • CPU에서 가장 최근에 실행된 프로세스 일수록 우선 순위가 높도록 스케쥴러가 알아서 관리해줌
  • 우선순위가 같다면 FIFO 스케쥴링을 한다.
  • SJF도 버스트 시간이 짧을수록 우선순위가 높은 알고리즘이라고 할 수 있다.
  • 무기한 봉쇄( Indefinite Blocking)이라고 우선순위가 높은 프로세스가 계속 유입되어 우선순위가 낮은 프로세스가 계속 뒤로 밀리는 현상이 발생 할 수 있다.
    • 프로세스 aging에 따라서 대기한 시간에 따라 우선순위를 높여줌 으로서 해결 할 수 있다.

Round Robin (RR)

  • 현대적인 스케쥴링 알고리즘

  • 특정 시간동안(Time Quantum) 실행을 하다 끝나지 않으면 queue구조의 맨뒤로 다시 보냄

    > 실행 최소 단위 시간을 Time Quantum 혹은 Time Slice라고 한다.

  • 시분할 시스템을 기본으로 함

  • 버스트 시간이 각기 다른 복잡한 경우에 효율적이다.

  • 할당 시간이 너무 크면 FIFO와 다를바가 없고 너무 작으면 Context switching(아래 있음)이 너무 잦아 Overhead가 발생한다(배보다 배꼽이 더커짐)

쉬어가기

  • RealTime OS(RTOS)
    • 응용 프로그램 실시간 성능 보장을 목표로 하는 OS
    • 정확하게 프로그램 시작, 완료 시간을 보장
    • 공정같이 정확한 시간이 요구되는 경우 사용됨
  • General Purpose OS(GPOS)
    • 프로세스 실행 시간에 민감하지 않고 일반적인 목적으로 사용되는 OS
    • Window, Linux등

'취업 준비 > 운영체제' 카테고리의 다른 글

인터럽트  (0) 2020.12.30
프로세스 상태와 스케쥴링  (0) 2020.12.30
프로세스 스케쥴링 기초  (0) 2020.12.24
운영체제의 구조  (0) 2020.12.23
운영체제와 응용 프로그램  (1) 2020.12.23