Scheduler

신명철·2022년 2월 6일
0

OS

목록 보기
11/27

스케줄러

Job Queue : 현재 시스템 내에 있는 모든 프로세스들의 집합
Ready Queue : 현재 메모리 내에서 CPU 를 할당받아 실행되기를 기다리는 프로세스들의 집합
Device Queue : I/O 작업을 대기하고 있는 프로세스들의 집합

  • 프로세스는 종료될 때 까지 수 많은 큐들을 돌아다닌다. OS 는 이 큐 안에 있는 프로세스 중 하나를 선택해야 하는데, 이 일을 스케줄러가 담당한다.
  • 메인 메모리에 존재하면서 Ready 상태에서 Running 을 기다리는 프로세스들은 Ready Queue 에 위치하게 된다. 일반적으로 링크드 리스트로 구현되는데, 첫번째와 마지막 PCB를 가리키는 포인터를 포함한다.

단기 스케줄러

  • CPU메모리사이의 스케줄링을 담당한다.
  • 상대적으로 실행 빈도가 잦다.
  • CPU에게 필요한 데이터를 확보해주고 메모리에 있는 프로세스 중 하나를 선택해 CPU를 할당한다.
  • 즉, Ready Queue 에 있는 프로세스 중 어떤 프로세스를 running 시킬지 결정한다.
  • Ready Queue 에 있는 프로세스 중 먼저 도착한 프로세스에게 CPU 를 할당한다. (Scheduler dispatch)
  • 프로세스 상태
    • ready -> running -> waiting -> ready

장기 스케줄러

  • 메모리디스크사이의 스케줄링을 담당한다.
  • 상대적으로 호출되는 빈도가 적다.
  • 많은 프로세스들이 메모리로 올라오는 경우 디스크에 임시로 저장한다. 이 디스크의 프로세스들 중 어떤 프로세스를 메모리로 올릴지를 결정한다.
  • 디스크와 같은 저장 장치에 작업들을 저장해놓고 실행할 작업을 Job Queue 에서 꺼내 Ready Queue 를 통해 메인 메모리에 적재한다.
  • Degree of Multiprogramming(몇 개의 프로그램을 메모리에 올릴 것인지) 제어
  • 프로세스 상태
    • new -> ready(in memory)

중기 스케줄러

  • 여유 공간 마련을 위해 메모리에서 프로세스들을 쫓아내는 작업을 한다.(=swapping)
  • 쫓겨난 프로세스들은 suspended 상태가 된다.
  • 즉, 프로세스에게서 메모리를 deallocate
  • 메모리 에 너무 많은 프로그램이 올라가는 것을 조절한다.
    • Degree of Multiprogramming 제어
  • 프로세스 상태
    • ready -> suspended
    • 스스로 ready 상태로 돌아갈 수 없음

suspended(stopped) 상태

  • 외부적인 이유로 메모리에서 디스크로 내려간 상태이다.
  • 프로세스 전부 디스크로 swap out 된다. Blocked 상태는 I/O 작업을 기다리는 상태이기 때문에 스스로 Ready Queue로 돌아갈 수 있지만, Suspended 상태는 외부적인 이유로 Suspending 됐기 때문에 스스로 돌아갈 수 없다.

dispatcher

  • CPU의 제어권을 CPU Scheduler 에 의해 선택된 프로세스에게 넘긴다.
  • CPU 스케줄러 내부에 포함된 것으로, 단기 스케줄러가 선택한 프로세스에 실질적으로 프로세서를 할당하는 역할을 한다.
  • 프로세스의 레지스터를 적재하고(context switching), 커널모드에서 사용자모드로 전환시켜주며, 프로세스가 다시 시작할 때 사용자 프로그램이 올바른 위치를 찾을 수 있도록 해준다.
profile
내 머릿속 지우개

0개의 댓글