
νλμ¨μ΄λ₯Ό κ΄λ¦¬νκ³ , μ»΄ν¨ν° μμ€ν μ μμλ€μ ν¨μ¨μ μΌλ‘ κ΄λ¦¬νλ©°, μμ© νλ‘κ·Έλ¨κ³Ό νλμ¨μ΄ κ°μ μΈν°νμ΄μ€λ‘μ¨ λ€λ₯Έ μμ© νλ‘κ·Έλ¨μ΄ μ μ©ν μμ μ ν μ μλλ‘ νκ²½μ μ 곡ν΄μ€λ€.
μ¦, μ¬μ©μκ° μ»΄ν¨ν°λ₯Ό νΈλ¦¬νκ³ ν¨κ³Όμ μΌλ‘ μ¬μ©ν μ μλλ‘ νκ²½μ μ 곡νλ μμ€ν μννΈμ¨μ΄
μ΄μ체μ μμ μλνλ μμ© νλ‘κ·Έλ¨μ κ΄λ¦¬νλ κΈ°λ₯.
μ΄λ€ μλ―Έμμλ νλ‘μΈμ€(CPU) κ΄λ¦¬νλ κ², νμ¬ CPUλ₯Ό μ μ ν΄μΌ ν νλ‘μΈμ€λ₯Ό κ²°μ νκ³ , μ€μ λ‘ CPUλ₯Ό νλ‘μΈμ€μ ν λΉνλ©°, μ΄ νλ‘μΈμ€ κ° κ³΅μ μμ μ κ·Όκ³Ό ν΅μ λ±μ κ΄λ¦¬νκ² λλ€.
νλ‘μΈμ€λ μ€ν μ€μΈ νλ‘κ·Έλ¨μΌλ‘ λμ€ν¬λ‘λΆν° λ©λͺ¨λ¦¬μ μ μ¬λμ΄ CPUμ ν λΉμ λ°μ μ μλ κ².
μ΄μ체μ λ‘λΆν° μ£Όμ 곡κ°, νμΌ, λ©λͺ¨λ¦¬ λ±μ ν λΉ λ°μΌλ©° μ΄κ²λ€μ μ΄μΉνμ¬ νλ‘μΈμ€λΌκ³ νλ€.
ꡬ체μ μΌλ‘ νλ‘μΈμ€λ ν¨μμ λ§€κ°λ³μ, λ³΅κ· μ£Όμμ λ‘컬 λ³μμ κ°μ μμ μλ£λ₯Ό κ°λ νλ‘μΈμ€ μ€νκ³Ό μ μ λ³μλ€μ μλ‘νλ λ°μ΄ν° μΉμ
μ ν¬ν¨νλ€. (νλ‘μΈμ€λ§λ€ λ€λ₯Έ λ°μ΄ν° μΉμ
μ μ μλ³μκ° μ μ₯λ¨)
λν, νλ‘μΈμ€λ μ€νμ€μ λμ μΌλ‘ ν λΉλλ λ©λͺ¨λ¦¬μΈ νμ ν¬ν¨νλ€.
PCB : νΉμ νλ‘μΈμ€μ λν μ€μν μ 보λ₯Ό μ μ₯νκ³ μλ μ΄μ체μ μ μλ£κ΅¬μ‘°.
μ΄μ체μ λ νλ‘μΈμ€λ₯Ό κ΄λ¦¬νκΈ° μν΄ νλ‘μΈμ€μ μμ±κ³Ό λμμ κ³ μ ν PCBλ₯Ό μμ±νλ€.
μ€λ λλ νλ‘μΈμ€μ μ€ν λ¨μ.
ν νλ‘μΈμ€ λ΄μμ λμλλ μ¬λ¬ μ€ν νλ¦μΌλ‘ νλ‘μΈμ€ λ΄μ μ£Όμ 곡κ°μ΄λ μμμ 곡μ ν μ μλ€.
κ΅¬μ± - μ€λ λID, νλ‘κ·Έλ¨ μΉ΄μ΄ν°, λ μ§μ€ν° μ§ν©, μ€ν
νλμ νλ‘μΈμ€λ₯Ό λ€μμ μ€ν λ¨μλ‘ κ΅¬λΆνμ¬ μμ(μ½λ, λ°μ΄ν° μΉμ
, μ΄λ¦° νμΌ, μ νΈ)μ 곡μ .
μμμ μμ±κ³Ό κ΄λ¦¬μ μ€λ³΅μ±μ μ΅μννμ¬ μν λ₯λ ₯μ ν₯μμν€λ κ²μ λ©ν°μ€λ λ©μ΄λΌκ³ νλ€.
μ΄ κ²½μ° κ°κ°μ μ€λ λλ λ
립μ μΈ μμ
μ μνν΄μΌ νκΈ° λλ¬Έμ κ°μμ μ€νκ³Ό PC λ μ§μ€ν° κ°μ κ°κ³ μλ€.
(λ
립μ μΈ λ©λͺ¨λ¦¬ μμμ μ μ₯λ¨)
μ€νμ μ€λ λλ§λ€ λ
립μ μΌλ‘ ν λΉνλ μ΄μ
μ€ν : ν¨μ νΈμΆ μ μ λ¬λλ μΈμ, λ°ν μ£Όμ, λ§€κ°λ³μ λ±μ μ μ₯νκΈ° μν΄ μ¬μ©λλ λ©λͺ¨λ¦¬ 곡κ°
λ°λΌμ μ€ν λ©λͺ¨λ¦¬ 곡κ°μ΄ λ
립μ μ΄λΌλ κ²μ λ
립μ μΈ ν¨μ νΈμΆμ΄ κ°λ₯νλ€λ κ².
-> λ
립μ μΈ μ€ν νλ¦μ΄ μΆκ°λλ κ².
**PC λ μ§μ€ν°λ₯Ό μ€λ λλ§λ€ λ 립μ μΌλ‘ ν λΉνλ μ΄μ
PC κ°μ μ€λ λκ° λͺ
λ Ήμ΄μ μ΄λκΉμ§ μννμλμ§λ₯Ό λνλ.
μ€λ λλ CPUλ₯Ό ν λΉ λ°κ³ μ€μΌμ€λ¬μ μν΄ λ€μ μ μ λΉν¨.
λλ¬Έμ λͺ
λ Ήμ΄κ° μ°μμ μΌλ‘ μνλμ§ λͺ»νκ³ μ΄λ λΆλΆκΉμ§ μννλμ§ κΈ°μ΅ ν΄μΌνλ€.
λ°λΌμ, PC λ μ§μ€ν°λ₯Ό λ
립μ μΌλ‘ ν λΉνλ€.
1μ°¨ μ μ₯μ₯μΉμ ν΄λΉνλ λ©μΈ λ©λͺ¨λ¦¬μ 2μ°¨ μ μ₯μ₯μΉμ ν΄λΉνλ νλλμ€ν¬, NANDλ±μ κ΄λ¦¬νλ κΈ°λ₯μ΄λ€.
λ€νΈμνΉμ μ»΄ν¨ν° νμ©μ ν΅μ¬κ³Όλ κ°μμ‘λ€.
TCP/IP κΈ°λ°μ μΈν°λ·μ μ°κ²°νκ±°λ, μμ© νλ‘κ·Έλ¨μ΄ λ€νΈμν¬λ₯Ό μ¬μ©νλ €λ©΄ μ΄μ체μ μμ λ€νΈμν¬ νλ‘ν μ½μ μ§μν΄μΌ νλ€. νμ¬ μμ© OSλ€μ λ§μ λ€νΈμν¬ νλ‘ν μ½μ μ§μνλ€.
μ°λ¦¬κ° μ¬μ©νλ PCλ μ€μ§ ν μ¬λμ κ²μΌκΉ? μλλ€.
ν PCμμ μ¬λ¬ μ¬λμ΄ μ¬μ©λ μλ μμΌλ―λ‘ μ΄μ체μ λ κ° κ³μ μ κ΄λ¦¬νλ κΈ°λ₯μ΄ νμν¨.
-> νμΌμ΄λ μμ€ν
μμμ μ κ·Ό κΆνμ μ§μ ν μ μλλ‘ μ§μνλ κ²μ΄ μ¬μ©μ κ΄λ¦¬ κΈ°λ₯
μ΄μ체μ λ μμ€ν μ μμ, νλμ¨μ΄λ₯Ό κ΄λ¦¬νλ€. μμ€ν μλ μ¬λ¬ νλμ¨μ΄κ° λΆμ΄μμ. μ΄λ€μ μ΄μ체μ μμ μΈμνκ³ κ΄λ¦¬νκ² λ§λ€μ΄ μμ© νλ‘κ·Έλ¨μ΄ νλμ¨μ΄λ₯Ό μ¬μ©ν μ μκ² λ§λ€μ΄μΌ ν¨.
νλ‘μΈμ€ : νλ‘κ·Έλ¨μ λ©λͺ¨λ¦¬ μμμ μ€νμ€μΈ μμ
μ€λ λ : νλ‘μΈμ€ μμμ μ€νλλ μ¬λ¬ νλ¦ λ¨μ
κΈ°λ³Έμ μΌλ‘ νλ‘μΈμ€λ§λ€ μ΅μ 1κ°μ μ€λ λ 보μ 
νλ‘μΈμ€λ κ°κ° λ³λμ μ£Όμκ³΅κ° ν λΉ(λ 립μ )
μ€λ λλ stackλ§ λ
립μ μΌλ‘ ν λΉλ°κ³ λλ¨Έμ§ μμμ ν νλ‘μΈμ€μμ μλ‘ κ³΅μ
νλμ νλ‘μΈμ€κ° μμ±λ λ, κΈ°λ³Έμ μΌλ‘ νλμ μ€λ λ κ°μ΄ μμ±.
νλ‘μΈμ€λΌλ¦° μμ λ§μ κ³ μ 곡κ°κ³Ό μμμ ν λΉλ°μ μ¬μ©νλλ° λ°μ
μ€λ λλ λ€λ₯Έ μ€λ λμ 곡κ°, μμμ 곡μ νλ©΄μ μ¬μ©λλ€. (μ½λ, λ°μ΄ν°, ν)
"μ μ΄λ κ² κ³΅κ°μ λλκ±ΈκΉ?"
μ΅λν λ°μ΄ν°λ₯Ό 곡μ νμ¬ λ©λͺ¨λ¦¬ μ¬μ© ν¨μ¨μ±κ³Ό νλ‘μΈμ€ μ€νμ μ μ°μ±μ λμ΄κΈ° μν¨.
κ° λ©λͺ¨λ¦¬λ₯Ό ꡬλΆν¨μΌλ‘μ¨ λ©λͺ¨λ¦¬ ν λΉκ³Ό, μ κ·Ό ν¨ν΄μ μ΅μ ννκ³ , ν΄λΉ μ κ·Όμ λ§λ λ©λͺ¨λ¦¬ μμλ§ κ΅¬λΆνμ¬ ν λΉλ μ μλ€.
κ·Έλ¬λ©΄ Stackκ³Ό Dataλ μ ꡬλΆμ§μμ§?
μ€νμ ꡬ주μ νΉμ±κ³Ό μ μ λ³μμ νμ©μ±μ μν¨.
μμ²λΌ λ§€κ°λ³μ, ν¨μμ μ λ¬λ μΈμ, λ°ν μ£Όμ λ±μ λμ€μ λ€μ΄κ° κ²λΆν° μ’ λ£λλ€.
λ°λΌμ μ€νμ νμ©νμ¬ ν¨μ νΈμΆμλ§ νμν λ§€κ°λ³μλ₯Ό ν¨μ λ΄μμ μ°Έμ‘° λ° μ¬μ©νκ³ ,
ν¨μκ° μ’
λ£λ λ λ°λ‘ μ κ±°νλ€.
νλ‘κ·Έλ¨μ ν¨μμ μ§μλ³μλ, LIFO(νμ μ μΆ) νΉμ±μ κ°μ§ μ€νμμ μ€νλ¨.
μ΄λ‘μ¨ μ¬λ¬ ν¨μμμ 곡ν΅μΌλ‘ μ°μ΄λ μ μ λ³μλ λ°λ‘ μ§μ ν΄μ λ©λͺ¨λ¦¬λ₯Ό μλ μ μλ€.
λ©λͺ¨λ¦¬ ꡬλΆμ 물리μ μΌλ‘ νλ?
μλλ€. λ©λͺ¨λ¦¬ μμμ 물리μ μΌλ‘ ꡬλΆν κ²μ΄ μλ, μΈκ·Έλ¨ΌνΈλΌλ νλ‘μΈμ€λ₯Ό ꡬλΆνλ λ
Όλ¦¬μ μΈ λ¨μλ‘ κ΅¬λΆνμλ€.
μ΄μ체μ λ μ΄ μΈκ·Έλ¨ΌνΈλ₯Ό μ¬μ©ν΄ λ©λͺ¨λ¦¬λ₯Ό ꡬλΆνλ€.
"νλμ νλ‘κ·Έλ¨μ μ¬λ¬ κ°μ νλ‘μΈμ€λ‘ ꡬμ±νμ¬ κ° νλ‘μΈμ€κ° λ³λ ¬μ μΌλ‘ μμ μ μννλ κ²"
μ₯μ : μμ μ± (λ©λͺ¨λ¦¬ μΉ¨λ² λ¬Έμ λ₯Ό OS μ°¨μμμ ν΄κ²°)
λ¨μ : κ°κ° λ
립λ λ©λͺ¨λ¦¬ μμμ κ°κ³ μμ΄, μμ
λμ΄ λ§μ μλ‘ μ€λ²ν€λ λ°μ.
(Context Switching μΌλ‘ μΈν μ±λ₯ μ ν)
?. Context Switching
νλ‘μΈμ€μ μν μ 보λ₯Ό μ μ₯νκ³ λ³΅μνλ μΌλ ¨ κ³Όμ
μ¦, λμ μ€μΈ νλ‘μΈμ€κ° λκΈ°νλ©΄μ ν΄λΉ νλ‘μΈμ€μ μνλ₯Ό 보κ΄νκ³ , λκΈ°νκ³ μλ λ€μ μλ²μ νλ‘μΈμ€κ° λμνλ©΄μ μμ μ΄ μ΄μ μ 보κ΄ν νλ‘μΈμ€ μνλ₯Ό 볡ꡬνλ κ³Όμ .
-> νλ‘μΈμ€λ κ° λ 립λ λ©λͺ¨λ¦¬ μμμ ν λΉλ°μ μ¬μ©λλ―λ‘, μΊμ λ©λͺ¨λ¦¬ μ΄κΈ°νμ κ°μ λ¬΄κ±°μ΄ μμ μ΄ μ§νλμμ λ μ€λ²ν€λκ° λ°μν λ¬Έμ κ° μ‘΄μ¬ν¨.
"νλμ μμ© νλ‘κ·Έλ¨μμ μ¬λ¬ μ€λ λλ₯Ό ꡬμ±ν΄ κ° μ€λ λκ° νλμ μμ μ μ²λ¦¬νλ κ²"
νλμ νλ‘μΈμμμ μ¬λ¬κ°μ μ€λ λκ° λμμ μ€νλλ κ²μ΄ μλλ€!
CPUλ νλμ μ€λ λλ§ μ€ν κ°λ₯νλ€. λ°λΌμ λ©ν° μ€λ λλ CPUμμ μ€λ λκ° ν λΉλ°λ μκ°μ λΆν νμ¬ μμ μ ν λΉ λ°λ κ²μ΄λ€.
κ° μ€λ λκ° μΌμ μκ°λμ CPUλ₯Ό ν λΉλ°μ κ° μ€λ λκ° μμ μ μ²λ¦¬νλ κ².
μ₯μ : λ 립μ μΈ νλ‘μΈμ€μ λΉν΄ 곡μ λ©λͺ¨λ¦¬λ§νΌμ μκ°, μμ μμ€μ΄ κ°μ. μ μ, μ μ λ³μ 곡μ κ°λ₯.
λ¨μ : μμ μ± λ¬Έμ . νλμ μ€λ λκ° λ°μ΄ν° 곡κ°μ λ§κ°λ¨λ¦¬λ©΄ λͺ¨λ μ€λ λκ° μλ λΆκ°λ₯. (곡μ λ©λͺ¨λ¦¬λΌ)
μνΈ λ°°μ²΄ , μ§ν , νμ λ λκΈ° λ₯Ό μΆ©μ‘±ν΄μΌν¨.μ μ : νλ‘κ·Έλ¨μ μ€ννλ λμ€μ μκΈ°μΉ μμ μν©μ΄ λ°μν κ²½μ° νμ¬ μ€ν μ€μΈ μμ μ μ¦μ μ€λ¨νκ³ , λ°μλ μν©μ λν μ°μ μ²λ¦¬κ° νμν¨μ CPUμκ² μ리λ κ².
νμ¬ μνμ€μΈ μΌλ³΄λ€ λ μ€μν μΌ(ex. μ
μΆλ ₯, μ°μ μμ μ°μ°) λ±μ΄ λ°μνλ©΄ κ·Έ μΌμ λ¨Όμ μ²λ¦¬νκ³ λμ νλ μΌμ κ³μ ν΄μΌνλ€.
-> μμ€ν
μ΄ μΈλΆ λλ λ΄λΆμ μ¬κ±΄μ λ°μν΄μΌ ν λ.
μΈλΆ/λ΄λΆ μΈν°λ½νΈ : CPUμ νλμ¨μ΄ μ νΈμ μν΄ λ°μ
μννΈμ¨μ΄ μΈν°λ½νΈ : λͺ
λ Ήμ΄μ μνμ μν΄ λ°μ
μΈλΆ μΈν°λ½νΈ
μ μ μ΄μ , κΈ°κ³ μ°©μ€ , μΈλΆ μ νΈ , μ
μΆλ ₯λ΄λΆ μΈν°λ½νΈ
μννΈμ¨μ΄ μΈν°λ½νΈ

νλ‘κ·Έλ¨ μ€ν μ€ μΈν°λ½νΈ λ°μ.
1. λ°μλ μ₯μΉμμ μΈν°λ½νΈ μμ² μ νΈλ CPUμ 보λΈλ€.
2. CPUλ νμ¬ μν μ€μΈ νλ‘κ·Έλ¨μ λ©μΆκ³ , μΈν°λ½νΈ μμ² μ νΈλ₯Ό κ²μΆνλ€.
3. μΈν°λ½νΈ μλ΅ μ , CPUλ νμ¬ μμ
μν(μν λ μ§μ€ν°, νλ‘κ·Έλ¨ μΉ΄μ΄ν°(PC)) λ±μ μ€νμ μ μ₯.
4. μΈν°λ½νΈμ μλ³μλ₯Ό ν΅ν΄ μΈν°λ½νΈ μλΉμ€ 루ν΄(ISR)μ μ£Όμλ‘ μ ννμ¬ ISRμ μ€νμν¨λ€.
(ISRμ μΈν°λ½νΈλ₯Ό μ²λ¦¬νλ μ½λ. ν΄λΉ μ₯μΉμ λλΌμ΄λ²λ μ΄μ체μ μΌλΆμΌ μ μλ€.)
5. ISRμ μλ£νλ©΄. CPUλ μΈν°λ½νΈ λ°μ μ μ μ₯λ μμ
μνλ₯Ό 볡μνμ¬ μ€λ¨λ νλ‘κ·Έλ¨μ κ³μ μ€νμν¬ μ μλλ‘ νλ€.
컨νΈλ‘€λ¬λ νΉμ ν μ΄λ€ μΌμ ν μκΈ°λ₯Ό μκΈ° μν΄ κ³μ μ²΄ν¬ ν΄μΌν¨.(μ΄λ₯Ό ν΄λ§μ΄λΌκ³ νλ€)
ν΄λ§μ νλ μκ°μ μλ μΌμ μ§μ€ν μ μμ΄ κΈ°λ₯μ΄ μ λλ‘ μνλμ§ λͺ»νλ€.
ν΄λ§ λ°©μ
μ¬μ©μκ° λͺ
λ Ήμ΄λ₯Ό μ¬μ©ν΄ μ
λ ₯ νμ κ°μ κ³μ μ½μ΄ λ³νλ₯Ό μμλ΄λ λ°©μ
μΈν°λ½νΈ μμ² νλκ·Έλ₯Ό μ°¨λ‘λ‘ λΉκ΅νμ¬ μ°μ μμκ° κ°μ₯ λμ μΈν°λ½νΈ μμμ μ°Ύμ μ΄μ λ§λ μΈν°λ½νΈ μλΉμ€ 루ν΄μ μννλ€. (νλμ¨μ΄μ λΉν΄ μλκ° λλ¦Ό)
μΈν°λ½νΈ λ°©μ
MCU μμ²΄κ° νλμ¨μ΄μ μΌλ‘ λ³νλ₯Ό 체ν¬νμ¬ λ³ν μμλ§ μΌμ ν λμμ νλ λ°©μ
μΈν°λ½νΈ λ°©μμ νλμ¨μ΄λ‘ μ§μμ λ°μμΌ νλ μ μ½μ΄ μμ§λ§, ν΄λ§μ λΉν΄ μ μνκ² λμκ°λ₯.
λ°λΌμ μ€μκ° λμμ΄ νμν λλ νμμ μΈ κΈ°λ₯
μ¦, μΈν°λ½νΈλ λ°μμκΈ°λ₯Ό μμΈ‘νκΈ° νλ κ²½μ° μ»¨νΈλ‘€λ¬κ° κ°μ₯ λΉ λ₯΄κ² λμν μ μλ λ°©λ²
"μμ€ν μ½μ μΌλ°μ μΌλ‘ νλμ¨μ΄μ μνΈμμ©μ νκΈ°μν΄ μ΄μ체μ μ κΈ°λ₯μ μ€νλ€."
fork(), exec(), wait()μ κ°μ κ²λ€μ Process μμ±κ³Ό μ μ΄λ₯Ό μν System Call
νμ¬ νλ‘μΈμ€μ κ°μ νλ‘κ·Έλ¨ μ½λλ₯Ό κ°μ§ μμ νλ‘μΈλ₯Ό μμ±νλ€.
λμΌν μ½λλ₯Ό μ€ννμ§λ§ μ체μ μΈ νλ‘μΈμ€ IDμ λ©λͺ¨λ¦¬ 곡κ°μ κ°μ§λ€.
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char *argv[]) {
printf("pid : %d", (int) getpid()); // pid : 29146
int rc = fork(); // μ£Όλͺ©
if (rc < 0) {
exit(1);
} // (1) fork μ€ν¨
else if (rc == 0) { // (2) child μΈ κ²½μ° (fork κ°μ΄ 0)
printf("child (pid : %d)", (int) getpid());
}
else { // (3) parent case
printf("parent of %d (pid : %d)", rc, (int)getpid());
}
}
pid : 29146
parent of 29147 (pid : 29146)
child (pid : 29147)
[ν΄μ]
int rc = fork() μμ rcμλ λΆλͺ¨ νλ‘μΈμ€μ μμ νλ‘μΈμ€ μ½λμμ λ€λ₯΄κ² μ μ₯λ¨.
λ°λΌμ ifλ¬Έμμλ
else{... λ¨Όμ μ€νλ¨else if(rc == 0){ .. λ¨Όμ μ€νλ¨μμ νλ‘μΈμ€κ° μ’ λ£λ λκΉμ§ κΈ°λ€λ¦¬λ μμ
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
int main(int argc, char *argv[]) {
printf("pid : %d", (int) getpid()); // pid : 29146
int rc = fork(); // μ£Όλͺ©
if (rc < 0) {
exit(1);
} // (1) fork μ€ν¨
else if (rc == 0) { // (2) child μΈ κ²½μ° (fork κ°μ΄ 0)
printf("child (pid : %d)", (int) getpid());
}
else { // (3) parent case
int wc = wait(NULL) // μΆκ°λ λΆλΆ
printf("parent of %d (wc : %d / pid : %d)", wc, rc, (int)getpid());
}
}
[ν΄μ]
wait()μ ν΅ν΄ μμ νλ‘μΈμ€μ μ€νμ΄ λλ λκΉμ§ κΈ°λ€λ¦¬κ² λλ€.
λ°λΌμ λΆλͺ¨ νλ‘μΈμ€κ° μ€ν λλλΌλ, wait()μ μμ νλ‘μΈμ€κ° λλκΈ° μ κΉμ§ return νμ§ μμΌλ―λ‘, λ°λμ "child..." κ° λ¨Όμ μ€νλ¨.
λ¨μ forkλ λμΌν νλ‘μΈμ€μ λ΄μ©μ μ¬λ¬ λ² λμν λ μ¬μ©ν¨
CPUκ° νλ‘μΈμ€κ° μ¬λ¬κ°μΌ λ, CPU μ€μΌμ€λ§μ ν΅ν΄ κ΄λ¦¬νλ κ²μ λ§ν¨.
μ΄λ, CPUλ κ° νλ‘μΈμ€λ€μ΄ λκ΅°μ§ μμμΌ κ΄λ¦¬κ° κ°λ₯ν¨.
νλ‘μΈμ€λ€μ νΉμ§μ κ°κ³ μλ κ²μ΄ λ°λ‘ Process Metadata
Process Metadata
μ΄ λ©νλ°μ΄ν°λ νλ‘μΈμ€κ° μμ±λλ©΄ PCBμ μ μ₯λ¨.
νλ‘μΈμ€ λ©νλ°μ΄ν°λ€μ μ μ₯ν΄ λμ κ³³, ν PCB μμλ ν νλ‘μΈμ€μ μ λ³΄κ° λ΄κΉ.
νλ‘κ·Έλ¨ μ€ν -> νλ‘μΈμ€ μμ± -> νλ‘μΈμ€ μ£Όμ 곡κ°μ(μ½λ, λ°μ΄ν°, μ€ν) μμ±
-> μ΄ νλ‘μΈμ€μ λ©νλ°μ΄ν°λ€μ΄ PCBμ μ μ₯
CPUμμλ νλ‘μΈμ€ μνμ λ°λΌ κ΅μ²΄μμ μ΄ μ΄λ£¨μ΄μ§λ€. (μΈν°λ½νΈκ° λ°μν΄μ ν λΉλ°μ νλ‘μΈμ€κ° λκΈ°λκ³ λ€λ₯Έ νλ‘μΈμ€κ° μ€νλ λ)
μ΄λ, μμΌλ‘ λ€μ μνν λκΈ°μ€μΈ νλ‘μΈμ€μ κ΄ν μ μ₯(μν) κ°μ PCBμ μ μ₯ν¨.
Linked List λ°©μμΌλ‘ κ΄λ¦¬λλ€.
PCB List headμ PCBλ€μ΄ μμ±λ λλ§λ€ λΆκ² λλ€. μ£Όμ κ°μΌλ‘ μ°κ²°μ΄ μ΄λ£¨μ΄μ Έμλ μ°κ²° 리μ€νΈμ΄κΈ° λλ¬Έμ μ½μ μμ κ° μ©μ΄νλ€.
μ¦, νλ‘μΈμ€κ° μμ±λλ©΄ ν΄λΉ PCBκ° μμ±λκ³ νλ‘μΈμ€ μλ£μ μ κ±°λλ€.
μ΄λ κ² μνμ€μΈ νλ‘μΈμ€λ₯Ό λ³κ²½ν λ, CPUμ λ μ§μ€ν° μ λ³΄κ° λ³κ²½λλ κ²μ Context Switching μ΄λΌκ³ νλ€.
CPUκ° μ΄μ νλ‘μΈμ€ μνλ₯Ό PCBμ μ μ₯νκ³ , λ λ€λ₯Έ νλ‘μΈμ€ μ 보λ₯Ό PCBμ μ½μ΄ λ μ§μ€ν°μ μ μ¬νλ κ³Όμ
λ³΄ν΅ μΈν°λ½νΈ λ°μνκ±°λ, μ€ν μ€μΈ CPU μ¬μ© νκ°μκ°μ λͺ¨λ μλͺ¨νκ±°λ, μ μΆλ ₯μ λκΈ°ν΄μΌ νλ κ²½μ° λ°μνλ€.
κ³ΌλΆνλΌλ λ»μΌλ‘ λ³΄ν΅ μμ’μ λ§λ‘ λ§μ΄ μ°μΈλ€.
νμ§λ§ νλ‘μΉμ€ μμ μ€ OverHeadλ₯Ό κ°μν΄μΌ νλ μν©μ΄ μλ€.
νλ‘μΈμ€λ₯Ό μννλ€κ° μ
μΆλ ₯ μ΄λ²€νΈκ° λ°μν΄μ λκΈ° μνλ‘ μ νμνΉ
μ΄λ, CPUλ₯Ό κ·Έλ₯ λκ² λλλ κ²λ³΄λ€ λ€λ₯Έ νλ‘μΈμ€λ₯Ό μνμν€λ κ²μ΄ ν¨μ¨μ
μ¦, CPUμ κ³μ νλ‘μΈμ€λ₯Ό μνμν€λλ‘ νκΈ° μν΄μ λ€λ₯Έ νλ‘μΈμ€λ₯Ό μ€νμν€κ³ Context Switching νλ κ².
"μΈν°λ½νΈ λ°μνλ©΄ νμ¬ μμ λκΈ°νκ³ ν΄λΉ μΈν°λ½νΈ νλ‘μΈμ€ μμ μ νλκ² λΉμ°νκ±° μλκ°"