feldblume5263 / TIL

Today I Learned
0 stars 0 forks source link

(220826)[개인 공부] 운영체제 - CPU Schduling1 #14

Closed feldblume5263 closed 2 years ago

feldblume5263 commented 2 years ago

반효경 교수님 운영체제 약 1시간 강의이기 때문에 1시간 30분 이상 소요 예상

feldblume5263 commented 2 years ago

성능 척도

시스템 입장에서의 성능 척도

CPU utilization(이용률)

Throughput (처리량)

프로세스 입장에서의 성능 척도 (가능하면 내가 빨리 CPU를 쓰고 I/O를 하러 나가고 싶다.)

Turnaround time (소요 시간, 반환 시간)

Waiting time (대기 시간)

Response time (응답 시간)

중국집을 운영하는 입장에서 주방장을 고용 - 주방장 일을 많이 시키는게 좋다.

이용률 - 전체 시간 중 주방장이 일하는 시간의 비율

처리량 - 중국집에서 단위 시간당 몇명의 손님을 받았는가

고객입장에서

소요시간 - 고객이 주문해서 식사를 다 하고 나갈 때 까지 걸리는 시간 (코스요리를 시키면 요리를 먹고 다른 요리를 기다리고 등등 기다리는 시간 모두 시간 포함)

대기시간 - 밥 먹는 시간 말고 기다리는 시간을 합친 시간

응답시간 - 첫번째 음식이 나올 때까지 기다리는 시간

FCFS (First-Come First-Served)

먼저 온 순서대로 처리하는 방법

비선점형 스케쥴링 - 일단 CPU를 얻으면 끝날 때까지 내놓지 않는다.

-> 효율적이지 않음 CPU를 오래 쓰는 프로그램이 있으면, CPU를 짧게 쓰는 프로그램이 있어도 기다려야 한다.

Process Burst Time
P1 24
P2 3
P3 3

image

image

Convoy Effect = 긴 프로세스가 하나 도착해서 짧은 프로세스가 지나치게 오래 기다려야 하는 현상

SJF (Shortest-Job-First)

프로세스의 CPU burst time이 가장 짧은 프로세스를 먼저 스케쥴

Average waiting time이 최소화할 수 있는 알고리즘

두가지 방식이 있다.

  1. Nonpreemptive

    • 일단 CPU를 잡으면 이번 CPU burst가 완료될 때 까지 CPU를 선점당하지 않는다.
  2. Preemptive

    • 현재 수행중인 프로세스의 남은 burst time보다 더 짧은 CPU burst time을 가지는 새로운 프로세스가 도착하면 CPU를 빼앗김

    • 이 방법을 Shortest-Remaining-Time-First (SRTF)라고 한다.

Process Arrival Time Burst Time
P1 0.0 7
P2 2.0 4
P3 4.0 1
P4 5.0 4

SJFimage

SRTF

image

이 알고리즘에는 두가지 문제점이 있다.

  1. Starvation

    • CPU 사용시간이 긴 프로세스는 영원히 서비스를 못받을 수도 있다.
  2. CPU 사용시간을 미리 알 수가 없다.

    • CPU를 쓰러 들어와서 얼마나 쓰고 나갈지 미리 알 수가 없다. 실제 시스템에서 SJF를 사용하기 힘들다. (CPU 사용시간을 미리 알 수는 없지만 추정은 가능하다.)

    • Exponential average (추정하는 방법)

    • n+1사용 예측 시간 = a n사용 실제 시간 + (1-a) n사용 예측 시간

    • 0 <= a <= 1

    • 점화식을 쭉 풀어나가면...

    • 최근 CPU 사용량을 크게 반영하고 과거를 적게 반영하는 식으로 예측하는 것이다.

Priority Scheduling (우선 순위 스케줄링)

우선 순위가 제일 높은 프로세스에게 CPU를 할당

우선 순위가 낮은 프로세스가 지나치게 오래 기다려서 영원히 CPU를 얻을 수 없는 상황이 있다.

이를 해결하기 위해 Aging을 도입 - 오래 기다리면 우선순위를 높여준다

Round Robin (RR)

현대 CPU 사용 방식은 Round Robin에 기반하고 있다.

Primprive에 기반

동일한 할당 시간을 세팅해서 CPU를 준다. 할당 시간이 끝나면 뒤로 가서 줄을 선다.

q large = FCFS(비효율)

q short = context switch (overhead)가 빈번히 발생

적당한 시간을 찾는게 중요

SJF보다 waiting, turnaround time은 길어지지만, response time은 짧아진다.