[운영체제] 프로세스 스케줄링

한결·2023년 10월 16일
0

CS

목록 보기
30/34

스케줄링 효율 분석 기준

Scheduling criteria
스케줄링 효율 분석 기준

  • CPU 이용률
  • 단위 시간당 처리하는 작업의 수
  • 반환시간 : 프로세스 작업 시작부터 작업 끝낼때까지 걸린 시간
  • 대기시간 : CPU를 점유하기 위해 ready queue에서 기다린 시간
  • 응답시간 : 입력에 대한 반응 시간

알고리즘

FCFS (First-Come, First-Served)

먼저 온 프로세스가 먼저 CPU 점유하는 방식

  • 매우 단순
  • Non-preemptive -> 프로세스가 끝나기 전에 다른 프로세스가 중간에 끼어들 수 없음
  • 따라서 앞 프로세스가 CPU를 오래동안 사용한다면 계속 기다려야함

SJF(Shortest-Job-First)

가장 짧게 수행되는 프로세스가 가장 먼저 수행

  • 평균 대기 시간 짧음
  • 비현실적 -> 프로세스의 CPU 점유시간을 알 수 없기 때문(프로세스 실행 중에는 많은 변수 존재)
  • Starvation 고아현상 발생할 수 있음

Priority

우선순위가 높은 프로세스가 먼저 선택되는 스케줄링

  • Starvation 발생
    -> aging으로 해결 일정 시간 기다리면 우선순위를 일정량 높여줌

RR(Round-Robin)

모든 프로세스가 일정 시간동안 CPU 점유

  • time quantum에 매우 의존적
  • 일반적으로 위에서 말했듯이 10 ~ 100msec 으로 정한다

멀티레벨 큐

Multilevel Queue를 살펴보기 전에 프로세스 그룹에 대해 살펴보자. 프로세스는 기준에 따라 여러 그룹으로 나눌 수 있다.

System processes: 운영체제 커널 수준의 프로세스
Interactive processes: 유저 수준의 대화형 프로세스
Interactive editing processes
Batch processes: 대화형 프로세스의 반대인 것으로 일정량을 한 번에 처리하는 프로세스(Ex, 컴파일러)
Student processes


위와 같이 여러 성격에 따라 프로세스 그룹을 나눌 수 있는데 이를 하나의 큐에 사용하는 것은 비효율적이라고 판단
그래서 각 그룹에 따라 큐를 두어 여러 개의 큐를 사용하는 것이 Muitilevel Queue 방식

  • 큐마다 우선순위 지정
  • 큐마다 CPU 시간을 다르게 줄수도 있음
  • 큐마다 다른 스케줄링 방식을 사용할 수도 있음

멀티레벨 피드백 큐

한 큐에서 대기 시간이 너무 길면 다른 큐로 프로세스 옮김, 이런식으로 대기 시간 조정
예를들어, starvation이 발생하면 우선순위가 높은 다른큐로 옮김

  • 이것도 큐마다 우선순위, 다른 알고리즘 사용가능

결론

  • 대부분의 상용 운영체제는 여러 개의 큐를 사용하고 각 큐마다 다른 스케줄링 방식을 사용
  • 프로세스의 성격에 맞는 스케줄링 방식을 사용하여 최대한 효율을 높일 수 있는 방법을 선택

0개의 댓글