[OS] 스케쥴러

공덕이형·2023년 12월 9일
0

CS

목록 보기
3/17

스케줄러


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

운영체제는 스케줄러를 통해 CPU를 사용하려고 하는 프로세스 사이의 우선순위를 관리하고 이것을 스케줄링 이라 한다.

프로세스를 스케줄링 하기 위한 Queue에는 세 가지 종류가 존재한다.

  • Job Queue : 현재 시스템 내에 있는 모든 프로세스의 집합 (아직 메모리에 올라가지 않은 것)
  • Ready Queue : 메인 메모리에 존재하며, 준비 완료 상태에서 실행 대기하는 프로세스의 집합
  • Device Queue : Device I/O 작업을 대기하고 있는 프로세스의 집합

스케줄러의 종류

  1. 단기 스케줄러 (CPU Scheduler) : CPU와 메모리 사이를 담당하는 스케줄러

    • 실행 준비가 되어 Ready Queue에 있는 프로세스들 중에서 선택하여 CPU를 할당
    • 단기 스케줄러는 자주 수행되므로 빨라야 함
  2. 중기 스케줄러 (Swapper) : 메모리에서 CPU를 점유하기 위해 경쟁하는 프로세스를 디스크로 보내는 스케줄러

    • 프로세스에게서 Memory를 뺏음
    • degree of MultiProgramming을 제어
    • 디스크로 보낸 프로세스를 메모리로 불러와서 중단된 지점에서 실행을 재개하는 스와핑 기능을
    • swap out 담당
  3. 장기 스케줄러 (Job Scheduler) : 메모리와 디스크 사이를 담당하는 스케줄러

    • 프로세스에 memory(및 각종 자원)을 주는 문제
    • degree of MultiProgramming을 제어
    • 디스크 상의 프로세스를 선택하여 Ready Queue로 저장(메모리로 적재)
    • swap in 담당

degree of Multiprogramming이란?

메모리에 너무 적은 프로그램이 올라와도 성능저하가 발생하고, 메모리에 많은 프로그램이 올라와도 성능 저하가 발생하기 때문에, 적절한 균형을 맞춰줘야 하는데 이를 장기 스케줄러가 정함.
그러나, 현재 컴퓨터에는 보통 장기 스케줄러가 없다 그렇기에 중기 스케줄러가 이를 제어한다고 생각하면 됨.


프로세스의 상태

상태명상태description
new (create state)프로세스 생성 중- 프로세스가 아직 자원할당을 받지 못한 상태
- PCB가 커널 공간에 생성됨
ready (ready state)프로세스가 CPU를 기다리는 중- 생성된 프로세스가 CPU 자원 할당을 기다리는 상태
- 일반적으로 우선 순위가 높은 프로세스가 먼저 할당 받음
running (running state)프로세스가 실행 중- 프로세스가 CPU 자원을 할당 받아 작업을 수행중인 상태
- 일정 시간 동안 CPU를 사용할 권리를 가지게 된다
- 주어진 시간을 다 사용 하고도 작업이 끝나지 않았다면 ready state로 돌아와 다음 차례를 기다린다
- 프로세스는 ready와 running state를 왔다 갔다 하게 됨
terminated (exit state)프로세스의 실행 종료- PCB가 사라진 상태를 의미
blocked (waiting state)프로세스 대기- running 상태의 프로세스가 주어진 시간을 다 쓰기 전에 입출력(I/O) 작업이 필요하거나, 어떤 이벤트가 생겼을 경우 해당 이벤트가 처리될 때 까지 사용하고 있던 CPU를 반납하고 입출력장치별로 마련된 디바이스 큐에 가서 줄을 서고 기다린다.
- 즉, 디바이스 큐에 속한 프로세스는 언제나 blocked 상태
입출력이 완료 되면 디바이스 컨트롤러가 CPU에 인터럽트를 발생시키고, 대기 상태에 있는 여러 프로세스 중 해당 인터럽트로 깨어날 프로세스를 찾는다
- 이후 해당 프로세스는 blocked -> ready 로 상태가 전이되며, 디바이스 큐에서 나와 레디큐로 이동하게 된다.
suspended프로세스 수행 정지- 외부적 이유로 프로세스의 수행이 정지된 상태로 메모리에서 내려간 상태.
- 전부 디스크로 swap out

Blocked와 Suspended의 차이
Blocked : 자신이 요청한 event가 만족되면 Ready
Suspended : 외부에서 resume 해줘야 Active

Running, Ready, Blocked의 경우엔 프로세스 입장에서 다른 놀이기구 줄을 서고 있기 때문에 열심히 일을 하고 있는 상태임. But, Suspended는 Memory를 아예 빼앗긴 상태이므로 외부에서 resume해주지 않는다면 CPU로 돌아갈 수 없음.

Reference

https://core.ewha.ac.kr/publicview/C0101020140318134023355997?vmode=f

profile
형이 먹여살릴게

0개의 댓글