ShovelingLife
A Game Programmer
ShovelingLife
전체 방문자
오늘
어제
  • 분류 전체보기 (1118)
    • 개인 프로젝트 (2)
      • Unity (2)
      • Unreal (0)
    • 그래픽스 (57)
      • 공통 (19)
      • 수학 물리 (22)
      • OpenGL & Vulkan (1)
      • DirectX (14)
    • 게임엔진 (191)
      • Unreal (69)
      • Unity (111)
      • Cocos2D-X (3)
      • 개인 플젝 (8)
    • 코딩테스트 (221)
      • 공통 (7)
      • 프로그래머스 (22)
      • 백준 (162)
      • LeetCode (19)
      • HackerRank (2)
      • 코딩테스트 알고리즘 (8)
    • CS (242)
      • 공통 (21)
      • 네트워크 (45)
      • OS & 하드웨어 (60)
      • 자료구조 & 알고리즘 (99)
      • 디자인패턴 (6)
      • UML (4)
      • 데이터베이스 (7)
    • 프로그래밍 언어 (377)
      • C++ (168)
      • C# (97)
      • Java (11)
      • Python (36)
      • SQL (44)
      • JavaScript (9)
      • React (7)
    • 그 외 (15)
      • Math (7)
      • 일상 (5)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • Source Code 좌측 상단에 복사 버튼 추가 완료
  • 언리얼 엔진 C++ 빌드시간 단축 꿀팁
  • 게임 업계 코딩테스트 관련
  • 1인칭 시점으로 써내려가는 글들

인기 글

태그

  • 티스토리챌린지
  • c#
  • 문자열
  • SQL
  • 클래스
  • C++
  • 배열
  • 포인터
  • 그래픽스
  • python
  • 언리얼
  • 유니티
  • C
  • 파이썬
  • Unity
  • 백준
  • 알고리즘
  • 오블완
  • string
  • 함수

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ShovelingLife

A Game Programmer

CS/OS & 하드웨어

CPU 스케줄링 /SJF SRT

2024. 10. 2. 19:03

프로세스 작업 수행을 위해 언제, 어느 프로세스에 CPU를 할당할 것인지 결정하는 작업

기법 종류

  • 스케줄러 동작 시점, Time Slice, 프로세스 생성/소멸 시, 프로세스 Block 상태 변경 시
  • 스케줄러가 운영체제에 많이 관여-선점, 적게 관여-비선점

SJF (Shortest Job First), SRT (Shortest Remaining Time)

SJF (Shortest Job First)

- 비선점 방식 (non - preemptive)

- 대기 작업 중 수행 시간이 짧게 판정된 작업 수행

- 짧은 작업 먼저 수행이 오버헤드 측면에서 유리

 

문제점)

- 작업 수행 시간을 사전에 정확히 판정 어려움

 

SRT (Shortest Remaining Time)

- 선점 방식 (preemptive)

- SJF 기법에 선점방식을 도입/변형 방식

- 실행 중 작업이라도 처리 시간이 더 짧은 작업이 생기면 선점

 

문제점)

- 긴 작업에 대한 실행 시간 추적 보유 (오버헤드)

- 긴 작업은 SJF 보다 대기 시간 오래 소요

SJF와 SRT의 평균 대기시간 및 평균 반환시간

SJF 기법 계산

SRT 기법 계산

  • 대기시간: 작업이 대기 큐에서 대기한 시간, 반환시간: 작업이 제출된(도착) 시간부터 완료까지 시간
  • 프로세스 자원 점유 변경 시 문맥 교환이 일어나므로 빈번한 자원 점유 변경 시 오버헤드 증가에 따른 성능 감소

예제)

5개의 작업에 대한 도착 시간과 CPU 사이클 시간이 아래표와 같다고 다음 물음에 답하시오

위에서 SRT, SJF 스케줄링 알고리즘을 적용할 경우 평균 대기시간과 반환시간을 구하시오.

 

A)

선점형 스케줄링은 하나의 프로세스가 cpu를 점유하고 있을 때 작업중인 프로세스를 중단시킬 수 있는 방식으로 srt가 여기에 속한다.

비선점형 스케줄링은 하나의 프로세스가 cpu를 점유하고 있을 때 작업중인 프로세스를 중단시킬 수 없는 방식으로 sjf가 여기에 속한다.

 

SRT 방식

남아있는 도착 시간이 가장 짧은 작업을 먼저 처리한다. 위의 그림을 보면 a가 먼저 시작이 되므로 1을 처리하고 a의 남은 시간은 5가 된다.

b가 들어오는데 a보다 b가 남은 시간이 짧으므로 a는 대기 상태가 되고 b가 처리된다. b가 1을 처리하고 나니 남은 시간은 2가 된다. 그리고 c가 들어오는데 b보다 c가 남은 시간이 적으므로 c가 처리되고 b는 대기상태가 된다. c를 처리하고 나면 d가 들어온다.

a, b, d의 남은 시간이 각각 5,2,4이므로 b를 먼저 처리하고 d를 처리하고 a를 처리한다.

 

평균 대기시간은

a,b,c는 도착즉시 시작했으므로 0, d는 도착 후 2초를 기다렸으므로 0+0+0+2=2/4=0.5다

 

평균 반환시간은

a는 0에서 시작해서 14에서 끝났으므로 14

b는 1에서 시작해서 5에서 끝났으므로 4

c는 2에서 시작해서 3에서 끝났으므로 1

d는 3에서 시작해서 9에서 끝났으므로 6

그래서 14+4+1+6=25/4=6.25

 

SJF 방식

마찬가지로 도착시간 가장 짧은 a를 먼저 실행하고 a가 끝나면 b,c,d 모두 기다리는데 이 중 c가 실행시간이 가장 짧으므로 실행한다. c가 끝나고 나면 b,d가 기다리는데 b가 짧으므로 b를 실행하고 d를 실행한다.

 

평균대기시간 a는 0, c는 2에 들어와서 6에 실행됨으로 4, b는 1에 들어와서 7에 실행됨으로 6, d는 3에 들어와 10에 실행됨으로 7

0+4+6+7=17/4=4.25

 

평균 반환시간은 

a는 0에서 시작해서 6에서 끝났으므로 6

b는 1에서 시작해서 10에서 끝났으므로 9

c는 2에서 시작해서 7에서 끝났으므로 5

d는 3에서 시작해서 14에서 끝났으므로 11

6+9+5+11=31/4=7.5다

 

https://blog.skby.net/cpu-%EC%8A%A4%EC%BC%80%EC%A4%84%EB%A7%81/

https://blog.naver.com/jjaiwook79/30069179687

저작자표시 (새창열림)

'CS > OS & 하드웨어' 카테고리의 다른 글

Atomic 연산, CAS (CompareAndSwap)에 대하여, ABA 문제  (0) 2025.02.16
동적테스트 화이트박스 테스트 검증기준 (WhiteBox Test Coverage)  (0) 2024.10.21
CPU 스케줄링 (Scheduling) 개념  (0) 2024.09.24
논리게이트의 종류(AND, OR, NOT, NAND, NOR, XOR, XNOR)  (0) 2024.09.24
결합도(Coupling)과 응집도(Cohesion) 순서  (0) 2024.09.22
    'CS/OS & 하드웨어' 카테고리의 다른 글
    • Atomic 연산, CAS (CompareAndSwap)에 대하여, ABA 문제
    • 동적테스트 화이트박스 테스트 검증기준 (WhiteBox Test Coverage)
    • CPU 스케줄링 (Scheduling) 개념
    • 논리게이트의 종류(AND, OR, NOT, NAND, NOR, XOR, XNOR)
    ShovelingLife
    ShovelingLife
    Main skill stack => Unity C# / Unreal C++ Studying Front / BackEnd, Java Python

    티스토리툴바