
λ°ν¨κ²½ κ΅μλμ μ΄μ체μ κ°μλ₯Ό μκ°νλ©° κ°μΈμ μΌλ‘ μ°Ύμ 곡λΆν λ΄μ©κ³Ό ν¨κ» μ 리ν λ΄μ©μ΄λ€. νλ‘μΈμ€μ λν κΈ°λ³Έμ μΈ λ΄μ©μ λν΄ μμ보μ.
νλ‘μΈμ€?
νλ‘μΈμ€λ μ€ν μ€μΈ νλ‘κ·Έλ¨
μ μλ―Ένλ€.
κ·ΈλΌ νλ‘κ·Έλ¨κ³Ό νλ‘μΈμ€μ μ°¨μ΄λ 무μμΌκΉ?

π‘ νλ‘κ·Έλ¨μ μ»΄ν¨ν°μμ νΉμ μμ λλ μμ μ μλ£νκΈ° μν΄ μμ±λ νΉμ μ§μΉ¨ μ§ν©μ΄ ν¬ν¨λ μ€ν νμΌ(μλ₯Ό λ€μ΄ exe νμΌ)μ΄λ€. νλ‘μΈμ€λ μ΄λ¬ν νλ‘κ·Έλ¨μ΄ μ€νλ νμ± μν°ν°μ΄λ€.
νλ‘μΈμ€μ λ¬Έλ§₯ (Process Context)
νλ‘μΈμ€κ° νμμ μμ μ΄λκΉμ§ μνμ΄ λμλμ§λ₯Ό μκΈ° μν μ 보
π£ νλ‘μΈμ€κ° νλ‘μΈμμ λν μ‘μΈμ€μμ μ κ±°λ λλ§λ€ νμ¬ μλ μνμ λν μΆ©λΆν μ λ³΄κ° μ μ₯λμ΄ νλ‘μΈμμμ λ€μ μ€νλλλ‘ μμ½λ λ λμΌν μμΉμμ μμ
μ μ¬κ°ν μ μμ΄μΌ νλ€. μ΄λμ μλ μν λ°μ΄ν°λ₯Ό Process Context
λΌ νλ€.
νλ‘μΈμ€ λ¬Έλ§₯μ 3κ°μ§λ‘ λλλ€.
- CPU μν μνλ₯Ό λνλ΄λ νλμ¨μ΄ λ¬Έλ§₯ (Program Counter, κ°μ’ Register)
- νλ‘μΈμ€μ μ£Όμ κ³΅κ° (Code, Data, Stack)
- νλ‘μΈμ€ κ΄λ ¨ 컀λ μλ£ κ΅¬μ‘° (PCB, Kernel Stack)
νλ‘μΈμ€μ μν (Process State)
νλ‘μΈμ€λ μνκ° λ³κ²½λλ©° μνλλ€. νλ‘μΈμ€μ μνλ νλ‘μΈμ€μ νμ¬ νλμ μν΄ μ μλλ©°, μ΄ νλ‘μΈμ€ μνλ Process Control Block(PCB)μ μ μ₯λλ€.
νλ‘μΈμ€λ λ€μκ³Ό κ°μ΄ 5κ°μ μνλ‘ λνλΌ μ μμΌλ©° μ΄ μ€ νλμ μνλ₯Ό κ°μ§λ€.
- New
- νλ‘μΈμ€κ° μμ±λλ μν
- Ready
- νλ‘μΈμ€κ° μμ±μ΄ μλ£λλ©΄ μ€λΉ μνκ° λκ³ , νλ‘μΈμ€λ μ£Ό λ©λͺ¨λ¦¬μ λ‘λλκ³ CPUκ° ν λΉλλ€.
- Running
- CPUλ₯Ό μ‘κ³ instructionμ μν μ€μΈ μν (Ready Queueμμ CPUκ° νλ‘μΈμ€μ ν λΉλ λλ§λ€)
- Blocked (wait, sleep)
- CPUλ₯Ό μ£Όμ΄λ λΉμ₯ instructionμ μνν μ μλ μν
- νλ‘μΈμ€κ° μμ μ΄ μμ²ν μ΄λ²€νΈ(μ: I/O)κ° μ¦μ λ§μ‘±λμ§ μμ μ΄λ₯Ό κΈ°λ€λ¦¬λ μν
- ex) λμ€ν¬μμ fileμ μ½μ΄μμΌ νλ κ²½μ°
- Terminated
- νλ‘μΈμ€κ° μ€νμ μλ£
- μ΄ μν λμ νλ‘μΈμ€μ PCBλ μμ λλ€.

Process Control Block (PCB)
νλ‘μΈμ€λ₯Ό μμ±νλ λμ μ΄μ 체μ λ μ¬λ¬ μμ μ μννλ€. νλ‘μΈμ€λ₯Ό μλ³νκΈ° μν΄ κ° νλ‘μΈμ€μ νλ‘μΈμ€ μλ³ λ²νΈ(PID)λ₯Ό ν λΉνλ€. μ΄μ 체μ λ λ€μ€ νλ‘κ·Έλλ°μ μ§μνλ―λ‘ λͺ¨λ νλ‘μΈμ€λ₯Ό μΆμ ν΄μΌ νλ€. μ΄ μμ μ μν΄ νλ‘μΈμ€ μ μ΄ λΈλ‘(PCB)μ μ¬μ©νμ¬ νλ‘μΈμ€μ μ€ν μνλ₯Ό μΆμ νλ€.
PCB
μ΄μ체μ κ° κ° νλ‘μΈμ€λ₯Ό κ΄λ¦¬νκΈ° μν΄ νλ‘μΈμ€λΉ μ μ§νλ μ 보λ₯Ό λ΄κ³ μλ λ°μ΄ν° ꡬ쑰
λ€μμ κ΅¬μ± μμλ₯Ό κ°μ§λ€.
- OSκ° κ΄λ¦¬μ μ¬μ©νλ μ 보
- ν¬μΈν°(Pointer) : νλ‘μΈμ€μ νμ¬ μμΉλ₯Ό μ μ§νκΈ° μν΄ νλ‘μΈμ€κ° ν μνμμ λ€λ₯Έ μνλ‘ μ νλ λ μ μ₯ν΄μΌ νλ μ€ν ν¬μΈν°
- νλ‘μΈμ€ μν(Process state) : νλ‘μΈμ€μ κ° μνλ₯Ό μ μ₯
- νλ‘μΈμ€ λ²νΈ(Process ID) : κ° νλ‘μΈμ€μλ νλ‘μΈμ€ μλ³μλ₯Ό μ μ₯νλ νλ‘μΈμ€ ID( λλ PID)λΌλ κ³ μ ν IDκ° ν λΉ
- Scheduling Information, Priority
- CPU μν κ΄λ ¨ νλμ¨μ΄ κ°
- νλ‘κ·Έλ¨ μΉ΄μ΄ν°(Program counter) : νλ‘μΈμ€μ λν΄ μ€νλ λ€μ λͺ λ Ήμ μ£Όμλ₯Ό ν¬ν¨νλ μΉ΄μ΄ν°λ₯Ό μ μ₯
- λ μ§μ€ν°(Registers) : λμ°κΈ°, λ² μ΄μ€, λ μ§μ€ν° λ° λ²μ© λ μ§μ€ν°λ₯Ό ν¬ν¨νλ CPU λ μ§μ€ν°
- λ©λͺ¨λ¦¬ κ΄λ ¨
- λ©λͺ¨λ¦¬ μ ν(Memory limits) : μ΄μ 체μ μμ μ¬μ©νλ λ©λͺ¨λ¦¬ κ΄λ¦¬ μμ€ν μ λν μ λ³΄κ° ν¬ν¨ (νμ΄μ§ ν μ΄λΈ, μΈκ·Έλ¨ΌνΈ ν μ΄λΈ λ±μ΄ ν¬ν¨λ μ μμ)
- Code, Data, Stackμ μμΉ μ 보
- νμΌ κ΄λ ¨
- μ΄λ¦° νμΌ λͺ©λ‘(Open files list) - μ΄ μ 보μλ νλ‘μΈμ€λ₯Ό μν΄ μ΄λ¦° νμΌ λͺ©λ‘μ΄ ν¬ν¨

λ¬Έλ§₯ κ΅ν (Context Switch)
CPUκ° μμ μ΄ μΆ©λνμ§ μλλ‘ νλ©΄μ ν νλ‘μΈμ€μμ λ€λ₯Έ νλ‘μΈμ€λ‘ λ³κ²½νλ κ³Όμ
CPUκ° λ€λ₯Έ νλ‘μΈμ€μκ² λμ΄κ° λ μ΄μ체μ λ λ€μκ³Ό κ°μ΄ μννλ€.
- μ€ν μ€μΈ
νλ‘μΈμ€ 1
μ μνλ₯ΌPCB1
μ μ μ₯ - CPUλ₯Ό μλ‘κ² μ»λ
νλ‘μΈμ€ 2
μ μνλ₯ΌPCB2
μμ μ½μ΄μ΄ - λ€μ 컨ν
μ€νΈ μ νμ΄ λ°μνλ©΄ κ°μ λ°©λ²μΌλ‘ μ΄μ μ μ μ₯λ
νλ‘μΈμ€ 1
μ 볡μ

μ΄ κΈ°λ₯μ ν΅ν΄ μ¬λ¬ νλ‘μΈμ€κ° CPUλ₯Ό 곡μ ν μ μμΌλ©°, λ©ν°νμ€νΉ μ΄μ 체μ μ νμ κΈ°λ₯μ΄λ€.
λ¬Έλ§₯ κ΅ν νΈλ¦¬κ±° (Context switching triggers)
λ€μμ μΈ κ°μ§ μ νμ λ¬Έλ§₯ κ΅νμ΄ λ°μνλ μκΈ°μ΄λ€.
- μΈν°λ½νΈ : CPUκ° λμ€ν¬μμ λ°μ΄ν° μ½κΈ°λ₯Ό μμ²νκ³ μΈν°λ½νΈκ° μλ κ²½μ° μ»¨ν μ€νΈ μ νμ΄ μΈν°λ½νΈλ₯Ό μ²λ¦¬νλ λ° μκ°μ΄ λ νμν νλμ¨μ΄ λΆλΆμ μλμΌλ‘ μ ννλ€.
- λ©ν°νμ€νΉ : 컨ν μ€νΈ μ νμ νλ‘μΈμ€κ° CPUμμ μ νλμ΄ λ€λ₯Έ νλ‘μΈμ€κ° μ€νλ μ μλλ‘ νλ λ©ν°νμ€νΉμ νΉμ±μ΄λ€. νλ‘μΈμ€λ₯Ό μ νν λ μ΄μ μνκ° μ μ₯λμ΄ μμ€ν μ λμΌν μ§μ μμ νλ‘μΈμ€ μ€νμ μ¬κ°νλ€.
- 컀λ/μ¬μ©μ μ ν : μ΄μ 체μ μμ μ¬μ©μ λͺ¨λ μ ν μ μ¬μ©λλ©° 컀λ/μ¬μ©μ λͺ¨λκ° μνλλ€.
νλ‘μΈμ€ μ€μΌμ€λ¬(Process Scheduler)
νλ‘μΈμ€ μ€μΌμ€λ¬λ λ€μκ³Ό κ°μ μΈ κ°μ§ λ²μ£Όλ‘ λλλ€.
- μ₯κΈ° μ€μΌμ€λ¬(Long-Term Scheduler)
- Job Poolμμ νλ‘μΈμ€λ₯Ό μ λ³νκ³ μ€νμ μν΄ κΈ°λ³Έ λ©λͺ¨λ¦¬μ Ready Queueμ μ μ¬νλ€. κ·Έλμ μ₯κΈ° μ€μΌμ€λ¬λ βμμ μ€μΌμ€λ¬(Job Scheduler)βλΌκ³ λ νλ€.
- λ¨κΈ° μ€μΌμ€λ¬(Short-Term Scheduler)
- Ready Queueμμ νλμ μμ (νλ‘μΈμ€)μ μ νν λ€μ μ²λ¦¬λ₯Ό μν΄ CPUλ‘ λ³΄λΈλ€. κ·Έλμ λ¨κΈ° μ€μΌμ€λ¬λ βCPU μ€μΌμ€λ¬βλΌκ³ λ νλ€.

- μ€κΈ° μ€μΌμ€λ¬(Medium-Term Scheduler)
- μ€ν μ€μΈ νλ‘μΈμ€λ₯Ό μ€λΉ μν λλ λκΈ°/μ°¨λ¨ μνλ‘ λ³΄λ΄μΌ νλ κ²½μ°(μλ₯Ό λ€μ΄ I/O μμ²)κ° μλ€. μ΄ μνμμ νλ‘μΈμ€λ₯Ό λ©λͺ¨λ¦¬μμ μ κ±°νκ³ λ€λ₯Έ νλ‘μΈμ€λ₯Ό μν 곡κ°μ λ§λ€κΈ° μν΄ μΌμ μ€λ¨λ νλ‘μΈμ€λ₯Ό 보쑰 μ μ₯μλ‘ μ΄λ(Swap)νλ€. μ΄λ κ² μ€μνμ μννκΈ° λλ¬Έμ βμ€μν μ€μΌμ€λ¬(Swapping scheduler)βλΌκ³ λ νλ€.

μΆμ²
μ΄λ―Έμ§ μΆμ²
'π» κ°λ° > π₯οΈ μ΄μ체μ ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
μλμ°μ 리λ μ€μ λ©ν°νλ‘μΈμ± λμ λ°©μ μ°¨μ΄ (2) | 2025.01.20 |
---|---|
μΈν°λ½νΈλ 무μμ΄λ©° μ΄λ€ μν μ ν κΉ? (0) | 2022.11.23 |