π§΅ νλ‘μΈμ€μ μ€λ λ: λμμ±μ μ§ν±νλ μ΄μ체μ μ ν΅μ¬
λͺ©μ°¨
1. νλ‘μΈμ€ vs μ€λ λ
μ€ν μ€μΈ νλ‘κ·Έλ¨μ μ΄μ체μ λ‘λΆν° μμμ μ΄λ»κ² ν λΉλ°λλμ λ°λΌ νλ‘μΈμ€μ μ€λ λλ‘ λλ©λλ€.
- νλ‘μΈμ€(Process): μ΄μ체μ λ‘λΆν° μμμ ν λΉλ°λ μμ μ λ¨μμ λλ€. μ€ν μ€μΈ νλ‘κ·Έλ¨ κ·Έ μ체λ₯Ό μλ―Ένλ©°, λ 립λ λ©λͺ¨λ¦¬ μμ(Code, Data, Stack, Heap)μ κ°μ§λλ€.
- μ€λ λ(Thread): νλ‘μΈμ€ λ΄μμ μ€νλλ νλ¦μ λ¨μμ λλ€. νλ‘μΈμ€κ° ν λΉλ°μ μμμ 곡μ νλ©°, λ³λμ Stack μμλ§ λ°λ‘ κ°μ§λλ€.
⨠보μ: IPC (Inter-Process Communication)
νλ‘μΈμ€λ λ
립λ λ©λͺ¨λ¦¬λ₯Ό κ°κΈ° λλ¬Έμ μλ‘ λ°μ΄ν°λ₯Ό μ£Όκ³ λ°μΌλ €λ©΄ λ³λμ ν΅μ λ©μ»€λμ¦(νμ΄ν, μμΌ, 곡μ λ©λͺ¨λ¦¬ λ±)μ΄ νμν©λλ€. λ°λ©΄ μ€λ λλ Heap μμμ 곡μ νλ―λ‘ ν΅μ μ΄ ν¨μ¬ κ°νΈν©λλ€.
2. λμμ±(Concurrency)κ³Ό λ³λ ¬μ±(Parallelism)
- λμμ±(Concurrency): μ±κΈ μ½μ΄μμ μ¬λ¬ μμ μ λ²κ°μ κ°λ©° μ€ννμ¬, λ§μΉ λμμ μ€νλλ κ²μ²λΌ 보μ΄κ² νλ κ²μ λλ€. (λ Όλ¦¬μ κ°λ )
- λ³λ ¬μ±(Parallelism): λ©ν° μ½μ΄μμ μ¬λ¬ μμ μ 물리μ μΌλ‘ λμμ μ€μ λ‘ μ€ννλ κ²μ λλ€. (물리μ κ°λ )
π λ©ν° μ€λ λλ₯Ό νμ©ν΄ μ±κΈ μ½μ΄μμλ λμμ±μ ꡬννκ³ , λ©ν° μ½μ΄μμλ λ³λ ¬μ±μ μ€ννμ¬ νλ‘κ·Έλ¨μ ν¨μ¨μ κ·Ήλνν μ μμ΅λλ€.
3. 컨ν μ€νΈ μ€μμΉ (Context Switching)
CPUκ° ν νλ‘μΈμ€(λλ μ€λ λ)μμ λ€λ₯Έ νλ‘μΈμ€λ‘ μ νν λ, νμ¬ μνλ₯Ό μ μ₯νκ³ μλ‘μ΄ μνλ₯Ό λΆλ¬μ€λ κ³Όμ μ λ§ν©λλ€.
- λΉμ© λ°μ: μ€μμΉμ΄ μΌμ΄λλ λμ CPUλ μλ¬΄λ° μΌμ ν μ μμΌλ―λ‘, λ무 μ¦μ μ€μμΉμ μ€λ²ν€λλ₯Ό λ°μμμΌ μ±λ₯μ λ¨μ΄λ¨λ¦½λλ€.
- μ€λ λμ ν¨μ¨μ±: 컨ν μ€νΈ μ€μμΉμ νλ‘μΈμ€λ³΄λ€ μ€λ λλ₯Ό μ¬μ©ν λ ν¨μ¬ ν¨μ¨μ μ λλ€. 곡μ νλ μμμ΄ λ§μ κ΅μ²΄ν΄μΌ ν μ 보λμ΄ μ κΈ° λλ¬Έμ λλ€.
| κ΅¬λΆ | μ₯μ | λ¨μ |
|---|---|---|
| νλ‘μΈμ€ | λ 립μ μ΄λΌ μμ ν¨ (νλκ° μ£½μ΄λ μν₯ μμ) | μ€μμΉ λΉμ© λμ, μμ 곡μ 볡μ‘(IPC) |
| μ€λ λ | μμ 곡μ λ‘ λΉ λ₯΄κ³ ν¨μ¨μ μ | 곡μ μμ λκΈ°ν λ¬Έμ , νλκ° μ£½μΌλ©΄ μ 체 μν |
4. μλ°μμμ λ©ν°μ€λ λ μ μ΄
π‘ μ€λ λ μμ± λ°©λ²
μλ°μμλ Thread ν΄λμ€λ₯Ό μμλ°κ±°λ, Runnable μΈν°νμ΄μ€λ₯Ό ꡬνν©λλ€. λ€μ€ μμμ΄ λΆκ°λ₯ν μλ° νΉμ±μ Runnable ꡬν λ°©μμ λ κΆμ₯ν©λλ€.
// 1. Runnable μΈν°νμ΄μ€ ꡬν (κΆμ₯)
class MyRunnable implements Runnable {
@Override
public void run() { /* μμ
λ΄μ© */ }
}
new Thread(new MyRunnable()).start();
π λκΈ°νμ νλ¦ μ μ΄
- synchronized λΈλ‘: μ¬λ¬ μ€λ λκ° λμμ κ°μ μμμ μ κ·Όν λ λ°μνλ λ°μ΄ν° μ€μΌμ λ§κΈ° μν μ₯μΉμ λλ€. ν΄λΉ λΈλ‘μ μ§μ νλ μ€λ λλ Lockμ νλν©λλ€.
- Thread.sleep(ms): νμ¬ μ€λ λλ₯Ό μ§μ λ μκ° λμ μΌμ μ μ§(Timed Waiting) μνλ‘ λ§λλλ€.
π ν΅μ¬ μμ½
β ν μ€ μ 리
λμμ±μ μν΄ CPUλ 컨ν μ€νΈ μ€μμΉμ νλ©° μ€λ λλ₯Ό λ²κ°μ μ€ννκ³ , λ°μ΄ν° μΆ©λμ λ§κΈ° μν΄ synchronizedλ‘ μμλ₯Ό μ§ν€λ©°, sleep()μΌλ‘ νλ¦μ μ μ΄ν©λλ€.
'π CS & Infra > Operating System' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| [OS] κ°μ λ©λͺ¨λ¦¬(Virtual Memory) (0) | 2026.04.01 |
|---|---|
| [OS] 리λ μ€ κ΅¬μ‘° - 컀λ(Kernel), μ(Shell), ν°λ―Έλ(Terminal) (0) | 2026.03.12 |
| [OS] 11. λΆμ° μ²λ¦¬ μμ€ν (0) | 2023.10.16 |
| [OS] 10. λ€μ€ μ²λ¦¬ μμ€ν (0) | 2023.10.16 |
| [OS] 09. μ 보 λ³΄νΈ λ° λ³΄μ (0) | 2023.10.16 |