μ€λ λμ λ 벨?
μ€λ λλ μ€μΌμ€λ§ 주체μ λ°λΌ λ μ’ λ₯μ μ€λ λλ‘ κ΅¬λΆλλ€.
1. 컀λ λ 벨 μ€λ λ (Kernal-Level Thread) : 컀λμ μν΄ μ€μΌμ€λ§ λλ€.
2. μ¬μ©μ λ 벨 μ€λ λ (User-Level Thread) : μ€λ λ λΌμ΄λΈλ¬λ¦¬μ μν΄ μ€μΌμ€λ§ λλ€.
TCBλ₯Ό μμ νκ³ μλ 주체μ λ°λΌ λ μ’ λ₯μ μ€λ λλ‘ κ΅¬λΆλλλ° μμΈν μμ보λλ‘ νκ² λ€.
컀λ λ 벨 μ€λ λ
컀λ λ 벨 μ€λ λλ μμ€ν νΈμΆμ ν΅ν΄μλ§ μμ±λλ€. μ¦, 컀λμ μν΄μλ§ μ€μΌμ€λ§ λλ κ²μ΄λ€.
νμ§λ§, 컀λ μ½λμ λ¬λ¦¬ 컀λ λ 벨 μ€λ λμ μ½λλ λ°μ΄ν°κ° 컀λ 곡κ°λΏ μλλΌ μ¬μ©μ 곡κ°μλ μμ μ μλ€.
μ΄κ² 무μ¨λ§μΈμ§ μ λ§ ν·κ°λ Έλ€. thread_create() λΏλ§ μλλΌ ktread_create()λΌλ μ€λ λ ν¨μλ μ‘΄μ¬νλ€. ktread_create() ν¨μλ‘ μ»€λ μ€λ λλ₯Ό μμ±ν μ μλλ° μμ±λ 컀λ μ€λ λλ 컀λ 곡κ°μμ TCBλ₯Ό κ΄λ¦¬νκ² λλ€. νμ§λ§ μ΄ μ½λλ₯Ό μμ±ν κ²μ μ¬μ©μ 곡κ°μ μκΈ° λλ¬Έμ μμ κ°μ λ§μ΄ λμλ€.
μμ©νλ‘κ·Έλ¨μ μ μ¬ν΄ νλ‘μΈμ€λ₯Ό μμ±ν λ, μλμΌλ‘ 컀λμ΄ main μ€λ λλ₯Ό μμ±νλ€. κ·Έλμ main Threadλ 컀λμμ TCBλ₯Ό κ΄λ¦¬νκΈ° λλ¬Έμ 컀λ μ€λ λλ€.
κ·Έ μΈμλ μμ 컀λ λ 벨 μ€λ λ(pure kernel level thread)κ° μ‘΄μ¬νλ€. λΆν ν λ, 컀λ 곡κ°μμ μ€νλλλ‘ μμ±λ μ€λ λμΈλ°, λλΆλΆ OSλ λ€μμ μμ 컀λ λ 벨 μ€λ λλ₯Ό μμ±ν΄μ μ€ννκ³ μλ€κ³ νλ€.
μ¬μ©μ λ 벨 μ€λ λ
μ€λ λ λΌμ΄λΈλ¬λ¦¬ ν¨μλ₯Ό νΈμΆν΄μ μμ±λλ μ€λ λμ΄λ€.
μ€λ λ μ 보λ₯Ό μ¬μ©μ 곡κ°μ μμ±νκ³ μμ νλλ° pthread_create()λ‘ μμ±λ μ€λ λλ₯Ό μλ―Ένλ€.
컀λ μ€λ λλ 컀λμ μν΄ μ€μΌμ€λ§ λμλ€λ©΄ μ¬μ©μ λ 벨 μ€λ λλ μ€λ λ λΌμ΄λΈλ¬λ¦¬μ μν΄ μ€μΌμ€λλ€.
μ¦, 컀λ μ€λ λλ λ€μν 컀λ λ 벨 μ€λ λκ° λμμ μ€νλκ³ μμΌλ―λ‘ μ»¨ν μ€νΈ μ€μμΉμ΄ μμ£Ό λ°μνκ² λ κ²μ΄κ³ μλκ° λ리λ€λ λ¨μ μ΄ μκ³ μ¬μ©μ λ 벨 μ€λ λλ νμ¬ μ€νμ€μΈ νλ‘μΈμ€μ λν΄μλ§ μ»¨ν μ€νΈ μ€μμΉμ΄ λ°μνκ² λλ―λ‘ μλκ° μ»€λ μ€λ λλ³΄λ€ 100λ°° λΉ λ₯΄λ€κ³ νλ€.
μ 리
νλμ μ½μ΄μ μ§μ€λ μΌμ νκ³ μΆλ€λ©΄ concurrencyλ₯Ό λ λ μ¬μ©μ λ 벨 μ€λ λλ₯Ό μ¬μ©νμ. μλκ° λ§€μ° λΉ λ₯΄λ€. λ¨μ μΌλ‘ νλμ μ¬μ©μ λ 벨 μ€λ λκ° Blockλλ©΄ ν΄λΉ νλ‘μΈμ€μ λͺ¨λ μ¬μ©μ λ 벨 μ€λ λκ° Blockκ³Ό κ°μ μνκ° λλ€.
λ©ν° μ½μ΄μ μΌμ λΆμ°ν΄μ parallelismμ λ λ μμ μ νκ³ μΆλ€λ©΄ 컀λ λ 벨 μ€λ λλ₯Ό μ¬μ©νμ. μλλ λ리μ§λ§ λ€μμ μΌμ ν λ²μ μ²λ¦¬νλ©΄μ μν©μ λ°λΌ λ λμ μλ ν¨μ¨μ΄ λμ¨λ€.
μ μ 리λ κ°λ°μ ν λ, μκ°ν λΆλΆμ΄λ€.
μ΄ ν¬μ€νΈλ OSμ λν λ΄μ©μ΄κΈ° λλ¬Έμ μ€λλ μ OSμμλ H/W μ ,μΆλ ₯ λΏλ§ μλλΌ λ€μν μ²λ¦¬ λ±μ μν΄ μ»€λ λ 벨 μ€λ λλ₯Ό λ§μ΄ μ¬μ©νκ³ μλ€. λ¬Όλ‘ μ¬μ©μ λ 벨 μ€λ λλ λ³ν©ν΄μ μ¬μ©νκ³ μλ€.
'CS > μ΄μ체μ ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
14. CPU Scheduling (0) | 2024.04.22 |
---|---|
13. λ©ν°μ€λ λ ꡬν (0) | 2024.04.22 |
11. μ€λ λ μ£Όμ 곡κ°κ³Ό 컨ν μ€νΈ (0) | 2024.04.22 |
10. μ€λ λ (Thread) (0) | 2024.04.21 |
9. νλ‘μΈμ€ κ³μΈ΅ ꡬ쑰 (1) | 2024.04.21 |