context switchingμ κ³Όμ (λ¬Έλ§₯ κ΅ν)
context switching 컨ν μ€νΈ μ€μμΉ
μΈν°λ½νΈλ μμ€ν νΈμΆ λ±μΌλ‘ μ€ν μ€μΈ νλ‘μΈμ€μ μ μ΄λ₯Ό λ€λ₯Έ νλ‘μΈμ€μ λ겨 μ€ν μνκ° λλλ‘ νλ κ²μ νλ‘μΈμ€ 컨ν μ€νΈ μ€μμΉ (λ¬Έλ§₯ κ΅ν)μ΄λΌκ³ νλ€.
컨ν μ€νΈ μ€μμΉμ΄ μΌμ΄λλ©΄ νλ‘μΈμμ λ μ§μ€ν°μ μλ λ΄μ©μ λμ€μ μ¬μ©ν μ μλλ‘ μ μ₯νλ€.
"μ€λΉ -> μ€ν" μν, "μ€ν -> μ€λΉ" μν, "μ€ν -> λκΈ°" μνλ‘ λ°λ λ λ°μνλ€.
μ΄μ νλ‘μΈμ€μ μν λ μ§μ€ν° λ΄μ©μ 보κ΄νκ³ , λ€λ₯Έ νλ‘μΈμ€μ μν λ μ§μ€ν°λ₯Ό μ μ¬νμ¬ νλ‘μΈμ€λ₯Ό κ΅ννλ€.
컨ν μ€νΈ μ€μμΉμ λ¨μ
νλ‘μΈμ€ P1μ΄ "μ€ν -> μ ν΄ (μ€λΉ or λκΈ°μνλ₯Ό λ§ν¨)" μνκ° λ λ P1μ΄ λ°λ‘ μ€νλμ§ μκ³ , μ ν΄ μνλ₯Ό μ’ λ μ μ§νλ€κ° μ€ν μνκ° λλ€.
μλνλ©΄ P1 μνλ₯Ό PCB1μ μ μ₯νκ³ , PCB2μμ P2 μνλ₯Ό μ μ¬ν΄μμΌ νκΈ° λλ¬Έμ΄λ€.
μ΄λ₯Ό dispatcher latencyλΌκ³ νλ€.
(dispatcher : context switchλ₯Ό νλ λͺ¨λ, νλ‘μΈμ€μκ² cpuλ₯Ό ν λΉν΄μ£Όλ λͺ¨λ)
컨ν μ€νΈ μ€μμΉμ΄ λ무 μ¦μΌλ©΄ μ€λ²ν€λκ° λ°μνμ¬(λΉμ©μ΄ λμ) μ±λ₯μ΄ λ¨μ΄μ§λ€.
νλ‘μΈμ€
- μ΄μ체μ μμμ "μ€ν μ€"μΈ νλ‘κ·Έλ¨μ΄λ€.
- "μ€ν μ€" = λμ€ν¬μ μλ νλ‘κ·Έλ¨μ λ©λͺ¨λ¦¬μ μ μ¬νμ¬ μ΄μ체μ μ μ μ΄λ₯Ό λ°λ μνκ° λ κ²μ μλ―Ένλ€.
- λ©λͺ¨λ¦¬ ꡬ쑰λ₯Ό μ΄λ£¨κ³ , νλ‘κ·Έλ¨ μΉ΄μ΄ν°λ λ μ§μ€ν°μ²λΌ νμ¬ μ΄λ€ μμμ μ¬μ©νλμ§ μ λ³΄κ° λ€μ΄ μλ λμ κ°μ²΄μ΄λ€.
νλ‘μΈμ€μ μμ±
μ΄μ체μ λ μμ© νλ‘κ·Έλ¨μμ μμ²μ λ°μ νλ‘μΈμ€λ₯Ό μμ±νλ©΄, μ΄μ체μ λ ν΄λΉ νλ‘μΈμ€μμ νλ‘μΈμ€ μ μ΄ λΈλ‘μ λ§λ€μ΄ μ£Όμ 곡κ°μ ν λΉνλ€.
PCB (Process Control Block)
- PCBλ νλ‘μΈμ€λ₯Ό κ΄λ¦¬νλ €κ³ μ μ§νλ λ°μ΄ν° λΈλ‘ λλ λ μ½λμ λ°μ΄ν° ꡬ쑰μ΄λ€.
- μ΄λ€ νλ‘μΈμ€λ₯Ό μ΄λκΉμ§ μμ νλμ§ μ μ μμ΄μΌ νλ€.
- λ°λΌμ νλ‘μΈμ€ μμ± μ, νλ‘μΈμ€μ λν μ 보λ₯Ό λ΄κ³ μλ PCB λΈλμ΄ ν¨κ» μμ±λλ€.
- PCBλ νλ‘μΈμ€λ₯Ό μ μ΄νκΈ° μν μ 보 λͺ¨μμ§μ΄λ€.
νλ‘μΈμ€ μν λ³ν
μΆμ²
Crocus, https://www.crocus.co.kr/1364