λ©ν° μ€λ λ ꡬν ?
κ°λ°μλ‘ κ±°λλλ €λ©΄ κΌ νμν κ°λ μ΄λ€. μ°λ¦¬λ μ½λλ₯Ό μμ±νλ©΄μ λ€μν μ¬μ©μμ λν΄ μμ μ ν΄μΌν κ²μ΄λ€.
κ·Έ λ, μ€λ λλ₯Ό μ¬μ©νλ€λ©΄ μ°λ¦¬κ° λ§λ μ€λ λκ° μμ€ν μμ μ€μΌμ€ λ μ μλλ‘ νλ λ°©λ²μ΄λ€.
ν¬κ² N:1 λ§€ν, 1:1 λ§€ν, N:M λ§€νμ΄ μλ€. X : Y κΌ΄λ‘, Xκ°μ μ¬μ©μ λ 벨 μ€λ λλ₯Ό Yκ°μ 컀λ λ 벨 μ€λ λλ‘ λ§€ννλ€λ λ΄μ©μΈλ° μ΄ μΈμλ 1:N λ§€νλ μλ€. νμ§λ§ μ€μν N:1, 1:1 λ§ μμ±νλλ‘ νκ² λ€
.N(User):1(Kernel) λ§€ν
λ§ κ·Έλλ‘ Nκ°μ μ¬μ©μ μ€λ λκ° 1κ°μ 컀λ μ€λ λλ‘ λ§€ννλ κ°λ μ΄λ€.
μ΄μ체μ (컀λ μ μ₯)λ λͺ¨λ νλ‘μΈμ€λ₯Ό Main μ€λ λλΌλ λ¨μΌ νλ‘μΈμ€λ‘ μ²λ¦¬νλ€.
μ΄ λ§μ 컀λ μμμ μ μ₯λλ 컀λ λ 벨 μ€λ λμ TCBκ° 1κ°λΌλ μλ―Έμ΄λ€.
μ¦, μ€λ λ 컨ν μ€νΈ μ€μμΉμ μ¬μ©μ λ 벨μμλ§ λ°μνκ² λλ€λ μλ―Έμ΄λ€.
μ₯μ μΌλ‘λ μ¬μ©μ λ 벨μμλ§ μ»¨ν μ€νΈ μ€μμΉμ΄ λ°μνκΈ° λλ¬Έμ μ€ν μλκ° λ§€μ° λΉ λ₯΄λ€.
λ¨μ μΌλ‘λ νλ PCλ λ©ν° μ½μ΄ CPUκ° λ³΄νΈνλμ΄ μκΈ° λλ¬Έμ λΉν¨μ¨μ μ΄λΌλ μ μ΄λ€.
κ·Έ μΈμλ νλμ μ¬μ©μ λ 벨 μ€λ λκ° λΈλ‘λλ©΄ νλ‘μΈμ€ μ μ²΄κ° λΈλ‘λλ λ¨μ μ΄ λ°μνλ€.
μ€λ λ 컨ν μ€νΈ μ€μμΉ μλͺ μ£ΌκΈ°μ λ°λ₯΄λ©΄ Block λ λ΄μ©μ΄ μμΌλ©΄ Ready Queueμ λκΈ° μ€μΈ λ€λ₯Έ Threadλ₯Ό μ²λ¦¬νλ κ²μ΄ λ§λ€. νμ§λ§ 그건 νλ‘μΈμ€ κΈ°λ° μ΄μ체μ μΌ κ²½μ°λ€. νλ‘μΈμ€ νλμμ TCBλ₯Ό κ΄λ¦¬νκΈ° λλ¬Έμ κ·Έλ λ€.
νμ§λ§ λ©ν° μ€λ λ νκ²½μμ N:1 λ§€νμ΄ λμ΄μμ κ²½μ°, 컀λ 곡κ°μμλ μ¬μ©μ λ 벨 μ€λ λμ μ΄λ€ μ€λ λκ° Block λμλμ§ μ μ μλ€. μλνλ©΄ μ¬μ©μ λ 벨 μ€λ λμ TCBκ° μ¬μ©μ 곡κ°μ μκΈ° λλ¬Έμ΄λ€. κ·Έλμ 컀λ λ 벨 μ€λ λλ Blockμ΄ λκ³ λ€λ₯Έ μ¬μ©μ λ 벨 μ€λ λλ μ€νν μ μλ μνκ° λμ΄ λ²λ¦°λ€.
1(User) : 1(Kernel) λ§€ν
λ§ κ·Έλλ‘ μ¬μ©μ λ 벨 μ€λ λμ 컀λ λ 벨 μ€λ λκ° 1κ°μ© μ°κ²°λμ΄ μλ ꡬ쑰μ΄λ€.
μ₯μ μΌλ‘ κ°λ μ΄ λ¨μν΄μ ꡬνμ΄ μ½κ³ , λμ λ³λ ¬μ±μ μ 곡νκ³ μλ€λ κ²μ΄λ€.
κ·Έλ¦¬κ³ N:1 λ§€νμ λ¨μ μ΄μλ μ¬μ©μ λ 벨 μ€λ λκ° Block λμ΄λ μμ© νλ‘κ·Έλ¨ μ μ²΄κ° Blockλμ§ μλλ€.
λ¨μ μΌλ‘ 컀λμ μ§μ νμκ° μ¦κ°ν΄μ 컀λμ λΆλ΄μ΄ μκΈ΄λ€λ κ²μ΄λ€. μ¬μ©μ λ 벨 μ€λ λκ° λ§μμ§μλ‘ μ»€λμ λΆλ΄μ΄ 컀μ§λ€. νμ§λ§ λλΆλΆ νλ OSμμλ 1:1 λ§€νμ μ±ννκ³ μλ€.
μΆκ°λ‘ Javaμ JVM λν 1:1 λ§€νμΌλ‘ ꡬμ±λμ΄μλ€.
κ·Έ μΈ, N:M λ§€ν, 1:N λ§€νλ μμ§λ§ μ μ¬μ©νμ§λ μμμ λμ΄κ°λλ‘ νλ€.
λ©ν° μ€λ λ©μ μ₯μ
- λ³λ ¬ μ€νμΌλ‘ λμ μ€ν μ±λ₯μ 보μΈλ€.
- μ°μν μλ΅μ±μ 보μΈλ€.
- λμ μ²λ¦¬, ν μ€λ λκ° λΈλ‘λμ΄λ λμ κ°λ₯
- μμ€ν μμ μ¬μ©μ΄ νλ‘μΈμ€μ λΉν΄ ν¨μ¨μ μ΄λ€.
- νλ‘μΈμ€μ λΉν΄ μμ±μ΄ μ½κ³ ν΅μ μ΄ ν¨μ¨μ μ΄λ€.
- μμ© νλ‘κ·Έλ¨μ μ¬λ¬ ν¨μλ‘ λΆν νμ¬ κ΅¬μ‘°κ° λ¨μν΄μ§.
- νμ₯μ±μ΄ μ°μν¨.
λ©ν° μ€λ λ©μ μ£Όμν μ
- ν μ€λ λκ° fork() νΈμΆμ ν κ²½μ°, νλ‘μΈμ€μ λ€λ₯Έ μ€λ λλ€μ μ’ λ£λκ³ fork()λ₯Ό νΈμΆν μ€λ λλ§ main() μ€λ λλ₯Ό λ§λ€κ² λλ μ΄μκ° μλ€.
- ν μ€λ λκ° exec()λ₯Ό νΈμΆν κ²½μ° λͺ¨λ μ€λ λκ° μ’ λ£λκ³ νλ‘μΈμ€κ° μλ‘μ΄ νλ‘μΈμ€λ‘ μ€νλλ€.
- λκΈ°ν λ¬Έμ , μ΄νμ λ€λ£¬λ€.
'CS > μ΄μ체μ ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
15. CPU Scheduling Algorithm (1) | 2024.04.22 |
---|---|
14. CPU Scheduling (0) | 2024.04.22 |
12. 컀λ λ 벨 μ€λ λμ μ¬μ©μ λ 벨 μ€λ λ (1) | 2024.04.22 |
11. μ€λ λ μ£Όμ 곡κ°κ³Ό 컨ν μ€νΈ (0) | 2024.04.22 |
10. μ€λ λ (Thread) (0) | 2024.04.21 |