Search
πŸ’Ώ

04 : CPU Scheduling

course
last review
2023/04/10
mastery
intermediate
progress
not started
date
2023/03/14
4 more properties
Previous chapter

Main Question : How to develop Scheduling

μŠ€μΌ€μ€„λ§ 정책을 μƒκ°ν•˜κΈ° μœ„ν•œ 기본적인 ν”„λ ˆμž„μ›Œν¬λ₯Ό μ–΄λ–»κ²Œ λ§Œλ“€μ–΄μ•Ό ν•˜λŠ”κ°€? μ–΄λ–€ 것듀을 κ°€μ •ν•΄μ•Όν•˜λŠ”κ°€? μ–΄λ–€ κΈ°μ€€μœΌλ‘œ 정책을 ν‰κ°€ν•΄μ•Όν•˜λŠ”κ°€? μ΄ˆκΈ°μ—λŠ” μ–΄λ–€ 기법듀이 μ‚¬μš©λ˜μ—ˆλŠ”κ°€?

Workload Assumptions

ν”„λ‘œμ„ΈμŠ€κ°€ λ™μž‘ν•˜λŠ” 일련의 ν–‰μœ„λ₯Ό μ›Œν¬λ‘œλ“œ(workload)라 ν•œλ‹€.
β€’
μ μ ˆν•œ μ›Œν¬λ‘œλ“œμ˜ 선정은 μŠ€μΌ€μ€„λ§ μ •μ±… κ°œλ°œμ— 맀우 μ€‘μš”ν•œ 뢀뢄이닀.
μš°λ¦¬λŠ” μ‹œμŠ€ν…œμ—μ„œ 싀행쀑인 ν”„λ‘œμ„ΈμŠ€λ‚˜ μž‘μ—…(job)에 λŒ€ν•΄ λ‹€μŒκ³Ό 같은 가정을 ν•œλ‹€.
1.
λͺ¨λ“  μž‘μ—…μ€ 같은 μ‹œκ°„ λ™μ•ˆ μ‹€ν–‰λœλ‹€.
2.
λͺ¨λ“  μž‘μ—…μ€ λ™μ‹œμ— λ„μ°©ν•œλ‹€.
3.
μž‘μ—…μ€ 일단 μ‹œμž‘ν•˜λ©΄ μ΅œμ’…μ μœΌλ‘œ μ’…λ£Œλ  λ•ŒκΉŒμ§€ μ‹€ν–‰λœλ‹€.’
4.
λͺ¨λ“  μž‘μ—…μ€ CPU만 μ‚¬μš©ν•œλ‹€.(즉, μž…μΆœλ ₯은 μ—†λ‹€.)
5.
각 μž‘μ—…μ˜ μ‹€ν–‰ μ‹œκ°„μ€ 사전에 μ•Œλ €μ Έ μžˆλ‹€.

Scheduling Metrics

μ›Œν¬λ‘œλ“œμ— λŒ€ν•œ κ°€μ • 이외에 μŠ€μΌ€μ€„λ§ μ •μ±…μ˜ 평가λ₯Ό μœ„ν•΄ μŠ€μΌ€μ€„λ§ 평가 ν•­λͺ©(scheduling metric)을 κ²°μ •ν•΄μ•Όν•œλ‹€.

turnaround time : λ°˜ν™˜μ‹œκ°„

μž‘μ—…μ΄ μ§„ν–‰λœ μ‹œκ°„μ„ λ°˜ν™˜μ‹œκ°„(turnaround time)이라 ν•œλ‹€. μž‘μ—…μ΄ μ™„λ£Œλœ μ‹œκ°μ—μ„œ μž‘μ—…μ΄ λ„μ°©ν•œ μ‹œκ°μ„ λΊ€ μ‹œκ°„μ΄λ‹€.
Tturnaround=Tcompletionβˆ’TarrivalT_\text{turnaround}=T_\text{completion}-T_\text{arrival}
λͺ¨λ“  μž‘μ—…μ€ λ™μ‹œμ— λ„μ°©ν•œλ‹€κ³  κ°€μ •ν–ˆμœΌλ―€λ‘œ, Tarrival=0T_\text{arrival}=0이라고 생각할 수 μžˆμ„ 것이닀.

First In First Out(FIFO)

κ°€μž₯ 기본적인 μ•Œκ³ λ¦¬μ¦˜μ΄λ‹€. FIFOλŠ” μž₯점이 λ§Žλ‹€.
β€’
λ‹¨μˆœν•˜λ‹€.
β€’
κ΅¬ν˜„ν•˜κΈ° 쉽닀.
β€’
우리의 κ°€μ • ν•˜μ—μ„œλŠ” 맀우 잘 λ™μž‘ν•œλ‹€.

Examples

λ…Έλž€μƒ‰μ΄ A, νŒŒλž€μƒ‰μ΄ B, μ΄ˆλ‘μƒ‰μ΄ C μž‘μ—…μ΄λ‹€.
β€’
μž‘μ—…A,B,Cκ°€ λ™μ‹œμ— λ„μ°©ν–ˆλ‹€.
β—¦
즉, λͺ¨λ“  μž‘μ—…μ˜ TarrivalT_\text{arrival}κ°€ 0이닀.
β€’
μ΄λ•Œ κ°„λ°œμ˜ 차둜 ascendingν•˜κ²Œ λ„μ°©ν–ˆλ‹€κ³  νŒμ •μ΄ 떴을 경우 μœ„μ™€ 같이 μŠ€μΌ€μ₯΄λ§ 될 것이닀.
이 λ•Œ 평균 λ°˜ν™˜μ‹œκ°„(Average Turnaround Time)λŠ” λ‹€μŒκ³Ό 같이 ꡬ할 수 μžˆμ„ 것이닀.
TATT=βˆ‘nTcompletionβˆ’TarrivalnT_\text{ATT} = \cfrac{\sum^n T_\text{completion} - T_\text{arrival}}{n}
즉, (10+20+30)/3 = 20이닀.
ꡉμž₯히 합리적인 μ •μ±…κ°™μ§€λ§Œ, 이제 5개의 κ°€μ • 쀑 ν•˜λ‚˜μ˜ 가정을 ν•΄κΈˆν•  것이닀.
μ΄μ œλΆ€ν„° 각 μž‘μ—…μ˜ μž‘μ—…μ‹œκ°„μΈ λͺ¨λ‘ 같은 μ‹œκ°„ λ™μ•ˆ μ‹€ν–‰λ˜μ§€ μ•ŠλŠ”λ‹€.
μ΄λ•Œ λ‹€μŒκ³Ό 같은 문제점이 λ°œμƒν•  것이닀.
이제 A의 μž‘μ—…μ‹œκ°„μ΄ 100초둜 λŠ˜μ—ˆλ‹€. 이 μƒνƒœμ—μ„œ 평균 λ°˜ν™˜μ‹œκ°„μ€ 110초둜 λŠ˜μ–΄λ‚˜κ²Œ λœλ‹€.
이 ν˜„μƒμ„ convey effect(ν˜Έμ†‘ 효과)라고 λΆ€λ₯Έλ‹€.
νŽΈμ˜μ μ—μ„œ 음료수 ν•˜λ‚˜λ₯Ό μ‚¬λŠ”λ° μ•žμ‚¬λžŒμ΄ μΉ΄νŠΈμ— 가득 물건을 μ‹£κ³  κ³„μ‚°λŒ€λ₯Ό λ…μ°¨μ§€ν•˜λŠ” 것.

Shortest Job First(SFJ)

사싀 1번 가정이 박살이 났더라도 생각보닀 κ°„λ‹¨ν•˜κ²Œ ATTλ₯Ό 쀄일 수 μžˆλŠ” 방법이 μžˆλ‹€.
μž‘μ—…μ‹œκ°„μ΄ μž‘μ€ B와 Cλ₯Ό μš°μ„ μ μœΌλ‘œ μŠ€μΌ€μ₯΄λŸ¬μ— λ°°μΉ˜ν•˜λŠ” 것이닀.
μž‘μ—…μ‹œκ°„μ΄ κ°€μž₯ 적은 μŠ€μΌ€μ₯΄λΆ€ν„° λ¨Όμ € λ°°μΉ˜ν•˜λŠ” 것을 μ΅œλ‹¨ μž‘μ—… μš°μ„ (Shortest Job First)이라고 ν•œλ‹€.
이제 μ‹€ν–‰μ‹œκ°„μ΄ κ°€μž₯ κΈ΄ Aκ°€ κ³„μ‚°λŒ€λ₯Ό κ°€μž₯ λ‚˜μ€‘μ— μ°¨μ§€ν•˜κΈ° λ•Œλ¬Έμ— B와 Cκ°€ μ˜€λž«λ™μ•ˆ κΈ°λ‹€λ €μ•Ό ν•˜λŠ” 적폐상황이 μ˜€μ§€ μ•ŠλŠ”λ‹€! λ§Œμ„Έ!
μ΄λ•Œμ˜ 평균 λ°˜ν™˜μ‹œκ°„μ„ κ΅¬ν•˜λ©΄ λ‹€μŒκ³Ό κ°™λ‹€.
10+20+1203=50\cfrac{10+20+120}{3}=50
이제 λ¬Έμ œκ°€ 없어보인닀. 그럼 λ‹€μŒ 가정을 ν•΄κΈˆν•˜μž.
이제 λͺ¨λ“  μž‘μ—…μ€ λ™μ‹œμ— λ„μ°©ν•˜μ§€ μ•ŠμœΌλ©° μž„μ˜μ˜ μ‹œκ°„μ— 도착할 수 μžˆλ‹€.
λ°˜λŒ€λ‘œ μ΄μ•ΌκΈ°ν•œλ‹€λ©΄, SJFλŠ” λͺ¨λ“  μž‘μ—…μ΄ λ™μ‹œμ— 도착할 λ•Œ 졜적의 μ•Œκ³ λ¦¬μ¦˜μ΄ 될 수 μžˆλ‹€λŠ” 것이닀.
T=0인 μ‹œμ μ—μ„œ A만 λ„μ°©ν–ˆλ‹€κ³  κ°€μ •ν•˜μž. A 이외에 λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€κ°€ μ—†κΈ° λ•Œλ¬Έμ— Aλ₯Ό λ°°μ •ν•œλ‹€.
κ·ΈλŸ¬λ‚˜ T=10인 μ‹œμ μ—μ„œ B와 Cκ°€ λ“€μ–΄μ˜€κ²Œ λœλ‹€λ©΄ Aκ°€ λͺ¨λ‘ λλ‚ λ•ŒκΉŒμ§€ B와 CλŠ” ν•˜μ—Όμ—†μ΄ κΈ°λ‹€λ¦¬κ²Œ λœλ‹€. 즉, ATTλ₯Ό λ‹€μ‹œ κ΅¬ν•˜λ©΄ λ‹€μŒκ³Ό κ°™λ‹€.
100+(110βˆ’10)+(120βˆ’10)3=103.33...\cfrac{100+(110-10)+(120-10)}{3}=103.33...
이 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄μ„œλŠ” μ•„μ΄λŸ¬λ‹ˆν•˜κ²Œλ„ κ°€μ • 3을 μ™„ν™”ν•΄μ•Ό ν•œλ‹€.

Preemptive : 선점

β€’
선점 μŠ€μΌ€μ€„λŸ¬ : λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€λ₯Ό μ‹€ν–‰μ‹œν‚€κΈ° μœ„ν•΄ ν•„μš”ν•˜λ‹€λ©΄ ν˜„μž¬ ν”„λ‘œμ„ΈμŠ€μ˜ 싀행을 μ€‘λ‹¨ν•œλ‹€.
β€’
비선점 μŠ€μΌ€μ€„λŸ¬(ex : SJF) : 각 μž‘μ—…μ΄ μ’…λ£Œλ  λ•ŒκΉŒμ§€ 계속 μ‹€ν–‰λœλ‹€.

Shortest Time-to-Completion First(STCF)

이제 각 μž‘μ—…μ€ μž‘μ—…μ„ μ‹€ν–‰ν•˜λŠ” 도쀑에 쀑지될 수 μžˆλ‹€.
즉, Bλ‚˜ Cκ°€ λ„μ°©ν–ˆμ„ λ•Œ μŠ€μΌ€μ€„λŸ¬λŠ” ν•˜λ˜μΌμ„ μ€‘μ§€ν•˜κ³  λ‹€λ₯Έ μž‘μ—…μœΌλ‘œ μŠ€μœ„μΉ˜κ°€ κ°€λŠ₯ν•˜λ‹€.
SJFλŠ” λΉ„μ„ μ ν˜• μŠ€μΌ€μ€„λŸ¬μ΄κΈ° λ•Œλ¬Έμ— 싀행쀑인 μž‘μ—…μ„ μ€‘μ§€ν•˜κ³  λ‹€λ₯Έ μž‘μ—…μ„ μ‹€ν–‰ν•˜μ§€ λͺ»ν•œλ‹€.
ν˜„μž¬ 싀행쀑인 μž‘μ—…κ³Ό μƒˆλ‘œμš΄ μž‘μ—…μ˜ μž”μ—¬ μ‹€ν–‰μ‹œκ°„μ„ 비ꡐ해 μž”μ—¬μ‹œκ°„μ΄ κ°€μž₯ μž‘μ€ μž‘μ—…μ„ μŠ€μΌ€μ€„ν•˜λŠ” 방식을 μ΅œλ‹¨ μž”μ—¬μ‹œκ°„ μš°μ„ (Shortest Time-to-Completion First)라 ν•œλ‹€.
이제 T=10인 μ‹œμ μ—μ„œ B와 Cκ°€ 듀어왔을 λ•Œ μŠ€μΌ€μ₯΄λŸ¬λŠ” μž”μ—¬μ‹œκ°„μ΄ μž‘μ€ μˆœμ„œλŒ€λ‘œ 재배치λ₯Ό ν•˜κ²Œ λœλ‹€. μ΄λ•Œμ˜ ATTλŠ” λ‹€μŒκ³Ό κ°™λ‹€.
120+(20βˆ’10)+(30βˆ’10)3=50\cfrac{120+(20-10)+(30-10)}{3}=50

New Evaluation Model : Response Time

STCFλŠ” λ‹€μŒκ³Ό 같은 μ‘°κ±΄μ—μ„œ 맀우 ν›Œλ₯­ν•œ 정책이닀.
β€’
μž‘μ—…μ˜ 길이λ₯Ό 미리 μ•Œκ³  μžˆλ‹€.
β€’
μž‘μ—…μ΄ 였직 CPU만 μ‚¬μš©ν•œλ‹€.
β€’
평가 기쀀이 λ°˜ν™˜μ‹œκ°„μ΄λ‹€.
κ·ΈλŸ¬λ‚˜ μ‹œλΆ„ν•  컴퓨터가 λ“±μž₯ν•˜λ©΄μ„œ μ‚¬μš©μžκ°€ ν„°λ―Έλ„μ—μ„œ μ‹œμŠ€ν…œμ—κ²Œ μƒν˜Έμž‘μš©μ„ μ›ν™œνžˆ ν•˜κΈ° μœ„ν•œ μ„±λŠ₯을 μš”κ΅¬ν•˜κ²Œ λ˜μ—ˆλ‹€.
λ”°λΌμ„œ μ‘λ‹΅μ‹œκ°„(response time)μ΄λΌλŠ” μƒˆλ‘œμš΄ 평가 기쀀이 νƒœμ–΄λ‚˜κ²Œ λœλ‹€.
μž‘μ—…μ΄ λ„μ°©ν•˜λŠ” μ‹œμ λΆ€ν„° 처음으둜 μŠ€μΌ€μ€„ 될 λ•ŒκΉŒμ§€μ˜ μ‹œκ°„μ„ κΈ°μ€€μœΌλ‘œ μΈ‘μ •ν•œλ‹€.
Tresponse=Tfirstrunβˆ’TarrivalT_\text{response} = T_\text{firstrun}-T_\text{arrival}
A = 0, B = 0, C = 10이 될 것이닀.
STCFλŠ” 이런 κ΄€μ μ—μ„œ μ‘λ‹΅μ‹œκ°„μ΄ 짧닀고 ν•  수 μ—†λ‹€. λ”°λΌμ„œ μ‘λ‹΅μ‹œκ°„μ„ μ΅œμ†Œν™”ν•˜λŠ” μŠ€μΌ€μ€„λŸ¬λ₯Ό λ§Œλ“€μ–΄μ•Ό ν•œλ‹€.

Round-Robin(RR)

일정 μ‹œκ°„ μ‹€ν–‰ν•œ ν›„ μ‹€ν–‰ 큐의 λ‹€μŒ μž‘μ—…μœΌλ‘œ μ „ν™˜ν•˜λŠ” 방식을 λΌμš΄λ“œ 둜빈(RR)이라 ν•œλ‹€.
μ΄λ•Œ λ‹¨μœ„ μ‹œκ°„μ„ νƒ€μž„ 슬라이슀(time slice) λ˜λŠ” μŠ€μΌ€μ₯΄λ§ ν€€ν…€(scheduling quantum)이라 λΆ€λ₯Έλ‹€.
β€’
νƒ€μž„μŠ¬λΌμ΄μŠ€μ˜ κΈΈμ΄λŠ” 타이머 μΈν„°λŸ½νŠΈ 주기의 λ°°μˆ˜μ—¬μ•Ό ν•œλ‹€. 타이머가 nκΈΈμ΄λ§ˆλ‹€ μΈν„°λŸ½νŠΈλ₯Ό λ°œμƒμ‹œν‚¨λ‹€λ©΄ νƒ€μž„μŠ¬λΌμ΄μŠ€μ˜ κΈΈμ΄λŠ” kn이 λ˜μ–΄μ•Ό ν•œλ‹€.
νƒ€μž„μŠ¬λΌμ΄μŠ€μ˜ κΈΈμ΄λŠ” RRμ—κ²Œ 맀우 μ€‘μš”ν•˜λ‹€.
νƒ€μž„μŠ¬λΌμ΄μŠ€κ°€ 짧을 수둝, μ‘λ‹΅μ‹œκ°„μ˜ κΈ°μ€€μœΌλ‘œλŠ” RR의 μ„±λŠ₯이 쒋아진닀.
κ·ΈλŸ¬λ‚˜ νƒ€μž„μŠ¬λΌμ΄μŠ€κ°€ λ„ˆλ¬΄ 짧으면 Context Switching의 λΉ„μš©μ΄ 더 μ»€μ§€κ²Œ 됨을 μœ μ˜ν•˜λΌ.

Response time VS Turnaround Time

RR와 같은 κ³΅μ •ν•œ μ •μ±…
λͺ¨λ“  ν”„λ‘œμ„ΈμŠ€μ—κ²Œ CPU λΆ„λ°°ν•˜λŠ” μ •μ±…
은 λ°˜ν™˜μ‹œκ°„κ³Ό 같은 평가 κΈ°μ€€μ—μ„œλŠ” μ„±λŠ₯이 λ‚˜μ˜λ‹€.
λ°˜λŒ€λ‘œ 곡정성이 더 μ€‘μš”ν•˜λ‹€λ©΄ μ‘λ‹΅μ‹œκ°„μ€ μ€„μ–΄λ“€μ§€λ§Œ λ°˜ν™˜μ‹œκ°„μ€ λ‚˜λΉ μ§„λ‹€.

Incorporating I/O

이제 κ°€μ •4λ₯Ό ν•΄κΈˆν•  λ•Œκ°€ μ™”λ‹€.
λͺ¨λ“  ν”„λ‘œκ·Έλž¨μ€ μž…μΆœλ ₯ μž‘μ—…μ„ μˆ˜ν–‰ν•œλ‹€.
ν˜„μž¬ 싀행쀑인 ν”„λ‘œμ„ΈμŠ€κ°€ μž…μΆœλ ₯ μž‘μ—…μ„ μš”μ²­ν•œ 경우 μŠ€μΌ€μ€„λŸ¬λŠ” λ‹€μŒμ— μ–΄λ–€ μž‘μ—…μ„ 싀행할지 κ²°μ •ν•΄μ•Όν•œλ‹€.
ν˜„μž¬ 싀행쀑인 μž‘μ—…μ€ μž…μΆœλ ₯이 μ™„λ£Œλ  λ•ŒκΉŒμ§€ CPUλ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ΄λ‹€.
Next chapter