Process, Processor, Thread
2024-04-27. 20:19 : κΈ κ³μΉ.
2023-11-10-Process-Processor: π Process, Processor
π« Q
- νλ‘μΈμ€, νλ‘μΈμ, μ€λ λμ λν΄ μ€λͺ ν΄ μ£ΌμΈμ.
- νλ‘μΈμ€μ μ€λ λμ μ°¨μ΄μ μ 무μμΈκ°μ?
π« Processor | νλ‘μΈμ
λ¨μ§ βνλ‘μΈμβ λΌλ μ©μ΄λ§ μ¬μ©νμμ λ, μΌλ°μ μΌλ‘ CPU.
RAMμ μ μ₯λ νλ‘κ·Έλ¨-κΈ°κ³ λͺ
λ Ήμ΄λ₯Ό ν΄μ/μ²λ¦¬νλ μ»΄ν¨ν°μ ν λΆλΆ.
μ²λ¦¬κΈ°λ‘ λΆλ¦¬κΈ°λ νλ€.
GPU, DMAμ κ°μ΄ μ νλ κΈ°λ₯λ§μ μννλ νλ‘μΈμλ μλ€.
π« Process | νλ‘μΈμ€
- λ²νΌ Buffer
- μμ λ³΄κ΄ μ₯μ
- ~= Cache μ’ λ³΅μ¬κ° λΉ λ₯Έ κ³³μ λλ μμ λ³΄κ΄ μ₯μ
νλ‘μΈμ€ λ° μ€λ λ κ΄λ¦¬
- νλ‘μΈμ€
- νλ‘κ·Έλλ° μΈμ΄λ‘ μμ±λ νλ‘κ·Έλ¨μ΄, λͺ©μ μ½λλ‘ (κΈ°κ³μ΄ μ½λ)λ‘ λ²μλμ΄ λμ€ν¬μ μ μ₯λ ν μ΄μ체μ μ λμμΌλ‘ μ£ΌκΈ°μ΅μ₯μΉμ μ μ¬λμ΄ μ€ν μ€μΈ νλ‘κ·Έλ¨
- ν λ§λλ‘ λ©λͺ¨λ¦¬μ μ μ¬λμ΄ μ€ν μ€μ μλ νλ‘κ·Έλ¨
- νλ‘μΈμ€ μμ±
- κ³ μ λ²νΈ PID Process Identification Number
- λ©λͺ¨λ¦¬ μ 보
- μν Status
- μ§νμ§μ Counter
- λ¬Έλ§₯ Context
- μ°μ μμ Priority
- μμλͺ©λ‘ Process Resource
- νκ³μ 보 Accounting Information
- κΈ°ν
- LDA x
- ADD y
- STA z
β z = x + y;
- μ€κ°μ΄ νμμμμ΄ λλ©΄ κ·Έ μμ μ μ€λ μ·μ μ μ₯νκ³
- λ€μ λμμμ λ λΆλ¬μ μ€ν, μ°μμ±
μ μ₯νλ CPUμ λ΄μ© = λ¬Έλ§₯ Context
- νλ‘μΈμ€ κ΄λ¦¬ λΈλ‘ PCB
- νλ‘μΈμ€λ OSμ κ΄λ¦¬ λμ
- νλ‘μΈμ€κ° νλμ κ°μ²΄λ‘ λ±λ‘λ¨
- νλ‘μΈμ€μ κ΄ν λͺ¨λ μ λ³΄κ° PCbμ κΈ°λ‘λμ΄ κ΄λ¦¬λ¨
- PCBμ μ΄ κ°μκ° κ³§ κ΄λ¦¬ κ°λ₯ν μ΅λ νλ‘μΈμ€μ μλ₯Ό μλ―Έν¨
- νλ‘μΈμ€λ OSμ κ΄λ¦¬ λμ
- νλ‘μΈμ€ κ΄λ¦¬ (μν μ²μ΄)
- μ΄μμ 체λ νλ‘μΈμ€μ μ²λ¦¬κ³Όμ μμ νλ‘μΈμ€μ νλμ λ°λΌ ν΄λΉ νλ‘μΈμ€λ₯Ό μ μ ν μνλ‘ μ²μ΄ μν¨λ€
- @ μ€ν μνκ° μλ λͺ¨λ νλ‘μΈμ€λ ν΄λΉ μνμ λκΈ°μ΄μ κ΄λ¦¬λλ€
- νλ‘μΈμ€ μν
- μ€λΉ Ready μν
- μ€ν Running μν
- λκΈ° Blocked μν
- 보λ₯ Suspended μν
- λκΈ°-보λ₯ Block-Suspended μν
- μ’ λ£ Terminated μν (Dispatch λ°°κΈνλ€)
- μ€λ λ Thread (μ€)
- νλ‘κ·Έλ¨μ΄ μ€νλλ νλ¦ μ€κΈ°
- λ³΄ν΅ νλ‘μΈμ€λ νλμ μ€ν μ€κΈ° μ¦, νλμ μ€λ λλ₯Ό κ°μ§ (λ¨μΌ μ€λ λ νλ‘μΈμ€)
- I.E. C νλ‘κ·Έλ¨μ main() ν¨μμμλΆν° μμνλ μ€νμ€κΈ°
- λ€μ€ μ€λ λ νλ‘μΈμ€ Multi Thread Process
- λ€μ€ μ€λ λ νλ‘μΈμ€ κ°λ
- νλ‘μΈμ€λ νλμ΄μ§λ§, μ¬λ¬ κ°μ μ€ν μ€κΈ°(μ€λ λ)λ₯Ό κ°μ§
- OSλ μ€λ λ λ³λ‘ λ 립μ μΈ μν μ²μ΄λ₯Ό κ΄λ¦¬ν¨
- μ¦, μ€λ λ λ³λ‘ ~
- λ€μ€ μ€λ λ νλ‘μΈμ€ κ°λ
~
- CPUκ° λ°λμ μ¬λ¬ κ°μΌ νμλ μμ
- CPUκ° μ¬λ¬ κ°μΌ κ²½μ°λ μ€λ λλ€μ΄ λ³λ ¬μ²λ¦¬λ¨
CPUκ° νλμΌ κ²½μ°λ μ€λ λλ€μ΄ λ³νμ²λ¦¬λ¨
LDA 100 μ£Όμ 100
LDA_S 100 - μ£Όμ 100 + Stack Pointer
μλμ£ΌμκΈ°λ²
μ€λ λ μμ± λ° μ κ±°
- νλ‘μΈμ€ μμ± λ° μ κ±°
- νλ‘μΈμ€ μμ±
- μλ‘μ΄ νλ‘μΈμ€λ μ΄λ―Έ μ€ν μ€μΈ λ€λ₯Έ νλ‘μΈμ€κ° OSμ μ€μ²ν¨μΌλ‘μ¨ νμ
- μ΄λ€μ λΆλͺ¨ νλ‘μΈμ€ Parent Processμ μμ νλ‘μΈμ€ Child Process κ΄κ³κ° λ¨
- λ¨λ§κΈ° (ν€λ³΄λ) μ¬μ©μλ€μ μ€ννκ³ μ νλ νλ‘κ·Έλ¨μ μ΄λ¦μ μ (λͺ λ Ήμ΄ ν΄μκΈ°)μ μ λ¬νμ¬ μλ‘ νμ¬κΈ νλ‘κ·Έλ¨ μμ±μ OSμκ² μμ²νλλ‘ ν¨
- λμ€ν¬ νλ‘κ·Έλλ° λ©λͺ¨λ¦¬λ‘ μ μ¬νμ¬ νλ‘μΈμ€λ₯Ό μμ±νλ OSλΆλΆμ λ‘λ Loader λΌν¨
- νλ‘μΈμ€ μμ±
- νλ‘μΈμ€ μ κ±°
- μ μμ μΈ νλ‘μΈμ€ μ κ±°λ ν΄λΉ νλ‘μΈμ€ μ€μ€λ‘κ° μ΄μ체μ μκ² μμ²ν¨μΌλ‘μ¨ μ΄λ£¨μ΄μ§
- νλ‘μΈμ€ κ° ν΅μ IPC InterProcess Communication
- μΌλ°μ μΈ νλ‘μΈμ€λ€μ μμ ν λ 립λμ΄ λ€λ₯Έ νλ‘μΈμλ€κ³Ό 격리λμ΄ μ 보λ₯Ό κ΅νν μ μμ
- κ±°λν νλ‘κ·Έλ¨μ μκ² λΆλ¦¬ν κ²½μ°, μ΄λ₯Ό νλ‘μΈμ€ κ°μ ν΅μ μλ¨μ΄ μꡬλ¨
- ν΄λΌμ΄μΈνΈ Client β μλ² λͺ¨λΈ
- λνμ μΈ ν΅μ μλ¨μ νμ΄ν, λ©μμ§, ν, 곡μ λ©λͺ¨λ¦¬, μΈλ§ν¬, μμΌ(μΈν°λ·)μ λ€ μ μμ
- ν΅μ κ²½λ‘λ μ΄μ체μ μ μν΄ μ 곡λκΈ° λλ¬Έμ κ°κ°μ ν΅μ μλ¨λ§λ€ κ³ μ μ μ μ μ μ°¨λ₯Ό λ°λΌμΌ ν¨
- νλ‘μΈμ€ ν΅μ
- μ€νμ€μΈ νλ‘μΈμ€μ λν μ΄λ€ μ‘°μΉλ₯Ό μ·¨νλμΌ
- νλ‘μΈμ€ ν΅μ μλ¨
- OSκ° μ 곡νλ μλΉμ€ (μμ€ν μ½)μ μ΄μ©
- μ λμ€/리λ μ€μ κ²½μ° kill() μμ€ν μ½
- νλ‘μΈμ€ ν΅μ μ ν
- κ°μ μ’
λ£ :
- μ€νμ€μΈ νλ‘κ·Έλ¨μ΄ μ€μ€λ‘ μ’ λ£νκΈ° μ μ 무쑰건 κ°μ λ‘ μ’ λ£νλλ‘ νλ€
- μΌμ μ μ§ :
- μμ ν μ’ λ£νλλ‘ νλ κ²μ μλκ³ , μμλ‘ CPUμ ν λΉμ λ°μ§ λͺ»νμ¬ λ μ΄μμ μ€νμ΄ μ΄λ£¨μ΄μ§μ§ μλλ‘ νλ€
- μ€ν μ κ° :
- μΌμ μ€μ§ μνμ μλ νλ‘μΈμ€κ° CPUλ₯Ό ν λΉ λ°μμ κ³μ μνν μ μλλ‘ νλ€.
- μ°μ μμμ λ°λΌ λ€λ₯Έ νλ‘μΈμ€μ 곡ννκ² CPUλ₯Ό ν λΉλ°λλ€
- μ½μ μ²λ¦¬ :
- νλ‘κ·Έλ¨μ μμ±ν λ μ½μνλ μ²λ¦¬ λΆλΆλ€μ μ€μκ°μΌλ‘ μ§μνλ€
- μ°μ μμ λ³κ²½ :
- μ€νμ€μΈ νλ‘κ·Έλ¨μ μ°μ μμλ₯Ό μ¬λ¦¬κ±°λ λ΄λ¦°λ€.
- μΌλ° μ¬μ©μλ λ΄λ¦¬κΈ°λ§ κ°λ₯νκ³ ,κ΄λ¦¬μλ μμͺ½ λͺ¨λ κ°λ₯νλ€.
- κ°μ μ’
λ£ :
π« Thread | μ€λ λ
μ€λ λλ νλ‘μΈμ€ λ΄μμ μ€νλλ μμ μ λ¨μλ‘, CPU μμμ ν λΉλ°μ μ€νλ¨.
𫧠배경
- Windows 95 μ΄μ , Windows OSλ μ±κΈ μ€λ λ
- νλ‘κ·Έλ¨ νλκ° λ¬΄ν루νμ λΉ μ§λ©΄ λ€λ₯Έ νλ‘κ·Έλ¨λ λ©μΆ€
- ν νλ‘κ·Έλ¨μ΄ 무ν루νλ₯Ό λλ©΄ λ€λ₯Έ νλ‘κ·Έλ¨μλ μν₯
CPUλ₯Ό λλ μ¨μΌ νλλ° νλ λ°μ μμ΄μ κ·Έλ¬μ§ λͺ»ν¨
- κ·Έλμ CPU κ°μν
- μ΄μ CPUλ₯Ό μ°μ§ λ§κ³ , μ€λ λλ₯Ό CPUμ²λΌ μ¨
- νλ‘μΈμ€μκ² μ€λ λλ₯Ό λλ μ£Όκ³
- κ·Έ μ€λ λκ° μ΄ν리μΌμ΄μ μ μ₯μμλ λ§μΉ CPU μ²λΌ μ¬μ©
- μ΄μ μ¬λ¬ κ°λκΉ, ν μ€λ λκ° λ¬΄ν루νμ λΉ μ Έλ λ€λ₯Έ μ€λ λλ λ©μΆμ§ μμ
λ€λ₯Έ μ€λ λλ μμ μκ² μ£Όμ΄μ§ μ€λ λλ₯Ό μ¬μ©