μ°λ λλ μ μ¬μ©ν κΉ?
μ€λ λλ₯Ό μ¬μ©νκ² λ λ°°κ²½λ μμ κ²μ΄λ€. μ΄μ λ νλ‘μΈμ€μ λ¬Έμ μ λλ¬Έμ΄λ€.
- νλ‘μΈμ€μμ 컨ν
μ€νΈ μ€μμΉμ΄ λ°μν κ²½μ°, νλ‘μΈμ€ μμ±μ λ무 λ§μ μ€λ²ν€λκ° λ°μνλ€
- νλ‘μΈμ€ μμ±μ PCB μμ±, λ©λͺ¨λ¦¬ ν λΉ, λΆλͺ¨ νλ‘μΈμ€ λ΄μ© λ³΅μ¬ λ± λ§μ μμ μ ν΄μΌνλ€.
- κ·Έ μΈμλ λ€μ λμ¬ νμ΄μ§ ν μ΄λΈ μ°Έμ‘°, μΊμ μ λ°μ΄νΈ λ± λ§μ λΆλΆμμ λ¬Έμ μ μ΄ λ°μ
- νλ‘μΈμ€ κ°μ ν΅μ μ΄ μ΄λ ΅λ€.
- νλ‘μΈμ€λ λ 립μ μΈ κ³΅κ°μ κ°κ³ μμΌλ―λ‘ μλ‘ μΉ¨λ²ν μ μμ΄μ ν΅μ μ΄ νλ€λ€λ μ .
- νλ‘μΈμ€ κ° ν΅μ μ μν΄ λ©λͺ¨λ¦¬ λ§΅, νμ΄ν, μμΌ λ± λ€μν λ°©μμ μ¬μ©νλ€.
νλ‘μΈμ€λ μ λ ₯μ λ μ νλ ForeGorund Processμ κ°μ’ μ²λ¦¬λ₯Ό νλ BackGround Processκ° μ‘΄μ¬νλ€.
κ·Έ μΈμλ CPU μ²λ¦¬λ§ μ§μ€νλ CPU μ§μ€ νλ‘μΈμ€ Interruptλ₯Ό λ€λ£¨λ I/O μ§μ€ νλ‘μΈμ€λ μ‘΄μ¬νλ€.
μμ κ°μ΄ μν μ΄ λλμ΄μ Έμλ νλ‘μΈμ€κ° μ‘΄μ¬ν λ, Foreground μ λν΄ Backgroundκ° μ²λ¦¬νκ³ μΆμ΄λ Foreground νλ‘μΈμ€μ λ©λͺ¨λ¦¬μ μ κ·Όμ ν μ μλ€. κ·Έλμ λ€μν νλ‘μΈμ€ ν΅μ λ°©μμ μ¬μ©νλλ° μκ°μ΄ λ무 μ€λ κ±Έλ¦°λ€λ λ¨μ μ΄ μμλ€.
μμκ°μ λ¬Έμ λ‘ μ€λ λλΌλ κ°λ μ μκ°νκ² λμλ€.
μ΄μ°¨νΌ νλ‘μΈμ€λ₯Ό μ²λ¦¬νκΈ° μν΄ fork() μ κ°μ νλ‘μΈμ€ μμ± System Callμ ν΅ν΄ μμ μ μ²λ¦¬νλλ°, λΉ λ₯Έ μ²λ¦¬λ₯Ό μν΄μ Foregroundμ Backgroundμμ μ κ·Όνλ €κ³ νλλ° λμ λ 립λ 곡κ°μ μλ€. λ§μ½ νλ‘μΈμ€λ₯Ό νλμ 곡μ 곡κ°μΌλ‘ λκ³ μμ μ μ²λ¦¬νλ λ€λ₯Έ κ°λ μ΄ μμΌλ©΄ μ΄λ¨κΉ? κ·Έκ² μ€λ λλ€.
μ¦, νλ‘μΈμ€μ μ€λ λμ κ΄κ³λ₯Ό μλμ κ°μ΄ μ μνλ€.
1. νλ‘μΈμ€λ μμ μμ μμ λ¨μκ° λλ€ (Container)
νλ‘μΈμ€λ PCB μ 보μ, λ©λͺ¨λ¦¬ μμ, I/O λ± μ₯μΉμ λν μ μ΄κΆμ΄ νμνλ€.
2. μ€λ λλ μ€ν λ¨μκ° λλ€.
μ€λ λλ νλ‘μΈμ€λ³΄λ€ λ μμ μ€ν λ¨μκ° λμ΄ μ€λ²ν€λλ₯Ό κ°μ μμΌ λΉ λ₯Έ 컨ν μ€νΈ μ€μμΉμ νλ€.
μ΄ λ°©λ²μ νλ‘μΈμ€μ 볡μ‘ν ν΅μ , μ€ν μλλ₯Ό κ°μ νλ€.
λ€μ€ μ€λ λ (Multi Threading)
μ€λ λλ₯Ό μμ±νκ² λλ©΄ foreground threadλ‘ μ¬μ©μ μ λ ₯μ λν μ²λ¦¬λ₯Ό νκ³ νλ‘μΈμ€ λ΄ κ³΅μ 곡κ°μ ν΅ν΄ backgroundμμ μ 보λ₯Ό μ λ°μ΄νΈ νλλ‘ νλ€. μ¦, Asynchronousλ‘ μμ μ μ²λ¦¬ν μ μλ κ²μ΄λ€. μ΄ λ, λ€λ₯Έ νλ‘μΈμ€λ₯Ό μμ±ν νμκ° μμΌλ μνμκ°μ΄λ 볡μ‘λκ° λ§μ΄ λ¨μΆλλ€. κ·Έ μΈμλ μ€νμλ μΈ‘λ©΄μ΄λ λͺ¨λ νλ‘κ·Έλ¨μ ꡬμ±νλ κ²½μ°μμ λ§μ΄ μ¬μ©λλλ° μ΄λ κ² νλμ νλ‘μΈμ€μ μ¬λ¬κ°μ νλ‘μΈμ€κ° μλ κ²μ λ€μ€ μ€λ λλΌκ³ νλ€.
λ©ν° μ€λ λμμλ Concurrencyμ parallelismμ΄ λ°μνλ€.
μ΄ κ²μ μ΄μ μΌ μλ μκ³ λ¨μ μΌ μλ μλ€.
Concurrency(λμμ±)μ 1κ°μ CPUμμ 2κ°μ μ΄μμ μ€λ λκ° λμμ μ€νμ€μΈ μνμ΄λ€.
Time Sliceμ λ°λΌ μ¬λ¬ μ€λ λλ₯Ό μ²λ¦¬ν μ μμ΄μ μμ μ²λ¦¬μλκ° λ§€μ°λΉ¨λΌμ§λ μ₯μ μ΄ μκ³ Idle νμμ΄ κ±°μ μ€μ΄λλ μ₯μ μ΄ μλ€. λ°λ©΄μ μ€λ λ1μμ μ²λ¦¬κ° λ€ λλμ§ μκ³ interrupt λλ time slice μ΄κ³Όλ‘ μ€λ λ2λ₯Ό μ²λ¦¬νκ² λλ μν©μ΄ λ°μνλ€κ³ μκ°ν΄λ³΄μ. μ€λ λ1κ³Ό μ€λ λ2κ° λ λ€ AλΌλ μμμ μ¬μ©νκ² λμμ λ, λ¬Έμ κ° λ°μνλ€.
μμλ‘ Aμ 1000λ§μμ΄ μκ³ μ€λ λ 1μμ 700λ§μ, μ€λ λ 2μμ 500λ§μμ κ°μ Έκ°λ€κ³ ν΄λ³΄μ. Aλ ν λ²μ 100λ§μμ©λ§ μΆκΈν μ μλλ‘ μ€κ³λμλ€.
μ μμ μΈ μν©μ΄λΌλ©΄ μ€λ λ1μμ 700λ§μ, μ€λ λ2μμ 300λ§μλ§ κ°μ Έκ°κ±°λ μμ‘μ΄ λΆμ‘±νλ€λ μλ΄λ₯Ό λ°μμΌ νλ€.
νμ§λ§ λ©ν°μ€λ λ© νκ²½μμλ μ€λ λ1μμ 100λ§μ, μ€λ λ2μμ 100λ§μμ© κ°μ Έκ°λ©΄μ κ° κ° 500λ§μμ© κ°μ Έκ°κ² λλ€. μ΄λ¬λ©΄ μ€λ λ1μ λ¨Όμ μ€νλμμμλ λΆκ΅¬νκ³ 500λ§μλ°μ μ±κΈ°μ§ λͺ»νλ€.
Parallelism(λ³λ ¬μ±)μ 2κ° μ΄μμ μ€λ λκ° λ€λ₯Έ CPUμμ κ°μ μκ°μ λμμ μ€νλλ κ²μ΄λ€.
μ΄κ² λν, λμμ±κ³Ό λ§μ°¬κ°μ§μ μ₯μ κ³Ό λ¨μ μ΄ λ°μνλ€.
μ΄λ° λ¬Έμ μ μ λκΈ°ν λ¬Έμ λΌκ³ νλλ° μ΄νμ λ€λ£° λ΄μ©μ΄λ€.
μ 리
- μ€λ λλ μ€ν λ° μ€μΌμ€λ§ λ¨μμ΄λ€.
- κ°λ°μμκ²λ μμ λ¨μκ° λλ€.
- OSμμλ μ€νλ¨μ, CPUμμλ μ€μΌμ€λ§ λ¨μκ° λλ€.
- Processμ μ½λ, λ°μ΄ν°, ν, μ€ν μμμ 곡μ λ°μ μ§μ μ μ₯νκ³ μλ μ€μ²΄μ΄λ€.
- Thread λ§λ€ TCB(Thread Control Block)μ΄ μμ±λλ€.
- νλ‘μΈμ€λ 컨ν
μ΄λ λ¨μκ° λμλ€.
- μ€νμ΄ λλ €λ©΄ λ°λμ 1κ° μ΄μμ μ€λ λκ° μ‘΄μ¬ν΄μΌνλ€.
- νλ‘μΈμ€κ° μμ±λ λ, μλμΌλ‘ 1κ°μ main μ€λ λλ μμ±λλ€.
- λͺ¨λ μ€λ λλ νλ‘μΈμ€μ 곡κ°μ λλμ΄μ μ¬μ©νλ€.
- μ€λ λ κ° νλ‘μΈμ€μ 곡μ 곡κ°μΌλ‘ ν΅μ νλ€.
- μ€λ λλ ν¨μλ‘ μμ±νλ€.
- Processλ λͺ©μ νλ‘κ·Έλ¨μ΄μμ§λ§ μ€λ λλ μ½λμ΄λ€.
- μ΄μ체μ μ μ€λ λ μμ±μ΄ μμ²λλ©΄ ν¨μ μ£Όμλ₯Ό μ€λ λ μμμ£Όμλ‘ TCBμ λ±λ‘νλ€.
- TCB Listκ° μμ±λμ΄ μ€λ λ λ¨μλ‘ μ€μΌμ€νλ©° μ€λ λλ₯Ό κ΄λ¦¬νλ€.
- μ€λ λλ νλ‘μΈμ€μ μλͺ
μ 곡μ νλ€.
- νλ‘μΈμ€κ° μ’ λ£λλ©΄ μ€λ λκ° μ’ λ£λλ€.
- μ€λ λκ° μ’ λ£λλ©΄ TCB λ± κ΄λ ¨ μ λ³΄κ° λͺ¨λ μ κ±° λλ€.
- μ€λ λ ν¨μκ° μ’ λ£λμ΄λ μ€λ λλ μ’ λ£λλ€.
'CS > μ΄μ체μ ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
12. 컀λ λ 벨 μ€λ λμ μ¬μ©μ λ 벨 μ€λ λ (1) | 2024.04.22 |
---|---|
11. μ€λ λ μ£Όμ 곡κ°κ³Ό 컨ν μ€νΈ (0) | 2024.04.22 |
9. νλ‘μΈμ€ κ³μΈ΅ ꡬ쑰 (1) | 2024.04.21 |
8. νλ‘μΈμ€ μ μ΄ λΈλ‘ (PCB, Process Control Block) (0) | 2024.04.21 |
7. νλ‘μΈμ€ (Process) (0) | 2024.04.21 |