CPU μ€μΌμ€λ§μ μ μκ²ΌμκΉ?
μ΄μ체μ μ λ°μ μ 곡λΆνλ©΄μ λ€μ€νλ‘κ·Έλλ°μ΄ λμ λ κ²μ μκ²λλ€.
λ€μ€ νλ‘κ·Έλλ°μ I/O μ²λ¦¬λ‘ μΈν CPU Idle Timeμ μ€μ¬μ CPU νμ©λ₯ μ ν₯μ μν€κΈ° μν΄μ λμ λμλλ° μ΄ λ, λ€μ€ μ²λ¦¬λ₯Ό νκΈ° μν κΈ°λ²μ΄ CPU μ€μΌμ€λ§μ΄λ€. μ€λ λκΉμ§ 곡λΆνλ©΄μ μκ² λ λ΄μ©μ CPUλ μ€λ λλ₯Ό μ€μΌμ€λ§ν΄μΌ νλ€λ κ²μ΄λ€. κ·Όλ° μ΄λ€ μ€λ λλ₯Ό μ νν κ²μΈμ§ 골λΌμΌνλ€.
μμ κ°μ μ μ± μ κ°μ§ μκ³ λ¦¬μ¦μ ν¬κ² CPU μ€μΌμ€λ§ μκ³ λ¦¬μ¦μ΄λΌκ³ νκ³ μλ°νκ²λ μ€λ λ μ€μΌμ€λ§μ΄λΌκ³ νλ€.
λ€μ€ νλ‘κ·Έλλ°μ 2κ°μ§ μ€μΌμ€λ§μ ν΅ν΄ λ°μνλ€.
1. μμ μ€μΌμ€λ§(job scheduling) - λμ€ν¬ μ₯μΉλ‘λΆν° λ©λͺ¨λ¦¬μ μ¬λ¦΄ μμ μ μ ννλ κ²μ΄λ€. νλ‘μΈμ€κ° μμνκ±°λ μ’ λ£ ν λ, μ¬μ©νλ κΈ°λ²μ΄λ€.
2. CPU μ€μΌμ€λ§(CPU Scheduling) - μμ μ€μΌμ€λ§μΌλ‘ λ©λͺ¨λ¦¬μ μ μ¬λ μμ μ€ CPUμ μ€νμν¬ μ€λ λλ₯Ό μ ννλ€.
νλ‘κ·Έλ¨μ μΌλ°μ μΌλ‘ λ κ°μ§μ νΉμ±μ κ°μ§λ€.
1. CPU burst - CPU μ§μ€ νλ‘μΈμ€μ νΉμ±μ΄λ€. νλ‘κ·Έλ¨ μ€ν μ€ CPU μ°μ°μ΄ μμ£Ό λ°μνλ μν©μ΄λ€.
2. I/O burst - I/O μ§μ€ νλ‘μΈμ€μ νΉμ±μΌλ‘ I/O μ₯μΉμ μ μΆλ ₯μ΄ μμ£Ό λ°μνλ μν©μ΄λ€.
μ΄λ κ² νλ‘κ·Έλ¨μ CPU-burstμ I/O burstκ° λ°λ³΅ν΄μ μνλλ νΉμ§μ΄ μμΌλ―λ‘ μ΄ νΉμ§μ μ΄μ©ν΄μ CPU μ€μΌμ€λ§μ κΈ°μ€μ λͺ ννκ² μ€μ ν΄μΌνλ€.
Time slice, Time slot, Time quantum
μλΆν λ€μ€νλ‘κ·Έλλ°μμλ CPUμκ² μ€μΌμ€ μκ°μ ν λΉνλ€.
컀λμ΄ μ€μΌμ€μ μ²λ¦¬νλ μ£ΌκΈ° μκ°μΌλ‘ νμ΄λ¨Έ μΈν°λ½νΈλ‘ νμ μ¬λΌμ΄μ€ λ¨μλ‘ μ€μΌμ€λ§νλ€.
νμ μ¬λΌμ΄μ€ λ΄μ μ€λ λκ° μ’ λ£λμ§ μλλ€λ©΄ κ°μ λ‘ μ€λ¨(preemption)νκ³ , λκΈ° νμ μ½μ νλ€.
CPU μ€μΌμ€λ§μ΄ μ€νλλ μν©
- μ€λ λκ° μμ€ν
νΈμΆ λ I/O μμ²μΌλ‘ λΈλ‘λκ³ μλ‘μ΄ μ€λ λλ₯Ό μ ννλ€.
- CPU νμ©λ₯ ν₯μμ΄ λͺ©μ
- μ€λ λκ° μλ°μ μΌλ‘ CPUλ₯Ό λ°νν λ, Yield() μμ€ν
νΈμΆλ‘ νμ¬ μ€λ λλ λ λ νμ μ½μ
λλ€.
- CPUμ μλ°μ μΈ μ보
- μ€λ λμ νμ μ¬λΌμ΄μ€κ° μ’
λ£λμ΄ Timer Interruptκ° λ°μνμ¬ μ€λ λκ° λ λ νμ μ½μ
λλ€.
- CPUμ κ· λ±ν λΆλ°°
- λ λμ μμμ μ€λ λκ° μμ²ν μ
μΆλ ₯ μμ
μ΄ μλ£λμ΄ μΈν°λ½νΈκ° λ°μνμ¬ μ€λ λλ₯Ό λ λ νμ μ½μ
νλ€.
- μ€λ λ μ€ν μ°μ μμλ₯Ό μ§ν¨λ€.
μ¦, μ€λ λ 컨ν μ€νΈ μ€μμΉμ΄ λ°μνλ μμ κ³Ό λμΌνλ€. μ°μ μμ κ°λ μ΄ μΆκ°λ§ λμλ€.
CPU μ€μΌμ€λ§μ μμ€ν νΈμΆμ΄ λ°μνλ©΄ μ€λ λ μ€μΌμ€λ§μΌλ‘ μ΄λ€ μ€λ λλ₯Ό μνν μ§ κ²°μ νκ³ λμ€ν¨μ²(Dispatcher)μ μν΄ ν΄λΉ μ€λ λμ TCB ꡬ쑰체μμ PC μ£Όμλ₯Ό CPUμ μ λ¬νλ©΄ μ€νμνκ° λλ€.
μ΄ λ, μ€μΌμ€λ§ μ½λλ 컀λ λ΄ λͺ©μ νλ‘κ·Έλ¨ ννλ‘ μ μ₯λμ΄ μ€νλλ€.
λμ€ν¨μ² μ½λλ 컨ν μ€νΈ μ€μμΉμ μ€μ§μ μΌλ‘ μ€ννλ 컀λ μ½λμ΄λ€.
CPU μ€μΌμ€λ§ νμ μΌλ‘λ μ μ μ€μΌμ€λ§κ³Ό λΉμ μ μ€μΌμ€λ§μ΄ μ‘΄μ¬νλ€.
μ μ μ€μΌμ€λ§(Preemptive Scheduling)κ³Ό λΉμ μ μ€μΌμ€λ§(Non-Preemptive Scheduling)
- λΉμ μ μ€μΌμ€λ§
- νμ¬ μ€νμ€μΈ μ€λ λλ₯Ό κ°μ λ‘ μ€λ¨μν€μ§ μλλ€.
- μ¦, I/Oκ° λ°μνκ±°λ Yield, μ’ λ£μ κ°μ΄ CPUκ° μ΄ λλ§ μ€μΌμ€λ§μ νλ€λ μλ―Έμ΄λ€.
- μ μ μ€μΌμ€λ§ (μ€λ λ μ λ°©μ)
- νμ¬ μ€νμ€μΈ μ€λ λλ₯Ό κ°μ μ€λ¨ μν€κ³ λ€λ₯Έ μ€λ λλ₯Ό μ ννλ€.
- νμ΄λ¨Έ μΈν°λ½νΈλ μμ€ν νΈμΆ λ±μΌλ‘ μ€λ λμ λν μν μ΄ λλ¬μ λ μ€μΌμ€λ§ νλ€.
μ€μΌμ€λ§μ νλ©΄μ λ¬Έμ κ° λ°μνκ² λλλ° λνμ μΈ μμκ° κΈ°μμ΄λ€.
κΈ°μ(starvation) νμμ μ€λ λκ° λ λ νμμ κ³μ 머무λ μνμΈλ° λΉμ μ μ€μΌμ€λ§μ΄λ μ μ μ€μΌμ€λ§μ΄λ λ λ€ λ°μν μ μλ€. λνμ μΈ μμλ‘ μ°μ μμ μμ€ν μμ λ λμ μμμ μ€λ λκ° κ³μν΄μ λ λνμ μΆκ°λλ κ²½μ°λ€.
μμ΄μ§(aging) κΈ°λ²μ κΈ°μ νμμ ν΄κ²°μ± μΌλ‘ λλλ° μ€λ λκ° λκΈ° νμμ λκΈ°ν μκ°μ λΉλ‘ν΄ μ€μΌμ€λ§ μ°μ μμλ₯Ό λμ΄λ κΈ°λ²μ μ¬μ©ν κ²μ΄λ€. μμ΄μ§ κΈ°λ²λ μ²λ¦¬νλλ° μ€λ 걸릴 μλ μμ§λ§ κ°μ₯ λμ μμλ‘ λλ¬νλ κ²μ΄ 보μ₯λλ€.
CPU μ€μΌμ€λ§μ κΈ°μ€(criteria)
- CPU νμ©λ₯ (CPU utilization), CPU μ¬μ© μκ° λΉμ¨
- μ²λ¦¬μ¨ (throughput), μκ° λΉ μ²λ¦¬νλ νλ‘μΈμ€μ κ°μ
- 곡νμ± (fariness), CPUλ₯Ό μ€λ λλ€μκ² κ³΅ννκ² λ°°λΆλμ΄μΌ νλ€.
κ·Έλ μ§ μμΌλ©΄ κΈ°μ μ€λ λκ° μ겨μ 무νμ λκΈ°νλ νμμ΄ λ°μνλ€. - μλ΅μκ° (response time), λͺ λ Ήμ μλ΅νλλ° κ±Έλ¦¬λ μκ°μ΄ μ§§μμλ‘ μ’λ€.
- λκΈ°μκ° (waiting time), μ€λ λκ° λ λ νμμ 머무λ₯΄λ μκ°
- μμμκ° (turnaround time), μ€λ λκ° μμ€ν μμ μλ£λ λκΉμ§ κ±Έλ¦°μκ°
- μμ€ν
μ μ±
(policy enforcement), νΉλ³ν λͺ©μ
μ€μκ° μμ€ν μ νΉμ μκ° μ€μ λ± - μμ νμ©λ₯ (resource efficiency)
'CS > μ΄μ체μ ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
16. μ€λ λ λκΈ°ν (Thread Synchronization) (0) | 2024.06.15 |
---|---|
15. CPU Scheduling Algorithm (1) | 2024.04.22 |
13. λ©ν°μ€λ λ ꡬν (0) | 2024.04.22 |
12. 컀λ λ 벨 μ€λ λμ μ¬μ©μ λ 벨 μ€λ λ (1) | 2024.04.22 |
11. μ€λ λ μ£Όμ 곡κ°κ³Ό 컨ν μ€νΈ (0) | 2024.04.22 |