νλ‘μΈμ€μ μ€λ λμ μ°¨μ΄
π‘ νλ‘μΈμ€
- μ€ν μ€μΈ νλ‘κ·Έλ¨
- λμ€ν¬λ‘λΆν° λ©λͺ¨λ¦¬μ μ μ¬λμ΄ CPUμ ν λΉμ λ°λ μμ μ λ¨μ
- μ΄μ체μ λ‘λΆν° μμ€ν
μμμ ν λΉ λ°μ
- CPU μκ°, μ£Όμ 곡κ°, λ 립λ λ©λͺ¨λ¦¬ μμ
- λ©λͺ¨λ¦¬ μμ(μ£Όμ 곡κ°)μ [Code, Data, Stack, Heap]μΌλ‘ ꡬμ±λ¨
- Code: μ½λ μ체λ₯Ό ꡬμ±νλ λ©λͺ¨λ¦¬ μμ(νλ‘κ·Έλ¨ λͺ λ Ή)
- Data: μ μ λ³μ, μ μ λ³μ λ±
- Stack: μ§μλ³μ, 맀κ°λ³μ, λ¦¬ν΄ κ°(μμ λ©λͺ¨λ¦¬ μμ)
- Heap: λμ ν λΉ μμ(new(), mallloc() λ±) - ν νλ‘μΈμ€λ λ€λ₯Έ νλ‘μΈμ€μ λ³μλ μλ£κ΅¬μ‘°μ μ κ·Όν μ μμ
-> IPC ν΅μ μΌλ‘ μ κ·Όν΄μΌ ν¨ ex) νμ΄ν, νμΌ, μμΌ λ±μ μ΄μ©
π‘ νλ‘μΈμ€ μ μ΄ λΈλ‘(Process Control Block, PCB)
- νΉμ νλ‘μΈμ€μ λν μ€μν μ 보λ₯Ό μ μ₯νλ 컀λ λ΄μ μλ£κ΅¬μ‘°
- μ΄μ체μ λ νλ‘μΈμ€μ μμ±κ³Ό λμμ κ³ μ ν PCBλ₯Ό μμ±ν¨
- νλ‘μΈμ€ μ νμ΄ λ°μνλ©΄, μμ μ μ§ν μν©μ λͺ¨λ PCBμ μ μ₯νκ³ CPUλ₯Ό λ°νν¨
- λ€μ CPUλ₯Ό ν λΉλ°κ² λλ©΄ PCBμ μ μ₯λμ΄μλ λ΄μ©μ λΆλ¬μ μμ μ μνν¨
β PCBμ μ μ₯λλ μ 보
- νλ‘μΈμ€ μλ³μ(Process ID, PID): νλ‘μΈμ€ μλ³λ²νΈ
- νλ‘μΈμ€ μν: new, ready, running, waiting, terminated λ±μ μν
- νλ‘κ·Έλ¨ μΉ΄μ΄ν°: νλ‘μΈμ€κ° λ€μμ μ€νν λͺ λ Ήμ΄μ μ£Όμ
- CPU λ μ§μ€ν°
- CPU μ€μΌμ₯΄λ§ μ 보: νλ‘μΈμ€μ μ°μ μμ, μ€μΌμ₯΄ νμ λν ν¬μΈν° λ±
- λ©λͺ¨λ¦¬ κ΄λ¦¬ μ 보: νμ΄μ§/μΈκ·Έλ¨ΌνΈ ν μ΄λΈ λ±κ³Ό κ°μ μ 보
- μ μΆλ ₯ μν μ 보: νλ‘μΈμ€μ ν λΉλ μ μΆλ ₯ μ₯μΉλ€κ³Ό μ΄λ¦° νμΌ λͺ©λ‘
- μ΄μΉ΄μ΄ν μ 보: μ¬μ©λ CPU μκ°, μκ°μ ν, κ³μ λ²νΈ λ±
π‘ μ€λ λ(Thread)
- νλ‘μΈμ€ μμμ μ€νλλ μ¬λ¬ νλ¦ λ¨μ
- νλ‘μΈμ€λ§λ€ μ΅μ 1κ°μ μ€λ λ μμ
- νλ‘μΈμ€ λ΄μ μ£Όμ 곡κ°μ΄λ μμμ 곡μ ν μ μμ
- μ€λ λ ID, νλ‘κ·Έλ¨ μΉ΄μ΄ν°, λ μ§μ€ν° μ§ν©, μ€νμΌλ‘ ꡬμ±
- κ°μ νλ‘μΈμ€μ μν μ€λ λλ Code, Data, Heap μμμ 곡μ ν¨
β μ€νμ λ 립μ μΌλ‘ ν λΉνλ μ΄μ
μ€νμ μ§μλ³μ, 맀κ°λ³μ, λ¦¬ν΄ κ° λ±μ μ μ₯νλ λ©λͺ¨λ¦¬ 곡κ°μ΄λ€. λ°λΌμ λ 립μ μΈ ν¨μ νΈμΆμ μν΄μλ λ 립μ μΈ μ€ν λ©λͺ¨λ¦¬ 곡κ°μ΄ νμνλ€. μ€λ λλ λ 립μ μΈ μ€ν νλ¦μ΄λ―λ‘ λ 립λ μ€νμ ν λΉν΄μΌ νλ€.
β νλ‘κ·Έλ¨ μΉ΄μ΄ν°(PC)λ₯Ό λ 립μ μΌλ‘ ν λΉνλ μ΄μ
PCκ°μ μ€λ λκ° μ€νν λ€μ λͺ λ Ήμ΄λ₯Ό λνλΈλ€. μ€λ λλ CPUλ₯Ό ν λΉλ°μλ€κ° μ€μΌμ₯΄λ¬μ μν΄ λ€μ λ°νν΄μΌ ν μ μλ€. λ°λΌμ μ²μλΆν° λκΉμ§ μ°μμ μΌλ‘ μνλμ§ λͺ»νλ―λ‘ μ΄λ λΆλΆκΉμ§ μννλμ§ κΈ°μ΅ν νμκ° μλ€. μ΄λ₯Ό μν΄ PC λ μ§μ€ν°λ₯Ό λ 립μ μΌλ‘ ν λΉν΄μΌ νλ€.
λ©ν° νλ‘μΈμ€μ λ©ν° μ€λ λμ μ°¨μ΄
π‘ λ©ν° νλ‘μΈμ€(Multi Process)
- νλμ μμ©νλ‘κ·Έλ¨μ μ¬λ¬ νλ‘μΈμ€λ‘ ꡬμ±νμ¬ κ° νλ‘μΈμ€κ° νλμ μμ μ μ²λ¦¬νλλ‘ νλ κ²
- μ₯μ : μ¬λ¬ κ°μ μμ νλ‘μΈμ€ μ€ νλμ λ¬Έμ κ° λ°μν΄λ κ·Έ νλ‘μΈμ€λ§ μ£½κ³ μν₯μ΄ νμ°λμ§ μμ(μμ μ±)
- λ¨μ : Context Switching μ€λ²ν€λ, νλ‘μΈμ€ μ¬μ΄μ ν΅μ μ΄ μ΄λ €μ(IPC)
β Context Switching μ€λ²ν€λ
- CPUμμ μ¬λ¬ νλ‘μΈμ€λ₯Ό λμκ°λ©΄μ μμ μ μ²λ¦¬νλ κ³Όμ μμ μΌμ΄λ¨
- νλ‘μΈμ€ μ νμ΄ μΌμ΄λ λ, νμ¬ μ§ν μ€μΈ μμ μ μν(Context)λ₯Ό PCBμ μ μ₯νκ³ λκΈ°νκ³ μλ λ€μ μμμ μμ μνμ μν΄ ν΄λΉ μμ μ μ΄μ μν κ°μ 볡ꡬνλ μμ
- Context Switching κ³Όμ μμ μΊμ λ©λͺ¨λ¦¬ μ΄κΈ°ν λ± μ€λ²ν€λ λ°μ
- νλ‘μΈμ€λ λ
립λ λ©λͺ¨λ¦¬ μμμ ν λΉλ°μΌλ―λ‘ νλ‘μΈμ€ μ¬μ΄μλ 곡μ νλ λ©λͺ¨λ¦¬κ° μμ
-> Context Switchingμ΄ λ°μνλ©΄ μΊμμ μλ λͺ¨λ λ°μ΄ν°λ₯Ό 리μ μν€κ³ λ€μ μΊμ μ 보λ₯Ό λΆλ¬μμΌ ν¨
π‘ λ©ν° μ€λ λ(Multi Thread)
- νλμ μμ©νλ‘κ·Έλ¨μ μ¬λ¬ μ€λ λλ‘ κ΅¬μ±νμ¬ κ° μ€λ λκ° νλμ μμ μ μ²λ¦¬νλλ‘ νλ κ²
- μλμ°, 리λ μ€ λ± λ§μ μ΄μ체μ λ€μ΄ λ©ν° νλ‘μΈμ±μ μ§μνμ§λ§, λ©ν° μ€λ λ©μ κΈ°λ³ΈμΌλ‘ νκ³ μμ
- μΉ μλ²λ λνμ μΈ λ©ν° μ€λ λ μμ© νλ‘κ·Έλ¨μ
- μ₯μ
- μμ€ν μμ μλͺ¨ κ°μ
: νλ‘μΈμ€λ₯Ό μμ±νμ¬ μμμ ν λΉνλ System Callμ΄ μ€μ΄λ€μ΄ μμμ ν¨μ¨μ μΌλ‘ κ΄λ¦¬ν μ μμ
- μμ€ν μ²λ¦¬λ μ¦κ°
: μ€λ λ κ° λ°μ΄ν°λ₯Ό μ£Όκ³ λ°λ κ²μ΄ κ°λ¨ν΄μ Έμ μ²λ¦¬ λΉμ©μ΄ κ°μν¨
μ€λ λ μ¬μ΄μ μμ λμ΄ μμ Context Switchingμ΄ λΉ λ¦
- κ°λ¨ν ν΅μ λ°©λ²μΌλ‘ μΈν νλ‘κ·Έλ¨ μλ΅ μκ° λ¨μΆ
: μ€λ λλ μ€νμ μ μΈν λͺ¨λ λ©λͺ¨λ¦¬λ₯Ό 곡μ νκΈ° λλ¬Έμ ν΅μ λΆλ΄μ΄ μ μ - λ¨μ
- μλ‘ λ€λ₯Έ μ€λ λκ° μμμ 곡μ νκΈ° λλ¬Έμ λ€λ₯Έ μ€λ λμμ μ¬μ© μ€μΈ λ³μλ μλ£κ΅¬μ‘°μ μ κ·Όνμ¬ μλ±ν κ°μ μ½μ΄μ€κ±°λ μμ ν μ μμ (λκΈ°ν λ¬Έμ )
- νλμ μ€λ λμ λ¬Έμ κ° λ°μνλ©΄ μ 체 νλ‘μΈμ€κ° μν₯μ λ°μ
- λ°λΌμ μ£Όμ κΉμ μ€κ³κ° νμνλ©°, λλ²κΉ μ΄ κΉλ€λ‘μ
Reference
- https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/OS#%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%99%80-%EC%8A%A4%EB%A0%88%EB%93%9C%EC%9D%98-%EC%B0%A8%EC%9D%B4
- https://github.com/gyoogle/tech-interview-for-developer/blob/master/Computer%20Science/Operating%20System/Process%20vs%20Thread.md
- https://github.com/WooVictory/Ready-For-Tech-Interview/blob/master/Operating%20System/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%99%80%20%EC%8A%A4%EB%A0%88%EB%93%9C.md
- https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html
728x90
'CS' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[OS] μ΄μ체μ (Operating System)λ? (0) | 2021.10.16 |
---|---|
[μλ£κ΅¬μ‘°] νΈλ¦¬(Tree) μλ£κ΅¬μ‘° (0) | 2021.10.02 |
[μλ£κ΅¬μ‘°] ν(heap) μλ£κ΅¬μ‘° (1) | 2021.09.30 |
[WEB] HTTP μν μ½λ (0) | 2021.09.28 |
[Network] CIDR(μ¬μ΄λ)μ΄λ? CIDR κΈ°λ³Έ κ°λ (0) | 2021.04.24 |