νλ‘κ·Έλ¨
νλ‘κ·Έλ¨μ΄λ, νμΌμ΄ μ μ₯ μ₯μΉμ μ μ₯λμ΄ μμ§λ§ λ©λͺ¨λ¦¬μλ μ¬λΌκ° μμ§ μμ μ μ μΈ μνλ₯Ό λ§νλ€.
νλ‘μΈμ€
- λ©λͺ¨λ¦¬μ μ μ¬λμ΄ μ€νλκ³ μλ νλ‘κ·Έλ¨μ μΈμ€ν΄μ€(λ
립μ μΈ κ°μ²΄)
- νλ‘κ·Έλ¨ : μ΄λ€ μμ μ μν΄ μ€νν μ μλ νμΌ
- μ΄μ체μ λ‘λΆν° μμμ ν λΉλ°μ μμ μ λ¨μ
νΉμ§
- νλ‘μΈμ€λ κ°κ° λ 립λ λ©λͺ¨λ¦¬ μμ(Code, Data, Stack, Heapμ ꡬ쑰)μ ν λΉλ°λλ€.
- κΈ°λ³Έμ μΌλ‘ νλ‘μΈμ€λΉ μ΅μ 1κ°μ μ€λ λ(λ©μΈ μ€λ λ)λ₯Ό κ°μ§κ³ μλ€.
- κ° νλ‘μΈμ€λ λ³λμ μ£Όμ 곡κ°μμ μ€νλλ©°, ν νλ‘μΈμ€λ λ€λ₯Έ νλ‘μΈμ€μ λ³μλ μλ£κ΅¬μ‘°μ μ κ·Όν μ μλ€.
- ν νλ‘μΈμ€κ° λ€λ₯Έ νλ‘μΈμ€μ μμμ μ κ·Όνλ €λ©΄ νλ‘μΈμ€ κ°μ ν΅μ (IPC, inter-process communication)μ μ¬μ©ν΄μΌ νλ€.
- Ex. νμ΄ν, νμΌ, μμΌ λ±μ μ΄μ©ν ν΅μ λ°©λ² μ΄μ©
- ν νλ‘μΈμ€λ₯Ό μ€ννλ€κ° μ€λ₯κ° λ°μν΄μ νλ‘μΈμ€κ° κ°μ λ‘ μ’ λ£λμ΄λ νμΌμ μμμν€λ κ²½μ°κ° μλλΌλ©΄, λ€λ₯Έ νλ‘μΈμ€μκ² μλ¬΄λ° μν₯μ μ£Όμ§ μλλ€.
κ³Όκ±°μλ νλ‘κ·Έλ¨μ μ€νν λ μ€ν μμλΆν° μ€ν λκΉμ§ νλ‘μΈμ€ νλλ§μ μ¬μ©ν΄μ μ§ννλ€κ³ νλ€. νμ§λ§ μκ°μ΄ νλ₯Όμλ‘ νλ‘κ·Έλ¨μ΄ 볡μ‘ν΄μ§κ³ νλ‘μΈμ€ νλλ§μ μ¬μ©ν΄μ νλ‘κ·Έλ¨μ μ€ννκΈ°λ λ² μ°¨κ² λμλ€. μ€μ λ‘ μ΄μ λ νλ‘κ·Έλ¨ νλκ° λ¨μν ν κ°μ§ μμ λ§μ νλ κ²½μ°λ μλ€. κ·Έλ¬λ©΄ μ΄μ μ΄λ»κ² ν΄μΌν κΉ?
μ½κ² λ μ€λ₯΄λ λ°©λ²μ, "ν νλ‘κ·Έλ¨μ μ²λ¦¬νκΈ° μν νλ‘μΈμ€λ₯Ό μ¬λ¬ κ° λ§λ€λ©΄ λμ§ μμκΉ?" μκ°μ΄ λ€μ§λ§ μ΄λ λΆκ°λ₯ν μΌμ΄μλ€. μλνλ©΄ μ΄μ체μ λ μμ μ±μ μν΄μ νλ‘μΈμ€λ§λ€ μμ μκ² ν λΉλ λ©λͺ¨λ¦¬ λ΄μ μ 보μλ§ μ κ·Όν μ μλλ‘ μ μ½μ λκ³ μκ³ , μ΄λ₯Ό λ²μ΄λλ μ 보μ μ κ·Όνλ €λ©΄ μ€λ₯κ° λ°μνκΈ° λλ¬Έμ΄λ€.
μλ¬΄νΌ νλ‘μΈμ€μλ λ€λ₯Έ λ μμ μ€ν λ¨μ κ°λ μ΄ νμνκ² λμκ³ , μ΄ κ°λ μ΄ λ°λ‘ μ€λ λλ€.
μ€λ λ
- νλ‘μΈμ€ λ΄μμ μ€νλλ μ¬λ¬ νλ¦μ λ¨μ
- νλ‘μΈμ€κ° ν λΉλ°μ μμμ μ΄μ©νλ μ€ν νλ¦μ λ¨μ
νΉμ§
- μ€λ λλ νλ‘μΈμ€ λ΄μμ κ°κ° Stackλ§ λ°λ‘ ν λΉλ°κ³ Code, Data, Heap μμμ 곡μ νλ€.
- μ€λ λλ ν νλ‘μΈμ€ λ΄μμ λμλλ μ¬λ¬ μ€νμ νλ¦μΌλ‘, νλ‘μΈμ€ λ΄μ μ£Όμ 곡κ°μ΄λ μμλ€(ν κ³΅κ° λ±)μ κ°μ νλ‘μΈμ€ λ΄μ μ€λ λλΌλ¦¬ 곡μ νλ©΄μ μ€νλλ€.
- κ°μ νλ‘μΈμ€ μμ μλ μ¬λ¬ μ€λ λλ€μ κ°μ ν 곡κ°μ 곡μ νλ€. λ°λ©΄μ νλ‘μΈμ€λ λ€λ₯Έ νλ‘μΈμ€μ λ©λͺ¨λ¦¬μ μ§μ μ κ·Όν μ μλ€.
- κ°κ°μ μ€λ λλ λ³λμ λ μ§μ€ν°μ μ€νμ κ°κ³ μμ§λ§, ν λ©λͺ¨λ¦¬λ μλ‘ μ½κ³ μΈ μ μλ€.
- ν μ€λ λκ° νλ‘μΈμ€ μμμ λ³κ²½νλ©΄, λ€λ₯Έ μ΄μ μ€λ λ(sibling thread)λ κ·Έ λ³κ²½ κ²°κ³Όλ₯Ό μ¦μ λ³Ό μ μλ€.
- μ€λ λλ Code, Data, Heap λ©λͺ¨λ¦¬ μμμ΄ λ΄μ©μ 곡μ νκΈ° λλ¬Έμ μ΄λ€ μ€λ λ νλμμ μ€λ₯κ° λ°μνλ€λ©΄ κ°μ νλ‘μΈμ€ λ΄μ λ€λ₯Έ μ€λ λ λͺ¨λκ° κ°μ λ‘ μ’ λ£λλ€.
λ©ν° νλ‘μΈμ€ vs λ©ν° μ€λ λ
λ©ν° νλ‘μΈμ€κ° μ¬λ¬ CPUλ₯Ό μ₯μ°©νμ¬ νλ μ΄μμ νλ‘μΈμ€λ€μ λμμ μ²λ¦¬(λ³λ ¬)νλ κ²μ΄λΌλ©΄,
λ©ν°μ€λ λλ νλμ νλ‘μΈμ€κ° μ¬λ¬ μμ
μ μ¬λ¬ μ€λ λλ₯Ό μ¬μ©νμ¬ λμμ μ²λ¦¬νλ κ²μ μλ―Ένλ€.
λ©ν° νλ‘μΈμ€ μ₯μ
- μμ μ± (λ©λͺ¨λ¦¬ μΉ¨λ² λ¬Έμ λ₯Ό OS μ°¨μμμ ν΄κ²°)
λ©ν° νλ‘μΈμ€ λ¨μ
- κ°κ° λ 립λ λ©λͺ¨λ¦¬ μμμ κ°κ³ μμ΄, μμ λ λ§μ μλ‘ μ€λ²ν€λ λ°μ.
- Context SwitchingμΌλ‘ μΈν μ±λ₯ μ ν
λ©ν° μ€λ λμ μ₯μ
- Context-Switchingν λ 곡μ νκ³ μλ λ©λͺ¨λ¦¬λ§νΌμ λ©λͺ¨λ¦¬ μμμ μλ μ μλ€.
- μ€λ λλ νλ‘μΈμ€ λ΄μ Stack μμμ μ μΈν λͺ¨λ λ©λͺ¨λ¦¬λ₯Ό 곡μ νκΈ° λλ¬Έμ ν΅μ μ λΆλ΄μ΄ μ μ΄μ μλ΅ μκ°μ΄ λΉ λ₯΄λ€.
λ©ν° μ€λ λμ λ¨μ
- μ€λ λ νλκ° νλ‘μΈμ€ λ΄ μμμ λ§μ³λ²λ¦°λ€λ©΄ λͺ¨λ νλ‘μΈμ€κ° μ’ λ£λ μ μλ€.
- μμ μ± (μμμ 곡μ νκΈ° λλ¬Έμ νμ°μ μΌλ‘ λκΈ°ν λ¬Έμ κ° λ°μν μλ°μ μλ€.)
- λ©ν° μ€λ λμ μμ μ±μ λν λ¨μ μ Critical Section(μκ³ μμ) κΈ°λ²μ ν΅ν΄ λλΉν¨
- νλμ μ€λ λκ° κ³΅μ λ°μ΄ν° κ°μ λ³κ²½νλ μμ μ λ€λ₯Έ μ€λ λκ° κ·Έ κ°μ μ½μΌλ € ν λ λ°μνλ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν λκΈ°ν κ³Όμ
- μνΈ λ°°μ , μ§ν, νμ λκΈ°λ₯Ό μΆ©μ‘±ν΄μΌ ν¨
Context Switchingμ΄λ?
νλ‘μΈμ€μ μν μ 보λ₯Ό μ μ₯νκ³ λ³΅μνλ μΌλ ¨μ κ³Όμ
μ¦, λμ μ€μΈ νλ‘μΈμ€κ° λκΈ°νλ©΄μ ν΄λΉ νλ‘μΈμ€μ μνλ₯Ό 보κ΄νκ³ , λκΈ°νκ³ μλ λ€μ μλ²μ νλ‘μΈμ€κ° λμνλ©΄μ μ΄μ μ 보κ΄νλ νλ‘μΈμ€ μνλ₯Ό 볡ꡬνλ κ³Όμ μ λ§νλ€.
→ νλ‘μΈμ€λ κ° λ 립λ λ©λͺ¨λ¦¬ μμμ ν λΉλ°μ μ¬μ©λλ―λ‘, μΊμ λ©λͺ¨λ¦¬ μ΄κΈ°νμ κ°μ λ¬΄κ±°μ΄ μμ μ΄ μ§νλμμ λ μ€λ²ν€λκ° λ°μν λ¬Έμ κ° μ‘΄μ¬νλ€.
μ 리
νλ‘μΈμ€λ μ΄μ체μ κ΄μ μμ μ΅μ μμ λ¨μ
μ€λ λλ CPU μ μ₯μμμ μ΅μ μμ λ¨μ
νλ‘μΈμ€μ μ€λ λλ κ°λ μ λ²μλΆν° λ€λ₯΄λ€. μ€λ λλ νλ‘μΈμ€ μμ ν¬ν¨λμ΄ μκΈ° λλ¬Έμ΄λ€.
- μ΄μ체μ κ° νλ‘μΈμ€μκ² Code/Data/Stack/Heap λ©λͺ¨λ¦¬ μμμ ν λΉν΄ μ£Όκ³ μ΅μ μμ
λ¨μλ‘ μΌλ λ°λ©΄,
μ€λ λλ νλ‘μΈμ€ λ΄μμ Stack λ©λͺ¨λ¦¬ μμμ μ μΈν λ€λ₯Έ λ©λͺ¨λ¦¬ μμμ κ°μ νλ‘μΈμ€ λ΄ λ€λ₯Έ μ€λ λμ 곡μ νλ€. - νλ‘μΈμ€λ λ€λ₯Έ νλ‘μΈμ€μ μ 보λ₯Ό 곡μ νλ €λ©΄ IPCλ₯Ό μ¬μ©νλ λ±μ λ²κ±°λ‘μ΄ κ³Όμ μ κ±°μ³μΌ νμ§λ§,
μ€λ λλ κΈ°λ³Έ ꡬ쑰 μμ²΄κ° λ©λͺ¨λ¦¬λ₯Ό 곡μ νλ ꡬ쑰μ΄κΈ° λλ¬Έμ λ€λ₯Έ μ€λ λμ μ 보 곡μ κ° μ½λ€.- λλ¬Έμ λ©ν° νλ‘μΈμ±λ³΄λ€ λ©ν°μ€λ λκ° μμμ μλ μ μκ² λλ€.
- λ€λ§ μ€λ λμ μ€μΌμ€λ§μ μ΄μ체μ κ° μ²λ¦¬νμ§ μκΈ° λλ¬Έμ νλ‘κ·Έλλ¨Έκ° μ§μ λκΈ°ν λ¬Έμ μ λμν μ μμ΄μΌ νλ€.
μ°Έκ³
'πCS > OS' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[OS] νλ‘μΈμ€ μ£Όμ κ³΅κ° (0) | 2021.08.23 |
---|---|
[OS] μΈν°λ½νΈ (0) | 2021.08.23 |
[OS] CPU μ€μΌμ€λ§ (0) | 2021.08.11 |
[OS] μ€μΌμ€λ¬μ μ’ λ₯: μ₯κΈ°, μ€κΈ°, λ¨κΈ° μ€μΌμ€λ¬ (0) | 2021.08.04 |
[OS] λΈλ/λ ΌλΈλ, λκΈ°/λΉλκΈ° (0) | 2021.07.28 |
λκΈ