CPU 스케줄링

Rio·2022년 2월 28일
0

OS_운영체제

목록 보기
1/1

🖌 CPU 스케줄링

  • 메모리에 올라온 프로세스들 중 어떤 프로세스를 먼저 처리할지 순서를 정하는 것
  • Ready Queue에 있는 프로세스들 중에 누구에게 CPU를 할당해 줄 것인지 결정하는 것

Why?

  • CPU는 한번에 하나의 프로세스만 실행 가능.
  • 특정 프로세스가 I/O 요청에 의해 대기해야할 경우 CPU 대기 상태.
  • 다중 프로그래밍에서는 이러한 시간을 생산적으로 활용하고자 CPU를 그 프로세스로부터 회수해 다른 프로세스에 할당해 CPU 이용률 극대화.

📌 선점/비선점 스케줄링

CPU 스케줄러 동작 상황

1.한 프로세스가 실행상태에서 대기 상태로 전환될 때
ex) I/O 요청에 의한 대기
2.프로세스가 실행 상태에서 준비 완료 상태로 전환될 때
ex) 할당된 시간이 다 끝났을 때 (타이머 인터럽트가 발생했을 때)
3.프로세스가 대기 상태에서 준비완료 상태로 전환될 때
ex) I/O 종료 시
4.프로세스가 종료될 때

선점 스케줄링(Preemptive)

  • 2, 3번 상황과 같이 강제적으로 CPU를 빼앗기는 경우.
  • Windows, macOS, Linux를 포함한 거의 모든 최신 운영체제들은 선점 스케줄링 알고리즘을 사용.

비선점 (Nonpreemptive)

  • 1, 4번 상황과 같이 프로세스가 자발적으로 CPU를 반납하는 경우.
  • CPU가 한 프로세스에게 할당되면 프로세스가 종료되든지, 또는 대기 상태로 전환해 CPU를 방출할 때까지 CPU를 점유

⭐️ 스케줄링 기준

1.CPU 이용률 (Utilization)

  • 전체 시스템 시간 중 CPU가 작업을 처리하는 시간의 비율
  • CPU 이용률이 높을수록 CPU가 바쁘게 일을 하고 있다는 것

2.처리량 (Throughput)

  • 단위 시간당 완료된 프로세스의 개수
  • 긴 프로세스인 경우 이 비율을 몇 초 동안 한 프로세스가 될 수도 있고, 짧은 프로세스인 경우 처리량은 초당 수십 개의 프로세스가 될 수도 있음

3.총처리 시간 (Turnaround time)

  • 프로세스가 시작해서 끝날 때까지 걸리는 시간
  • 준비큐에서 대기한 시간, CPU에서 실행하는 시간, I/O 시간을 합한 시간

4.대기 시간 (Waiting time)

  • 프로세스가 준비 큐에서 대기하면서 보낸 시간의 합

5.응답 시간 (Response time)

  • 하나의 요구를 제출한 후 첫 번째 응답이 나올 때까지의 시간
  • 이 기준은 응답이 시작되는 데까지 걸리는 시간

How?

CPU 이용률과 처리량을 최대화하고 총처리 시간/대기 시간/응답 시간을 최소화 하는 것이 Best!!

👾 스케줄링 알고리즘

1.선입 선처리 (FCFS) / 비선점

  • CPU를 요청하는 순서대로 할당 받는것
  • 긴 프로세스가 CPU를 양도하길 모든 프로세스가 대기하게 되는 문제

2.SJF (Shortest Job First) / 비선점

  • 가장 적은 CPU 사용시간을 가진 프로세스부터 우선 할당하는 방식
  • 최소의 평균대기 시간을 가짐(이론상)
  • 하지만 프로세스가 얼마만큼의 CPU 이용 길이를 가지는지 미리 알수가 없어 구현 물가능

3.RR (Round Robin) / 선점

  • 시간 할당량(time quantum)을 정의하여 선점형으로 동작
  • 프로세스의 CPU 이용시간이 할당된 시간보다 크면 프로세스는 CPU를 반납
  • 시간 할당량을 작게 주면 Context Switching이 빈번하게 발생
  • 시간 할당량을 너무 크게 되면 FCFS와 같음

4.우선순위 스케줄링 (Priority Scheduling) / 선점 & 비선점

  • 운영체제 혹은 사용자에 의해 프로세스에 우선순위를 부여
  • CPU는 가장 높은 우선순위를 가진 프로세스에 할당
  • 무한 봉쇄 or 기아 상태 문제 발생
  • 높은 우선순위 프로세스가 계속 들어오면 낮은 우선순위 프로세스의 순서가 오지않아 무하 대기 발생
  • Aging 기법을 활용해 우선순위를 높여줌

5.다단계 큐 (Multilevel Queue)

  • 다수의 준비 큐를 가지는 스케줄링 기법
  • 각각의 큐는 자신만의 스케줄링 알고리즘 존재하고, 큐들간의 우선순위가 존재

[참고]
https://velog.io/@mu1616/CPU-%EC%8A%A4%EC%BC%80%EC%A4%84%EB%A7%81

profile
우당탕탕 개발 기록지

0개의 댓글