1. νλ‘μΈμ€(Process)
μ€ν μ€μΈ νλ‘κ·Έλ¨μΌλ‘ λμ€ν¬λ‘λΆν° λ©μΈ λ©λͺ¨λ¦¬μ μ μ¬λμ΄ CPUμ ν λΉμ λ°μ μ μλ κ²μ΄λ€. μ΄μ체μ λ‘λΆν° μ£Όμ 곡κ°, νμΌ, λ©λͺ¨λ¦¬ λ±μ ν λΉλ°μΌλ©° μ΄κ²λ€μ μ΄μΉνμ¬ νλ‘μΈμ€λΌκ³ νλ€.
1) νλ‘μΈμ€ μ μ΄ λΈλ‘(Process Control Block, PCB)
- νΉμ νλ‘μΈμ€μ λν μ€μν μ 보(metadata)λ₯Ό μ μ₯νκ³ μλ μ΄μ체μ μ μλ£κ΅¬μ‘°μ΄λ€.
- μ°κ²° 리μ€νΈλ₯Ό μ΄μ©ν΄ λ©μΈ λ©λͺ¨λ¦¬μμ κ΄λ¦¬λλ©° νλ‘μΈμ€ μμ±κ³Ό λμμ κ³ μ ν PCBκ° μμ±λκ³ νλ‘μΈμ€ μλ£ μ μ κ±°λλ€.
- CPU ν λΉ ν μμ μ νλ€κ° νλ‘μΈμ€ μ ν(λ¬Έλ§₯ κ΅ν)μ΄ λ°μνλ©΄, PCBμ μ§ννλ μμ μ λͺ¨λ μ μ₯νκ³ CPUλ₯Ό λ°ννλ€. λ€μ CPUλ₯Ό ν λΉλ°κ² λλ©΄, PCBμ μ μ₯λ λ΄μ©μ λΆλ¬μ μ’ λ£λλ μμ λΆν° λ€μ μμ μ μννλ€.
2) νλ‘μΈμ€ μμ± κ³Όμ
- PCBκ° μμ±λλ©° μ΄μ체μ κ° μ€νν νλ‘κ·Έλ¨μ μ½λλ₯Ό μ½μ΄ λ©λͺ¨λ¦¬μ ν μ€νΈ μμμ μ μ₯νλ€.
- μ΄κΈ°νλ μ μ λ³μμ μ μ λ³μλ₯Ό λ°μ΄ν° μμμ μ μ₯νλ€.
- νκ³Ό μ€νμ μ΄κΈ° λ©λͺ¨λ¦¬ μ£Όμλ§ μ΄κΈ°νλλ€.
- PCBμ μ¬λ¬ μ λ³΄κ° κΈ°λ‘λλ©΄ μ€λΉ νμμ CPU ν λΉμ λκΈ°νλ€.
3) λ©ν° νλ‘μΈμ€
ν μ»΄ν¨ν°μ μ¬λ¬ νλ‘μΈμ(CPU)λ₯Ό μ₯μ°©νμ¬ νλ μ΄μμ νλ‘μΈμ€λ€μ λμμ λ³λ ¬ μ²λ¦¬νλ€. μμ νμ§λ§ κ°κ° λ 립λ λ©λͺ¨λ¦¬ μμμ κ°κ³ μμ΄ μμ λμ΄ λ§μμλ‘ μ€λ²ν€λκ° λ°μνκ³ λ¬Έλ§₯ κ΅νμΌλ‘ μΈν μ±λ₯ μ ν λ°μνλ€.
2. μ€λ λ(Thread)
νλ‘μΈμ€λ³΄λ€ μμ λ¨μλ‘ ν νλ‘μΈμ€ λ΄μμ λμνλ μ¬λ¬ μ€ν νλ¦ λ¨μμ΄λ€.
1) λ©ν° μ€λ λ
νλμ νλ‘μΈμ€λ₯Ό λ€μμ μ€ν λ¨μλ‘ κ΅¬λΆν κ²μ΄λ€. κ°μ νλ‘μΈμ€ λ΄μ λ€λ₯Έ μ€λ λμ μ½λ μμ, λ°μ΄ν° μμ, μ΄λ¦° νμΌμ΄λ μ νΈμ κ°μ μ΄μ체μ μμλ€μ 곡μ νκ³ μμμ μμ±κ³Ό κ΄λ¦¬μ μ€λ³΅μ±μ μ΅μννμ¬ μν λ₯λ ₯μ ν₯μνλ€. κ·Έλ¬λ μμμ 곡μ νλ―λ‘ λκΈ°νλ₯Ό ν΅ν΄ μ€λ λμ μμ μ²λ¦¬ μμμ 곡μ μμμ λν μ κ·Όμ μ μ΄ν΄μΌ νλ€.
κ°κ°μ μ€λ λλ λ 립μ μΈ μμ μ μνν΄μΌ νκΈ° λλ¬Έμ κ°μμ μ€νκ³Ό λ μ§μ€ν°λ₯Ό κ°κ³ μλ€.
- μ€νμ λ 립μ μΌλ‘ ν λΉνλ μ΄μ ? μ€νμ ν¨μ νΈμΆ μ μ λ¬λλ μΈμ, λλμκ° μ£Όμ κ° λ° ν¨μ λ΄μμ μ μΈνλ λ³μ λ±μ μ μ₯νκΈ° μν΄ μ¬μ©λλ λ©λͺ¨λ¦¬ 곡κ°μ΄λ―λ‘ μ€ν λ©λͺ¨λ¦¬ 곡κ°μ΄ λ 립μ μ΄λΌλ κ²μ λ 립μ μΈ ν¨μ νΈμΆμ΄ κ°λ₯νλ€λ κ²μ΄κ³ μ΄λ λ 립μ μΈ μ€ν νλ¦μ΄ κ°λ₯νκ² νλ€.
- λ μ§μ€ν°λ₯Ό λ 립μ μΌλ‘ ν λΉνλ μ΄μ ? μ€λ λλ CPUλ₯Ό ν λΉλ°μλ€κ° μ€μΌμ€λ¬μ μν΄ μ μ λΉνλ€. κ·Έλ κΈ° λλ¬Έμ λͺ λ Ήμ΄κ° μ°μμ μΌλ‘ μνλμ§ λͺ»νκ³ μ΄λ λΆλΆκΉμ§ μννλμ§ κΈ°μ΅ν νμκ° μλ€. λ μ§μ€ν°λ μ€λ λκ° λͺ λ Ήμ΄μ μνλ μ λλ₯Ό λνλΈλ€.
2) μ€λ λ μμ Throughputμ κ΄κ³
μ€λ λκ° μ¦κ°ν¨μ λ°λΌ μ΄λ°μλ Throughputκ° λΉλ‘ν΄μ μ¦κ°νλ€. λ°λ©΄ μΌμ μμ€ μ΄μμ΄ λλ©΄ μ€νλ € Throughputκ° κ°μνλλ° μκ³κ°μ λκΈ°κ² λλ©΄ λ¬Έλ§₯ κ΅ν λΉμ©μ΄ μ¦κ°νκΈ° λλ¬Έμ΄λ€.
3) μ€λ λ ν(Thread Pool)
μμ€ν μ λμμ 보μ₯νλ μ΅λνμ μ€λ λ μμ λν μ νμ΄λ€. μ€λ λ νμ λ§λ€μ΄μ νλ‘μΈμ€κ° μλ‘ μ€νλ λ μ ν΄μ§ μλ§νΌ μ€λ λλ₯Ό λ§λ€κ³ νμ ν λΉνλ€. μ€λ λκ° μμ£Ό μμ±λκ³ μ κ±°λλ μν©μμ μλ‘ μ€λ λλ₯Ό λ§λλ μκ°μ΄ μ€μ μ€λ λκ° λμνλ μκ°λ³΄λ€ κΈΈμ΄μ§ λ μ¬μ©νλ€.
3. νλ‘μΈμ€ vs μ€λ λ
- λ©ν° νλ‘μΈμ€: λ
립μ μΈ λ€μμ νλ‘μΈμ€λ‘ λ©λͺ¨λ¦¬ 곡κ°μ 곡μ νμ§ μλλ€.
- μ₯μ : νλμ νλ‘μΈμ€κ° μ£½λλΌλ λ€λ₯Έ νλ‘μΈμ€μ μν₯μ λΌμΉμ§ μκ³ μ μμ μΌλ‘ μνλ μ μλ€.
- λ¨μ : λ©ν° μ€λ λλ³΄λ€ λ§μ λ©λͺ¨λ¦¬ 곡κ°κ³Ό CPU μκ°μ μ°¨μ§νλ€.
- λ©ν° μ€λ λ: νλμ νλ‘μΈμ€ μμ λ€μμ μ€λ λλ‘ μ€νκ³Ό λ μ§μ€ν°λ₯Ό μ μΈν λ©λͺ¨λ¦¬ 곡κ°μ 곡μ νλ€.
- μ₯μ : λ©ν° νλ‘μΈμ€λ³΄λ€ μ μ λ©λͺ¨λ¦¬ 곡κ°μ μ°¨μ§νκ³ λ¬Έλ§₯ κ΅νμ΄ λΉ λ₯΄λ€.
- λ¨μ : μ€λ₯λ‘ μΈν΄ νλμ μ€λ λκ° μ’ λ£λλ©΄ μ 체 μ€λ λκ° μ’ λ£λ μ μκ³ κ³΅μ μμμΌλ‘ μΈν λκΈ°ν μ²λ¦¬κ° νμνλ€.
1) λ©ν° νλ‘μΈμ€ λμ λ©ν° μ€λ λλ₯Ό μ¬μ©νλ μ΄μ ?
- νλ‘μΈμ€λ₯Ό μμ±νμ¬ μμμ ν λΉνλ μμ€ν μ½μ΄ κ°μνμ¬ μμμ ν¨μ¨μ κ΄λ¦¬κ° κ°λ₯νλ€.
- νλ‘μΈμ€ κ° ν΅μ (IPC)λ³΄λ€ μ€λ λ κ° ν΅μ λΉμ©μ΄ μ μ΄ μμ λ€ κ° λΆλ΄μ΄ κ°μνλ€.
- λ¬Έλ§₯ κ΅ν μ μ€λ λλ μ€νκ³Ό λ μ§μ€ν° μμλ§ λ³κ²½νλ©΄ λλ―λ‘ νλ‘μΈμ€λ³΄λ€ λΉμ©μ΄ μ κ² λ λ€.
2) λ¬Έλ§₯ κ΅ν(Context Switching)
νλμ νλ‘μΈμ€κ° CPUλ₯Ό μ¬μ© μ€μΈ μνμμ λ€λ₯Έ νλ‘μΈμ€μκ² CPUλ₯Ό ν λΉνκΈ° μν΄ μ΄μ νλ‘μΈμ€μ μνλ₯Ό 보κ΄νκ³ μλ‘μ΄ νλ‘μΈμ€ μ 보λ₯Ό μ μ¬νλ μμ μΌλ‘ λ³΄ν΅ μΈν°λ½νΈκ° λ°μνκ±°λ μ€ν μ€μΈ CPU μ¬μ© νκ°μκ°μ λͺ¨λ μλͺ¨νκ±°λ μ μΆλ ₯μ μν΄ λκΈ°ν΄μΌ νλ κ²½μ°μ λ°μνλ€.