[OS] μ€μΌμ€λ¬μ μ’ λ₯: μ₯κΈ°, μ€κΈ°, λ¨κΈ° μ€μΌμ€λ¬
μ₯κΈ° μ€μΌμ€λ¬(long term scheduler)
μ΄λ€ νλ‘μΈμ€λ₯Ό μ€λΉνμ λ£μ κ²μΈκ° κ²°μ
μμ μ€μΌμ€λ¬λΌκ³ λ λΆλ₯΄λ©° μ΄λ€ νλ‘μΈμ€λ₯Ό μ€λΉνμ μ½μ ν μ§λ₯Ό κ²°μ νλ μν μ νλ€. λμ€ν¬μμ νλμ νλ‘κ·Έλ¨μ κ°μ Έμ 컀λμ λ±λ‘νλ©΄ νλ‘μΈμ€κ° λλλ° μ΄λ λμ€ν¬μμ μ΄λ€ νλ‘κ·Έλ¨μ κ°μ Έμ 컀λμ λ±λ‘ν μ§(μ€λΉνμ λ±λ‘ν μ§) κ²°μ νλ€.
- μ₯κΈ° μ€μΌμ€λ¬λ μμ μ΄ λ΄μ§ μ λΆ λ¨μλ‘ κ°λ νΈμΆλκΈ° λλ¬Έμ μλμ μΌλ‘ μλκ° λλ¦° κ²μ΄ νμ©λ©λλ€.
- λν μ₯κΈ° μ€μΌμ€λ¬λ λ©λͺ¨λ¦¬μ λμμ μ¬λΌκ° μλ νλ‘μΈμ€μ μλ₯Ό μ‘°μ νλ μν μ νλ€.
νμ§λ§ νλμ μλΆν μμ€ν μμ μ¬μ©λλ μ΄μ 체μ μλ μΌλ°μ μΌλ‘ μ₯κΈ° μ€μΌμ€λ¬λ₯Ό λμ§ μλ κ²½μ°κ° λλΆλΆμ΄λ€. κ³Όκ±°μλ μ μ μμ λ©λͺ¨λ¦¬λ₯Ό λ§μ νλ‘μΈμ€λ€μκ² ν λΉνλ©΄ νλ‘μΈμ€λΉ λ©λͺ¨λ¦¬ 보μ λμ΄ μ μ΄μ Έ μ₯κΈ° μ€μΌμ€λ¬κ° μ΄λ₯Ό μ‘°μ νλ μν μ νμ§λ§ νλμ μ΄μ체μ μμλ νλ‘μΈμ€κ° μμλλ©΄ μ₯κΈ° μ€μΌμ€λ¬ μμ΄ λ°λ‘ κ·Έ νλ‘μΈμ€μ λ©λͺ¨λ¦¬λ₯Ό ν λΉν΄ μ€λΉ νμ λ£μ΄μ£Όκ² λλ€.
μ€κΈ° μ€μΌμ€λ¬(medium term scheduler)
λ©λͺ¨λ¦¬μ μ μ¬λ νλ‘μΈμ€ μ κ΄λ¦¬
λ무 λ§μ νλ‘μΈμ€μκ² λ©λͺ¨λ¦¬λ₯Ό ν λΉν΄ μμ€ν μ μ±λ₯μ΄ μ νλλ κ²½μ° μ΄λ₯Ό ν΄κ²°νκΈ° μν΄ λ©λͺ¨λ¦¬μ μ μ¬λ νλ‘μΈμ€μ μλ₯Ό λμ μΌλ‘ μ‘°μ νκΈ° μν΄ μΆκ°λ μ€μΌμ€λ¬.
- μ€μν(Swapping) : μ₯κΈ° μ€μΌμ€λ¬μ λ§μ°¬κ°μ§λ‘ λ©λͺ¨λ¦¬μ μ¬λΌμ μλ νλ‘μΈμ€μ μλ₯Ό μ‘°μ νλ μν μ νλ€.
- λ§μ½ λ©λͺ¨λ¦¬μ λ§μ μμ νλ‘μΈμ€κ° μ μ¬λμ΄ νλ‘μΈμ€ λΉ λ³΄μ νκ³ μλ λ©λͺ¨λ¦¬λμ΄ κ·Ήλλ‘ μ μ΄μ§λ©΄ CPU μνμ λΉμ₯ νμν νλ‘μΈμ€μ μ£Όμ 곡κ°μ‘°μ°¨λ λ©λͺ¨λ¦¬μ μ¬λ €λκΈ° μ΄λ €μ΄ μν©μ΄ λ°μνκ² λλ€.
- κ·Έλ κ² λλ©΄ λμ€ν¬ I/Oκ° μμλ‘ λ°μνκ² λμ΄ μμ€ν
μ μ±λ₯μ΄ μ¬κ°νκ² μ νλ μ μλ€.
- κ°μλ©λͺ¨λ¦¬ 체μ μμ λ무λ§μ νλ‘μΈμ€κ° μ μ¬λλ©΄ νλλμ€ν¬ μ μΆλ ₯μ΄ κ³Όλ€ν΄μ Έμ μμ€ν μ΄ κ±°μ λ©μΆλ νμμ΄ λ°μ(Trashing)
- Trashing : λ©λͺ¨λ¦¬ μμμ μ κ·Όνκ² λ λ, λ©λͺ¨λ¦¬μ νμ΄μ§ λΆμ¬(=νμ΄μ§ ν΄νΈ(Page fault)μ¨μ΄ λμ κ²μ μλ―Έ
- μ΄λ° κ²½μ° λ©λͺ¨λ¦¬μ μ¬λΌμ μλ νλ‘μΈμ€ μ€ μΌλΆμ λ©λͺ¨λ¦¬λ₯Ό ν΅μ§Έλ‘ λΉΌμμ κ·Έ λ΄μ©μ λμ€ν¬μ μ€μ μμμ μ μ₯ν΄ λλ€. μ΄μ κ°μ νμλ₯Ό μ€μ μμ(swap out)μ΄λΌκ³ ν©λλ€.
- λμ€ν¬λ‘ μ€μ μμμμΌμΌ νλ κ²½μ° λ΄μ μν(μ€λ¨ μν)μ μλ νλ‘μΈμ€λ€μ 첫λ²μ§Έλ‘ μ€μ μμ μν΅λλ€. μ΄μ λ λ΄μ μνμ νλ‘μΈμ€λ€μ λΉμ₯ CPUλ₯Ό νλν κ°λ₯μ±μ΄ μκΈ° λλ¬Έμ΄λ€.
- λ΄μ μνμ νλ‘μΈμ€λ€μ μ€μ μμμμΌλ λ¬Έμ κ° ν΄κ²°λμ§ μλ κ²½μ° μ€κΈ° μ€μΌμ€λ¬λ νμ΄λ¨Έ μΈν°λ½νΈκ° λ°μν΄ μ€λΉ νλ‘ μ΄λνλ νλ‘μΈμ€λ₯Ό μΆκ°μ μΌλ‘ μ€μμμ μν¨λ€.
- λ©λͺ¨λ¦¬μ μ¬μ κ° μκΈ°λ©΄ λ€μ μ μ¬(swap in)νλ€.
μ€κΈ° μ€μΌμ€λ¬μ λ±μ₯μΌλ‘ νλ‘μΈμ€μ μνμλ μ€μ§(suspenden, stopped) μνκ° μΆκ° λμμΌλ©° μ€μ§ μνμ νλ‘μΈμ€λ λ©λͺ¨λ¦¬λ₯Ό ν΅μ§Έλ‘ λΉΌμκΈ°κ³ λμ€ν¬λ‘ μ€μ μμλλ€. μ€μ§ μνλ μ€μ§ μ€λΉ μνμ λ΄μ μ€μ§ μνκ° μλ€.
- μ€μ§ μ€λΉ(suspended ready) : μ€λΉ μνμ νλ‘μΈμ€κ° μ€κΈ° μ€μΌμ€λ¬μ μν΄ λμ€ν¬λ‘ swap out
- λ΄μ μ€μ§(suspended block) : λ΄μ μνμ νλ‘μΈμ€κ° μ€κΈ° μ€μΌμ€λ¬μ μν΄ λμ€ν¬λ‘ swap out
μ€μ§ λ΄μ μνμΈ νλ‘μΈμ€κ° λ΄μ λμλ 쑰건μ λ§μ‘±νκ² λλ©΄ μ΄ νλ‘μΈμ€μ μνλ μ€μ§ μ€λΉ μνλ‘ λ°λκ² λλ€. μ€μ§ μνμ μλ νλ‘μΈμ€λ€μ μ€μ§ μ€λΉ μνμ΄λ μ€μ§ λ΄μ μνμ΄λ κ΄κ³μμ΄ λ©λͺ¨λ¦¬λ₯Ό μ‘°κΈλ 보μ νμ§ μκ³ λμ€ν¬μ ν΅μ§Έλ‘ μ€μ μμλ μνλ‘ μ‘΄μ¬νκ² λλ€.
λ¨κΈ° μ€μΌμ€λ¬(short term scheduler)
λ©λͺ¨λ¦¬ λ΄μ μ€λΉ μνμ μλ μμ μ€ μ€ν ν νλ‘μΈμ€λ₯Ό μ ννμ¬ CPUλ₯Ό ν λΉ
CPUμ€μΌμ€λ¬λΌκ³ λ νλ©° μ€λΉ μνμ νλ‘μΈμ€ μ€μμ μ΄λ νλ‘μΈμ€λ₯Ό λ€μ λ²μ μ€ν μνλ‘ λ§λ€ κ²μΈμ§λ₯Ό κ²°μ νλ€. μλΆν μμ€ν μμ νμ΄λ¨Έ μΈν°λ½νΈκ° λ°μνλ©΄ λ¨κΈ° μ€μΌμ€λ¬κ° νΈμΆλλ€.
- μΌλ°μ μΌλ‘ μ€μΌμ€λ¬λΌ ν¨μ λ¨κΈ° μ€μΌμ€λ¬λ₯Ό μλ―Ένλ©° λ¨κΈ° μ€μΌμ€λ¬λ 미리 μ ν μ€μΌμ€λ§ μκ³ λ¦¬μ¦μ λ°λΌ cpuλ₯Ό ν λΉ ν νλ‘μΈμ€λ₯Ό μ ννλ€.
- λ¨κΈ° μ€μΌμ€λ¬λ λ°λ¦¬ μΈμ»¨νΈ(ms) μ΄νμ μκ° λ¨μλ‘ λ§€μ° λΉλ²νκ² νΈμΆλκΈ° λλ¬Έμ μν μλκ° μΆ©λΆν λΉ¨λΌμΌ νλ€.
μ 리
μ€μΌμ€λ¬ μ’ λ₯ | κ΄λ ¨λ μν |
μ₯κΈ° μ€μΌμ€λ¬ | μμ± μν κ΄λ¦¬ |
μ€κΈ° μ€μΌμ€λ¬ | μ€λ¨λ μ€λΉ, μ€λΉ, μ€λ¨λ λκΈ°, λκΈ° μν κ΄λ¦¬ |
λ¨κΈ° μ€μΌμ€λ¬ | μ€λΉ, μ€ν, λκΈ° μν κ΄λ¦¬ |