[μ΄μ체μ ] CPU μ€μΌμ€λ§ μκ³ λ¦¬μ¦
CPU μ€μΌμ€λ¬λ CPU μ€μΌμ€λ§ μκ³ λ¦¬μ¦μ λ°λΌ νλ‘μΈμ€μμ ν΄μΌ νλ μΌμ μ€λ λ λ¨μλ‘ CPUμ ν λΉνλ€.
νλ‘κ·Έλ¨μ΄ μ€νλ λ CPU μ€μΌμ€λ§ μκ³ λ¦¬μ¦μ΄ μ΄λ€ νλ‘κ·Έλ¨μ CPU μμ κΆμ μ€ κ²μΈμ§ κ²°μ νλ€.
μ΄ μκ³ λ¦¬μ¦μ CPU μ΄μ©λ₯ μ λκ², μ£Όμ΄μ§ μκ°μ λ§μ μΌμ νκ², μ€λΉ νμ μλ νλ‘μΈμ€λ μ κ², μλ΅ μκ°μ μ§§κ² μ€μ νλ κ²μ λͺ©νλ‘ νλ€.
CPU μ€μΌμ€λ§ μκ³ λ¦¬μ¦ μ’ λ₯λ λ€μκ³Ό κ°λ€.
- λΉμ μ ν
- FCFS(First come, First Served)
- SJF(Shortest Job First)
- μ°μ μμ
- μ μ ν
- λΌμ΄λ λ‘λΉ(RR, Round-Robin)
- SRF(Shortest Remaining Time First)
- λ€λ¨κ³ ν
λΉμ μ ν λ°©μ(non-preemptive)
λΉμ μ ν λ°©μμ νλ‘μΈμ€κ° μ€μ€λ‘ CPU μμ κΆμ ν¬κΈ°νλ λ°©μμ΄λ©°, κ°μ λ‘ νλ‘μΈμ€λ₯Ό μ€μ§νμ§ μλλ€.
λ°λΌμ 컨ν μ€νΈ μ€μμΉμΌλ‘ μΈν λΆνκ° μ λ€.
FCFS
κ°μ₯ λ¨Όμ μ¨ κ²μ κ°μ₯ λ¨Όμ μ²λ¦¬νλ μκ³ λ¦¬μ¦μ΄λ€.
λ¨Όμ μ¨ κΈΈκ² μνλλ νλ‘μΈμ€ λλ¬Έμ 'μ€λΉ νμμ μ€λκΈ°λ€λ¦¬λ νμ(convoy effect)'μ΄ λ°μνλ λ¨μ μ΄ μλ€.
SJF
SJFλ μ€ν μκ°μ΄ κ°μ₯ μ§§μ νλ‘μΈμ€λ₯Ό κ°μ₯ λ¨Όμ μ€ννλ μκ³ λ¦¬μ¦μ΄λ€.
κΈ΄ μ€ν μκ°μ κ°μ§ νλ‘μΈμ€κ° μ€νλμ§ μλ κΈ°μ νμ(starvation)μ΄ μΌμ΄λλ©° νκ· λκΈ° μκ°μ΄ κ°μ₯ μ§§λ€.
νμ§λ§ μ€μ λ‘λ μ€ν μκ°μ μ μ μκΈ° λλ¬Έμ κ³Όκ±°μ μ€νλλ μκ°μ ν λλ‘ μΆμΈ‘ν΄μ μ¬μ©νλ€.
μ°μ μμ
κΈ°μ‘΄ SJF μ€μΌμ€λ§μ κ²½μ° κΈ΄ μκ°μ κ°μ§ νλ‘μΈμ€κ° μ€νλμ§ μλ νμμ΄ μμλ€.
μ΄λ μ€λλ μμ μΌμλ‘ 'μ°μ μμλ₯Ό λμ΄λ λ°©λ²(aging)'μ ν΅ν΄ λ¨μ μ 보μν μκ³ λ¦¬μ¦μ΄λ€.
μ μ ν λ°©μ(preemptive)
μ μ ν λ°©μμ νλ μ΄μ체μ κ° μ°μ΄λ λ°©μμΌλ‘, μ§κΈ μ¬μ©νκ³ μλ νλ‘μΈμ€μ μκ³ λ¦¬μ¦μ μν΄ μ€λ¨μμΌ λ²λ¦¬κ³ κ°μ λ‘ λ€λ₯Έ νλ‘μΈμ€μ CPU μμ κΆμ ν λΉνλ λ°©μμ λ§νλ€.
λΌμ΄λ λ‘λΉ
λΌμ΄λ λ‘λΉμ νλ μ»΄ν¨ν°κ° μ°λ μ€μΌμ€λ§μΈ μ°μ μμ μ€μΌμ€λ§μ μΌμ’ μΌλ‘ κ° νλ‘μΈμ€λ λμΌν ν λΉ μκ°μ μ£Όκ³ κ·Έ μκ° μμ λλμ§ μμΌλ©΄ λ€μ μ€λΉ νμ λ€λ‘ κ°λ μκ³ λ¦¬μ¦μ΄λ€.
μλ₯Ό λ€μ΄, 10λ§νΌμ ν λΉ μκ°μ΄ λΆμ¬λμκ³ , 3κ°μ νλ‘μΈμ€κ° μ΄μλλ€κ³ νλ©΄ 2*10λ§νΌμ μκ°μ΄ μ§λλ©΄ μμ μ μ°¨λ‘κ° λμμ€κ² λλ€. μ¦, ν λΉ μκ°μ΄ qμ΄κ³ , νλ‘μΈμ€ κ°μκ° Nκ° μΌ λ, (N-1)*q μκ°λ§νΌ μ§λλ©΄ λ€μ μμ μ μ°¨λ‘λ‘ λμμ€λ κ²μ΄λ€.
μ μμμ κ²½μ°, p1μ΄ λ€μ΄μ€κ³ 10msλμ μ§νλλ€. κ·Έλ¦¬κ³ 10msκ° λλκ²λλ©΄ p1μ μΈν°λ½νΈμ κ±Έλ¦¬κ² λμ΄ ready qeueu 맨 λ€λ‘ κ°κ³ p2μκ² CPU μμμ΄ ν λΉλλ€. p2λ 10ms λμ μ€νλμ΄ 20msμ CPUμμμ λ°ννκ³ ready queueμ λ€μ΄κ°λ€. p3κ° CPU μμμ μ΄μ΄λ°μ§λ§ P3λ μμ μκ°μ΄ 9msμ΄κΈ° λλ¬Έμ νμ μ¬λΌμ΄μ€λ³΄λ€ μκ°μ΄ μ λ€. λλ¬Έμ p3λ 10msμΈ νμμ¬λΌμ΄μ€ λμ μ€νμ΄ μλ£λκ³ μ’ λ£λλ€. p1μ 20ms, p2λ 8msκ° λ¨μ μμ μμ p1μ μ°¨λ‘κ° λμ΄ 10msλμ μ€νλλ€. μ΄ν p2κ° μ€νλκ³ 10msλ³΄λ€ μ κ² μ€νλκΈ° λλ¬Έμ 8msλ§ μ€νλλ€. λλ¬Έμ 39~47ms κΉμ§λ§ μκ°μ μ¬μ©νκ³ p1μκ² μ°¨λ‘λ₯Ό λκΈ΄λ€. p1μ 10msλ§νΌ λ¨μμΌλ―λ‘ νμ μ¬λΌμ΄μ€ 10msκ° λλλ©΄ μ’ λ£λλ€. μ΄νμ ready queueμλ μ무κ²λ μκ² λλ€.
ν λΉ μκ°μ΄ λ무 ν¬λ©΄ λͺ¨λ νλ‘μΈμ€κ° ν λΉ μκ° μμ λͺ¨λ μνν μ μκ² λλ©΄μ κ°μ₯ λ¨Όμ λ€μ΄μ¨ μμ μ κ°μ₯ λ¨Όμ μ€ννλ FCFS μκ³ λ¦¬μ¦μ΄ λκ³ , λ무 μμΌλ©΄ 컨ν μ€νΈ μ€μμΉμ΄ λ무 μ¦μμ Έμ μ€λ²ν€λκ° λ°μνλ€.
μΌλ°μ μΌλ‘ μ 체 μμ μκ°μ κΈΈμ΄μ§μ§λ§ νκ· μλ΅ μκ°μ μ§§μμ§λ€λ νΉμ§μ΄ μλ€.
μ°Έκ³ λ‘, μ΄ μκ³ λ¦¬μ¦μ λ‘λλ°Έλ°μμμ νΈλν½ λΆμ° μκ³ λ¦¬μ¦μΌλ‘ μ°μΈλ€.
SRF(Shortest Remaining Time First)
SJFλ μ€κ°μ μ€ν μκ°μ΄ λ μ§§μ μμ
μ΄ λ€μ΄μ€λλΌλ κΈ°μ‘΄μ μννλ μμ
μ μλ£νκ³ κ·Έ λ€μ μ§§μ μμ
μ μ΄μ΄κ°λλ°, SRFλ μ€κ°μ λ μ§§μ μμ
μ΄ λ€μ΄μ€λ©΄ μννλ νλ‘μΈμ€λ₯Ό μ€μ§νκ³ ν΄λΉ νλ‘μΈμ€λ₯Ό μννλ μκ³ λ¦¬μ¦μ΄λ€.
- p1μ μ무 νλ‘μΈμ€κ° μκΈ° λλ¬Έμ λ°λ‘ μ€νλλ€.
- μκ°μ΄ νλ₯΄κ³ μ€ν μκ°μ΄ 1μΌλ p2κ° λ€μ΄μ€λλ°, p2μ μ€ν μκ°(28)λ³΄λ€ p1μ μ€ν μκ°(10-1=9)κ° λ μ§§κΈ° λλ¬Έμ κ³μ μ§ννλ€.
- λ μκ°μ΄ νλ₯΄κ³ μ€ν μκ° 2μΌ λ p3κ° λ€μ΄μ€λλ° p1μ μ€ν μκ°(10-2=8)λ³΄λ€ p3μ μ€ν μκ°(6)μ΄ λ μ§§κΈ° λλ¬Έμ p1μ μ€νμ μ μ μ€λ¨νκ³ p3λ₯Ό μ€νμν¨λ€.
- μκ°μ΄ νλ₯΄κ³ μ€ν μκ° 3μΌλ p4κ° λ€μ΄μ€λλ° p3μ μ€ν μκ°(6-1=5)λ³΄λ€ p4μ μ€ν μκ°(4)κ° λ μ§§κΈ° λλ¬Έμ p3λ₯Ό μ μ μ€λ¨μν€κ³ p4λ₯Ό μ€ν μν¨λ€.
- μκ°μ΄ νλ₯΄κ³ μ€ν μκ°μ΄ 4μΌ λ p5κ° λ€μ΄μ€λλ°, p4μ μ€ν μκ°(4-1=3) λ³΄λ€ p5μ μ€ν μκ°(14)μ΄ κΈΈκΈ° λλ¬Έμ p4λ₯Ό κ·Έλλ‘ μ μ§μν¨λ€.
- μκ°μ΄ νλ₯΄κ³ μ€ν μκ°μ΄ 7μΌ λ p4μ μ€νμ λλ΄κ³ κ·Έ λ€μμΌλ‘ μ§§μ p3λ₯Ό μ€νμν¨λ€.
- μ΄μ κ°μ κ³Όμ μ λ°λ³΅νλ€.
λ€λ¨κ³ ν
λ€λ¨κ³ νλ μ°μ μμμ λ°λ₯Έ μ€λΉ νλ₯Ό μ¬λ¬ κ° μ¬μ©νκ³ , νλ§λ€ λΌμ΄λ λ‘λΉμ΄λ FCFS λ± λ€λ₯Έ μ€μΌμ€λ§ μκ³ λ¦¬μ¦μ μ μ©ν κ²μ λ§νλ€.
ν κ°μ νλ‘μΈμ€ μ΄λμ΄ μλλ―λ‘ μ€μΌμ€λ§ λΆλ΄μ΄ μ μ§λ§ μ μ°μ±μ΄ λ¨μ΄μ§λ νΉμ§μ΄ μλ€.