π§ νλ‘μΈμ€
νλ‘μΈμ€λ μ΄μ체μ κ° λ§λ€μ΄ μ£Όλ μ€ν νλ‘κ·Έλ¨μ μΈμ€ν΄μ€μ λλ€.
νλ‘κ·Έλ¨μ μ€λλ μμ€ν μμ μ€νλ λ, λ§μΉ λ¨ ν κ°μ νλ‘κ·Έλ¨λ§μ΄ μμ€ν μμ λμκ°κ³ μλ κ² κ°μ μ°©κ°μ΄ λ€κ² ν©λλ€.
μ΄λ¬ν μ°©κ°μ νλ‘μΈμ€λΌλ κ°λ μ μν΄ μ΄λ£¨μ΄μ§λλ€.
μμ€ν λ΄μ κ° νλ‘κ·Έλ¨μ μ΄λ€ νλ‘μΈμ€μ λ¬Έλ§₯(context)μμ λμκ°λλ€.
λ¬Έλ§₯μ νλ‘κ·Έλ¨μ΄ μ ννκ² λμκ°κΈ° μν΄μ νμν μνλ‘ κ΅¬μ±λλ©°,
λ¬Έλ§₯ μμλ λ©λͺ¨λ¦¬μ μ μ₯λ νλ‘κ·Έλ¨μ μ½λμ λ°μ΄ν°, μ€ν, λ²μ© λ μ§μ€ν°μ λ΄μ©, νλ‘κ·Έλ¨ μΉ΄μ΄ν°, νκ²½λ³μ, μ΄λ € μλ νμΌμ μλ³μκ° ν¬ν¨λ©λλ€.
μ¬μ©μκ° μ€ν λͺ©μ νμΌμ μ΄λ¦μ μμ μ λ ₯νμ¬ νλ‘κ·Έλ¨μ λ릴 λλ§λ€ μμ μλ‘μ΄ νλ‘μΈμ€λ₯Ό μμ±νκ³ ,
μ€ν λͺ©μ νμΌμ μλ‘μ΄ νλ‘μΈμ€μ λ¬Έλ§₯μμ μ€νν©λλ€.
μμ© νλ‘κ·Έλ¨ λν μλ‘μ΄ νλ‘μΈμ€λ₯Ό λ§λ€ μ μμΌλ©°, μ νλ‘μΈμ€μ λ¬Έλ§₯ λ΄μμ μμ μ μ½λλ λ€λ₯Έ μμ© μ½λλ₯Ό μ€νμν¬ μ μμ΅λλ€.
βοΈ νλ‘μΈμ€μμ μ 곡νλ μΆμν
νλ‘μΈμ€λ νλ‘κ·Έλ¨μ λ κ°μ μ€μν μΆμνλ₯Ό μ 곡ν©λλ€.
λ Όλ¦¬μ μ μ΄νλ¦:
μ°λ¦¬μ νλ‘κ·Έλ¨μ΄ νλ‘μΈμλ₯Ό νΌμμ μ¬μ©νλ€λ μ°©κ°μ΄ λ€κ² νλ λ 립μ μΈ λ Όλ¦¬μ μ μ΄ νλ¦
μ¬μ μΈ μ£Όμ곡κ°:
μ°λ¦¬μ νλ‘κ·Έλ¨μ΄ νΌμμ λ©λͺ¨λ¦¬λ₯Ό μ¬μ©νλ€λ μ°©κ°μ μ 곡νλ μ¬μ μ£Όμ곡κ°
π§ λ Όλ¦¬μ μΈ μ μ΄νλ¦
νλ‘μΈμ€λ μμ€ν μ μλ‘ λ€λ₯Έ μ¬λ¬ νλ‘κ·Έλ¨λ€μ΄ λμμ μΌλ‘ λμνκ³ μμ§λ§, νλ‘μΈμλ₯Ό νΌμμ μ¬μ©νλ€λ μ°©κ°μ λλΌκ² ν©λλ€.
μμ κ·Έλ¦Όμμ 보μ΄λ κ²κ³Ό κ°μ΄ μΈ κ°μ νλ‘μΈμ€λ₯Ό μ€ννλ νλ‘μΈμμ λν΄μ μκ°ν΄ 보λλ‘ νκ² μ΅λλ€.
μ΄ νλ‘μΈμμ νλμ 물리μ μ μ΄νλ¦μ κ° νλ‘μΈμ€μ λν΄μ ν κ°μ© μΈ κ°μ λ Όλ¦¬νλ¦μΌλ‘ λλμ΄μ§λλ€.
μ κ·Έλ¦Όμ ν΅ν΄ μ μ μλ―μ΄ νλμ νλ‘μΈμλ₯Ό μ¬μ©ν΄μ μ¬λ¬ νλ‘μΈμ€λ€μ΄ κ΅λλ‘ λμκ°λλ€.
κ° νλ‘μΈμ€λ μμ μ νλ¦μ μΌλΆλΆμ μ€ννκ³ λμ, λ€λ₯Έ νλ‘μΈμ€λ€λ‘ μμλ₯Ό λ°κΎΈμ΄ μ€ννλ λμ μΌμμ μΌλ‘ μ μ§λ©λλ€.
μ΄ νλ‘μΈμ€λ€ μ€μμ νλμ λ¬Έλ§₯μμ μ€νλλ νλ‘κ·Έλ¨μ μ΄κ²μ΄ λ§μΉ νλ‘μΈμλ₯Ό λ² νμ μΌλ‘ μμ ν κ²μ²λΌ 보μ λλ€.
μ΄λ¬ν κ³Όμ μμ λ¬Έλ§₯ μ ν(context switch)μ΄ λ°μν©λλ€.
π§ λμμ± νλ‘μΈμ€
μμ μ μ€νμκ°μ΄ λ€λ₯Έ νλ¦κ³Ό κ²ΉμΉλ λ Όλ¦¬νλ¦μ λμμ± νλ¦μ΄λΌκ³ λΆλ¦ λλ€.
λ Όλ¦¬ νλ¦μ μ»΄ν¨ν° μμ€ν λ΄μμ μ¬λ¬ κ°μ§ λ€λ₯Έ ννλ₯Ό κ°μ΅λλ€.
μμΈ νΈλ€λ¬, νλ‘μΈμ€, μκ·Έλ νΈλ€λ¬, μ°λ λ, μλ° νλ‘μΈμ€λ λͺ¨λ λ Όλ¦¬νλ¦μ μμ λλ€.
λ νλ‘μΈμ€λ κ·Έλ€μ μ€ν μκ°μ΄ μλ‘ μ€μ²©λλ©΄ λμ(concurrent)μ μ€νλλ€κ³ λΆλ¦ λλ€.
κ·Έλ μ§ μλ€λ©΄ μμ°¨μ μΌλ‘ μ€νλλ€κ³ μ μν©λλ€.
μ¦ λ€μ μμμμ,
Aμ B, Aμ Cλ λμμ μ€νλμ§λ§,
Bμ Cλ μμ°¨μ μΌλ‘ μ€νλ©λλ€.
λ°λΌμ Aμ Bλ λμμ μ€νλλ€κ³ λ³Ό μ μμΌλ©°, Bμ Cλ μμ°¨μ μΌλ‘ μ€νλλ€κ³ λ³Ό μ μμ΅λλ€.
βοΈ λμμ±(concurrency)κ³Ό λ³λ ¬μ±(Parallelism)
곡λμΌλ‘ μ€νλλ νλ¦μ μΌλ°μ μΈ νμμ λμμ±μ΄λΌ ν©λλ€.
νλ‘μΈμ€κ° λ€λ₯Έ νλ‘μΈμ€λ€κ³Ό κ΅λλ‘ μ€νλλ€λ κ°λ μ λ©ν°νμ€νΉμ΄λΌ λΆλ¦ λλ€.
ν νλ‘μΈμ€κ° μμ μ νλ¦ μΌλΆλ₯Ό μ€ννλ 맀 μκ° μ£ΌκΈ°λ₯Ό νμ μ¬λΌμ΄μ€λΌκ³ λΆλ¦ λλ€.
λ©ν°νμ€νΉμ νμ μ¬λΌμ΄μ±μ΄λΌκ³ λ λΆλ¦ λλ€.
λμμ νλ¦μ λν κ°λ μ νλ¦λ€μ΄ λμκ°λ νλ‘μΈμ μ½μ΄λ μ»΄ν¨ν°μ κ°μμλ 무κ΄ν©λλ€.
λ§μΌ λ νλ¦μ΄ μκ°μμΌλ‘ μ€μ²©λλ€λ©΄, λΉλ‘ μ΄λ€μ΄ λμΌν νλ‘μΈμμμ λμκ°κ³ μλλΌλ μ΄λ€μ λμμ μ λλ€.
κ·Έλ¬λ λ³λ ¬(parallel) νλ¦μ΄λΌκ³ μλ €μ§ λμμ± νλ¦μ λΆλΆμ§ν©μ ꡬλ³νλ κ²μ΄ μ μ©ν κ²½μ°κ° μμ΅λλ€.
λ§μΌ λ κ°μ νλ¦μ΄ μλ‘ λ€λ₯Έ νλ‘μΈμ μ½μ΄λ μ»΄ν¨ν°μμ λμμ λμκ°κ³ μλ€λ©΄ μ΄κ²μ λ³λ ¬ νλ¦μ λλ€.
μ¦ λ³λ ¬λ‘ λμκ°λ€κ³ λ§ν©λλ€.
π§ λ¬Έλ§₯ μ ν (Context Switch)
ν κ°μ νλ‘μΈμ€μμ λ€λ₯Έ νλ‘μΈμ€λ‘ μ μ΄νλ¦μ΄ λμ΄κ°λ κ²μ λ¬Έλ§₯μ ν(Context Switch)λΌκ³ λΆλ¦ λλ€.
νλ‘μΈμ€λ 컀λμ΄λΌκ³ λΆλ₯΄λ μ΄μ체μ μ μν΄μ κ΄λ¦¬λ©λλ€.
(컀λμ νλ‘μΈμ€κ° μλλ©°, μ¬μ©μ νλ‘μΈμ€μ μΌλΆλΆμΌλ‘ μ€νλ©λλ€.)
μ΄μ체μ 컀λμ μμΈμ μΈ μ μ΄νλ¦μ μμμμ€ ννμΈ λ¬Έλ§₯ μ νμ μ¬μ©νμ¬ λ©ν°νμ€νΉμ ꡬνν©λλ€.
컀λμ΄ μ μ λ νλ‘μΈμ€λ₯Ό λ€μ μμνκΈ° μν΄μ νμλ‘ νλ μνκ° λ°λ‘ 컨ν μ€νΈμ΄λ©°, 컀λμ κ° νλ‘μΈμ€λ§λ€ 컨ν μ€νΈλ₯Ό μ μ§ν©λλ€.
컀λμ νλ‘μΈμ€κ° μ€νλλ λμμ μ΄λ€ μμ μ νμ¬ νλ‘μΈμ€λ₯Ό μ μ (μΌμμ μΌλ‘ μ μ§)νκ³ , μ΄μ μ μ μ λ νλ‘μΈμ€λ₯Ό λ€μ μμν κ²μ κ²°μ ν μ μμ΅λλ€.
μ΄λ¬ν κ²°μ μ μ€μΌμ€λ§μ΄λΌ λΆλ₯΄λ©°, μ€μΌμ€λ§μ μ€μΌμ€λ¬λΌκ³ λΆλ¦¬λ 컀λ λ΄λΆμ μ½λμ μν΄ μ²λ¦¬λ©λλ€.
λ¬Έλ§₯ μ νμ 컀λμ΄ μ¬μ©μλ₯Ό λμ ν΄μ μμ€ν μ½μ μ€ννκ³ μμ λ μΌμ΄λ μ μμ΅λλ€.
λ§μΌ μμ€ν μ½μ΄ μ΄λ€ μ΄λ²€νΈμ λ°μμ κΈ°λ€λ¦¬κΈ° λλ¬Έμ λΈλ‘λλ€λ©΄ 컀λμ νμ¬ νλ‘μΈμ€λ₯Ό sleepμν€κ³ λ€λ₯Έ νλ‘μΈμ€λ‘ μ νν©λλ€.
μλ₯Ό λ€μ΄, read μμ€ν μ½μ΄ λμ€ν¬ μ κ·Όμ μꡬνλ©΄ 컀λμ λ¬Έλ§₯ μ νμ ν μ μμΌλ©°, λμ€ν¬λ‘λΆν°μ λ°μ΄ν°λ₯Ό κΈ°λ€λ¦¬λ λμ λ€λ₯Έ νλ‘μΈμ€λ₯Ό λ릴 μ μμ΅λλ€.
λ λ€λ₯Έ μμλ sleep μμ€ν μ½λ‘ νΈμΆνλ νλ‘μΈμ€λ₯Ό sleep μνλ‘ λ§λ€κΈ° μνμ¬ λ¬Έλ§₯ μ νμ μμ²νκ² λ©λλ€.
μΌλ°μ μΌλ‘ μ΄λ€ μμ€ν μ½μ΄ λΈλ‘λμ§ μμλ€ νλλΌλ, 컀λμ μμ€ν μ½μ νΈμΆνλ νλ‘μΈμ€λ‘ μ μ΄λ₯Ό λλ €μ£Όλ λμ μ λ¬Έλ§₯ μ νμ μννλ κ²μ κ²°μ ν μ μμ΅λλ€.
λν λ¬Έλ§₯ μ νμ μΈν°λ½νΈμ κ²°κ³Όλ‘ λ°μν μ μμ΅λλ€.
μλ₯Ό λ€μ΄ λͺ¨λ μμ€ν μ λκ² 1ms λλ 10msλ§λ€ μ£ΌκΈ°μ μΈ νμ΄λ¨Έ μΈν°λ½νΈλ₯Ό μμ±νλ μ΄λ€ 맀컀λμ¦μ κ°μ§κ³ μμ΅λλ€.
νμ΄λ¨Έ μΈν°λ½νΈκ° μΌμ΄λ λλ§λ€ 컀λμ νμ¬ νλ‘μΈμ€κ° μΆ©λΆν μ€λ μ€νλμλ€κ³ νλ¨νμ¬ μλ‘μ΄ νλ‘μΈμ€λ‘ μ νν κ²μ κ²°μ ν μ μμ΅λλ€.
'π₯ Computer Science > μμ€ν νλ‘κ·Έλλ°' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[μμ€ν νλ‘κ·Έλλ°] νλ‘μΈμ€ [3] - μκ·Έλ (0) | 2022.11.10 |
---|---|
[μμ€ν νλ‘κ·Έλλ°] νλ‘μΈμ€ [2] - νλ‘μΈμ€μ μ μ΄ (0) | 2022.11.07 |
[μμ€ν νλ‘κ·Έλλ°] νλ‘μΈμ€ [0] - μ μ΄ νλ¦κ³Ό μμΈ μν© (0) | 2022.11.07 |
[μμ€ν νλ‘κ·Έλλ°] λ²νΌ μ€λ²νλ‘μ° (0) | 2022.10.25 |
[μμ€ν νλ‘κ·Έλλ°] 2022 BombLab(λ°€λ©) μμΈλΆμ (0) | 2022.10.24 |