[운영체제] Ch05. Process Scheduling(1)

Jfe·2021년 5월 31일
0

운영체제(OS)

목록 보기
6/6
post-thumbnail

❓Process Scheduling??

: 프로세스 사이에서 CPU 사용을 switching 해주면서 CPU가 쉬는 구간이 없도록 만들어준다.

❗️ Process Scheduling이 필요한 이유
1. CPU Utilization 최대화
2. time sharing을 하면서 concurrent하게 실행시키기 위해
3. proccess 사이에 형평성있게 분배하기 위해


📆 CPU Scheduler

: CPU가 할 일을 끝내면 OS가 ready queue에서 다음 프로세스를 선택
(short-term scheduler라고도 불림)

  • scheduling decision이 필요한 경우

    1. I/O request나 wait() 호출로 인해
      프로세스가 running state -> waiting state 로 바뀔 때
    2. timer interrupt로 인해
      프로세스가 running state -> ready state 로 바뀔 때
    3. I/O가 끝난 후
      프로세스가 waiting state -> ready state 로 바뀔 때
      (scheduler가 작동안할 수도 있음)
    4. 프로세스가 종료되었을 때

    => 1, 4번은 반드시 scheduling decision이 필요함

  • Preemptive / Nonpreemptive

    • Preemptive scheduler
      : 강제로 잘 돌고있는 프로세스의 cpu를 뺏음
      (프로세스를 다시 실행중인 상태로 reschedule 가능)
      • 문제점
      1. 공유하고 있는 데이터를 수정중에 preemption이 일어나면 race condition이 발생할 수 있음!
      2. system call 실행중에 preemption이 일어나면 kernel data structure가 깨져서 kernel이 멈출 수 있음!
        => system call 실행 중에는 preemption이 일어나지 않도록 해서 해결할 수 있음 (But, 실시간 컴퓨팅이 필요한 경우에는 매우 비효율적임)
    • Nonpreemptive scheduler
      : 강제로 cpu를 뺏지 않고 자발적으로 종료될때까지 기다림
      (반드시 scheduling이 필요한 경우에만 함 / 위에서 1, 4번의 경우)

🚦 Dispatcher

: 다른 프로세스가 돌 수 있도록 선택된 프로세스에 CPU를 할당해주는 component

  • Dispatch latency (dispatcher가 동작하는 시간)
    : 한 프로세스를 멈추고 다음 프로세스가 running 하는데 까지 걸리는 시간

🎯 Scheduling Criteria

  • CPU utilization 최대화

    : 현실적으로는 30 ~ 40%가 적당함
  • Throughput 최대화

    : 단위 시간당 제일 많은 일을 처리할 수 있는 프로세스를 선택
  • Turnaround time 최소화

    : 일이 시작된 순간 ~ 종료되는 순간의 시간을 최소화
  • Waiting time 최소화

    : ready queue에서 기다리는 시간 최소화
  • Response time 최소화

    : 일이 시작된 순간 ~ 처음 반응이 나오는 순간의 시간을 최소화
  • Fairness 최대화

    : 프로세스들이 사용한 CPU 시간들의 총합이 공평하게 되도록

=> scheduler를 만들 때, 여러 가지 기준을 복합적으로 어떤 걸 최적화하는 방향으로 쓸지 결정해야 함
(평균을 기준으로 할 수도 있고, maximum값을 최소화/minimum 값을 최대화 하는 방법을 사용할 수도 있음)
(=> interactive system에서는 평균보다는 response time의 분산 정도를 최소화하는 방법을 주로 사용함)


0개의 댓글