[운영체제] 단기, 중기, 장기 스케쥴러

지니🧸·2023년 4월 7일
0

CS 저장소

목록 보기
5/48

🎂 단기, 중기, 장기 스케쥴러

스케쥴러: 어떤 프로세스에게 자원을 할당하는지를 결정하는 운영체제 커널의 모듈

장기 스케쥴러 (작업 스케쥴러)

  • 어떤 프로세스를 준비큐에 넣을 것인지 결정
    • 디스크에서 어떤 프로그램을 가져와 커널에 등록 (준비큐에 등록)할지 결정
      • 디스크에서 하나의 프로그램을 가져와 커널에 등록하면 프로세스가 됨
  • 메모리에 동시에 올라가 있는 프로세스의 수 조절
  • 수십초~수분 단위로 호출 > 상대적으로 속도 느린 것이 허용됨
  • 현대의 시분할 시스템에서 사용되는 운영체제는 일반적으로 장기 스케쥴러 X
    • 현대 운영체제는 프로세스가 시작되면 장기스케쥴러 없이 바로 그 프로세스에 메모리를 할당해 준비 큐에 넣어줌

중기 스케쥴러

  • 메모리에 적재된 프로세스를 내림

단기 스케쥴러

  • 준비 상태에 있는 프로세스 중 어떤 프로세스를 CPU에 할당할지 결정
  • ms 단위로 빈번하게 호출 > 빠른 속도 요구됨

🎂 현대 OS에서 스케쥴러의 사용

과거) 적은 양의 메모리를 많은 프로세스에게 할당하면 프로세스당 메모리 보유량이 적어져 장기 스케쥴러가 이를 조절하는 역할로 필요
현대) 프로세스가 시작되면 장기스케쥴러 없이 바로 그 프로세스에 메모리를 할당해 준비큐에 넣어주게 됨

가상메모리시스템의 발달로 장기스케쥴러가 필요 없어짐

🎂 프로세스의 스케쥴링 상태

  • New: 프로세스 생성 중
  • Running: CPU 할당 받아 명령어 실행 중
  • Waiting/Blocked: 프로세스가 이벤트를 대기하는 중
    • 이벤트: 입출력완료/신호 수신
  • Ready: 프로세스가 CPU에 스케쥴링되기를 대기중
  • Terminated: 프로세스 종료
  • Suspended: 프로세스 중지
    • 메모리를 강제로 빼앗긴 상태
    • 외부에서 다시 재개시키지 않는 이상 다시 활성화될 수 없음
    • suspended ready: 준비 상태에 있던 프로세스가 디스크로 스왑아웃
    • suspended blocked: 봉쇄 상태에 있던 프로세스가 디스크로 스왑아웃

🎂 Preemptive & Non-preemptive 스케쥴링

Preemptive scheduling:

  • 두가지 상황에 발생:
    • running > ready: timeout, interrupt
    • waiting > ready: I/O or event 끝
  • ready queue 상태의 변경이 필수적으로 일어남 > 우선순위를 고려해 다시 CPU 재할당 필요
  • 새로 ready queue에 들어온 프로세스가 가장 효율적이라 판단되면 지금 사용되고 있는 CPU를 가져와서 할당되는 상황도 발생
  • 우선순위가 높은 프로세스를 빠르게 처리
  • 비교적 높은 효율성
  • 오버헤드가 큼

Nonpreemptive scheduling: 비선점형

  • 두가지 상황에 발생: 모두 ready queue와 관련 없는 곳으로 감 (돌발상황 X)
    • running > waiting: I/O 발생
    • terminates: exit
  • 이미 할당된 자원을 다른 프로세스가 강탈할 수 없음
  • 돌발상황 없음 > 응답시간의 예측이 쉬움
  • 일괄처리에 적합
  • 비효율적

Preemptive/non-preemptive 스케줄링에서 존재할 수 없는 상태:
없음

🎂 메모리가 부족할 때 프로세스의 상태

Swapping, Paging:

  • 물리 메모리가 부족하면 가상 메모리를 응용하는 방식
  • 저장 장치의 일부를 일시적으로 메모리 대신 사용
  • 메모리보다 저장 장치에 접근하는 속도가 현저히 느림
  • 시스템이 만성적으로 메모리가 부족하면 스와인/스왑아웃이 반복되는 thrashing 상태 발생
    • 스와핑: 스왑영역을 물리 메모리 영역으로 되돌리는 것
    • 스왑아웃: 물리 메모리 영역을 스왑 영역으로

그래도 메모리가 부족하면 시스템은 Out of Memory 상태가 됨: 가장 죽이기 좋은 프로세스 선택 (가장 큰 메모리 확보 & 시스템에 큰 영향 X)

프로세스는 suspended가 된다
suspended state: 메모리를 할당받지 못한(혹은 빼앗긴) 상태

  • 메모리 부족으로 인해 메모리를 빼앗기면 메모리의 상태도 사라짐
  • 메모리의 상태가 사라지면 잠시 대기 중인 프로세스는 처음부터 실행하거나 혹은 아예 실행하지 않는 문제 발생
    • 이를 방지하고자 기록하고 있는 memory image를 swap device에 저장함 > swap-out

참고:

profile
우당탕탕

0개의 댓글