Tech

Diary

Lecture

About Me

개발중

프로세스 스케줄러

JeongSeulho

2023년 02월 08일

준비중...
클립보드로 복사

프로세스 상태 변화

  • 프로세스 생성
  • 프로세스 준비
    • 새로 생성되거나 실행되던 프로세스가 CPU Time을 다 쓰고 준비비
  • 프로세스 실행
    • 준비 상태의 프로세스가 CPU를 할당받아 실행
    • 이 준비 => 실행되는 규칙이 스케줄러에 의해 결정됨
  • 프로세스 대기
    • 실행 상태의 프로세스가 IO 이벤트로 혹은 임계영역에 들어가기 위한 대기
  • 프로세스 종료
    • 실행 상태의 프로세스가 종료

Image

scheduler

ready 상태의 프로세스들은 ready queue에 저장되어 있음
ready queue에 있는 프로세스들 중 어떤 프로세스를 실행할지 결정하는 것이 스케줄러 Image

dispatcher

스케줄러가 실행하기로 한 프로세스를 실제로 running 상태로 전환하는 것을 담당하는 것이 dispatcher

  • Context Switching을 담당
  • kernel mode에서 user mode로 전환
  • 실행할 프로세스가 적절한 메모리 위치로 이동하도록

Context Switchingkernel mode에서 이루어지는데
프로세스가 실행되면 권한을 프로세스로 넘겨주는 user mode로 돌아감

스케줄링 방식

Non-preemptive scheduling

프로세스가 자발적으로 자신의 자원을 반납하고 OS는 강제할 수 없음
즉, 실행중인 프로세스는 자발적으로 ready, waiting, terminated 상태로 전환되는 것만 가능
이 방식의 알고리즘들은 단지 ready queue에 있는 프로세스들을 줄 세우는 것만 필요

  • Context Switching이 적음
  • 응답시간이 길어질 수 있음

FCFS (First-Come, First-Served)

  • 먼저 도착한 프로세스가 먼저 실행됨

SJF (Shortest Job First)

  • 다음 cpu burst가 짧은 프로세스부터 실행

Preemptive scheduling

실행중인 프로세스는 OS가 강제하여 상태를 변화시키고 자원을 빼앗을 수 있음
우선순위의 높은 프로세스가 ready 상태로 전환되면 실행중인 프로세스를 중단하고 우선순위가 높은 프로세스를 실행

  • 데이터 일관성 문제가 발생할 수 있음
  • 데이터 일관성 문제가 발생하지 않도록 하는 것이 mutex, semaphore

SRTF (Shortest Remaining Time First)

  • 다음 cpu burst가 짧은 프로세스부터 실행
  • SJF와 동일하나 선점 방식이므로 실행중이던 프로세스의 cpu burst보다 더 짧은 프로세스가 ready queue에 들어오면 자리 빼앗음

Round Robin

  • 각 프로세스가 일정 시간동안 실행되고 끝나면 다음 프로세스로 넘어감
  • 모든 프로세스는 동일한 burst time을 사용

Multilevel Queue

  • 여러 종류의 ready queue를 사용하여 큐 사이의 우선순위 부여