Five State Process Model

_Five State Process Model_μ νλ‘μΈμ€κ° μ€νλκ³ μ’ λ£λ λκΉμ§μ νλ¦μ λνλΈ κ²μΈλ°, μ΄ νλ¦μ κ΅μ₯ν μ€μνλ―λ‘ κΈ°μ΅ν΄ λμ.
λ¨Όμ , νλ‘μΈμ€κ° OSμ μν΄μ μλ‘κ² μμ±λ κ²μ΄λ€. μ΄λ _fork_λΌλ λͺ λ Ήμ΄λ‘ μΈν΄ μμ±λλ©° _job queue_ λ΄λΆμ λ€μ΄κ°κ² λλ€. ν΄λΉ μνλ₯Ό _new_λΌκ³ νλ€.
κ·Έ νμ _Ready Queue_μμ νλ‘μΈμ€κ° λ€μ΄κ°κ² λμ΄ _Ready_μνλ₯Ό μ§λλ€. κ·Έ ν, νλ‘μΈμ€ μ€μΌμ€λ§ μ μ± μ λ°λΌμ _Running_μνλ‘ λ³κ²½λ νλ‘μΈμ€λ€μ΄ μ ννκ² λμ΄ _Dispatcher_ν¨μλ₯Ό ν΅ν΄ μ€μ λ‘ νλ‘μΈμ€κ° νλ‘μΈμμ ν λΉλλ€.
_Running_μνμ μλ νλ‘μΈμ€λ€μ μ΄ 3κ°μ§ κΈΈλͺ©μ λ§μ£Όνκ² λλ€. 첫 λ²μ§Έλ‘ Timeout λλ κ²½μ°μ΄λ€. μ΄λ Time Sharing Systemμ μνμ¬ Time Sliceλ§νΌμ μμ μ μννκ³ λ€μ _Ready Queue_λ‘ λ€μ΄κ° λ€λ₯Έ νλ‘μΈμ€λ₯Ό _Running_μνλ‘ λ§λ€κ² λλ€.
λ λ²μ§Έλ _Event Wait_μΌλ‘ μΈν΄ Block λλ κ²½μ°μ΄λ€. μλ₯Ό λ€μ΄ I/O μμ μ΄ μΌμ΄λμ μ μΆλ ₯μ κΈ°λ€λ¦¬λ κ²½μ°κ° λ μ μλ€. _Block_λ νλ‘μΈμ€λ€μ _Dispatcher_μ μν΄μ μ νλ°μ μ μμΌλ©° μ΄λ _Event Occur_κ° μΌμ΄λ λλ λκΉμ§ μ§μλλ€.
λ§μ§λ§μΌλ‘ _Release_λ‘ μΈν΄ νλ‘μΈμ€κ° μ’ λ£λλ κ²½μ°μ΄λ€. μ¦, _kill_μ΄λ _exit_λͺ λ Ήμ΄λ‘ νλ‘μΈμ€κ° μ’ λ£λμ΄ _Terminate_ μνλ₯Ό κ°μ§λ€. μ΄λ κ² _Terminate_λ μνλ Zombie νλ‘μΈμ€λΌκ³ λ νλλ°, κ·Έ μ΄μ λ νλ‘μΈμ€κ° μ¬μ©ν μμμ ν΅κ³λ§μ μ§λκΈ° λλ¬Έμ΄λ€. _Terminate_μνκ° λ νλ‘μΈμ€λ μΆνμ _wait_λͺ λ Ήμ΄λ₯Ό ν΅ν΄ ν΄λΉ ν΅κ³κ° μμ§λλ©° μμ ν μ’ λ£λλ€.
Using Two Queue

μμμ μ΄ν΄λ³Έ 5κ°μ μν νλ¦μ Ready Queueμ Block Queueκ΄μ μμ μ΄ν΄λ³Έ κ²μ΄λ€. μμ λ³Έ κ²κ³Ό ν¬κ² λ€λ₯΄μ§ μλ€.
Multiple Blocked Queues

Multiple Blocked Queuesλ μμ λ³Έ SIngle Blocked Queueμμ Blocked Queueκ° Eventμ μ’ λ₯λ§λ€ μ‘΄μ¬νλ ꡬ쑰μ΄λ€.
μ΄λ¬ν ꡬ쑰λ₯Ό μ¬μ©νκ² λλ©΄ νΉμ μ΄λ²€νΈλ₯Ό μ°Ύμ λ Blocked Queueλ₯Ό μΌμΌμ΄ λ€μ Έκ°λ©° μ°Ύμκ° νμκ° μλ€. κ·Έμ λ°μν μ΄λ²€νΈμ μ’ λ₯μ ν΄λΉνλ Blocked Queueλ₯Ό μ°Ύμκ°λ©΄ λκΈ° λλ¬Έμ΄λ€.
Suspended Processes
_Suspended Process_λ νλ‘μΈμ€κ° 보쑰기μ΅μ₯μΉλ‘ λ°λ €λκ° νλ‘μΈμ€λ₯Ό λ§νλ€.
μ¬κΈ°μλ λ κ°μ§ μνκ° μλλ°, μ΄λ λ€μκ³Ό κ°λ€.
- Blocked/Suspend : Blocked μνμμ νλλμ€ν¬λ‘ λ°λ €λ κ²
- I/O μμ λ±μ μν΄μ ν΄λΉ μνλ‘ μ μ΄λλ€.
- Ready/Suspend : Ready μνμμ νλλμ€ν¬λ‘ λ°λ €λ κ²
- Blocked/Suspended λ μνμ μλ I/Oμμ μ΄ λλ¬μ λ ν΄λΉ μνλ‘ μ μ΄λλ€.
- κ°νΉ Readyμμ μ§μ Ready/Suspendλ‘ κ°κΈ°λ νλλ° μ΄λ λ§€μ° λλ¬Όλ€.
μ΄λ κ² Suspended μνλ‘ λ°λ €λ μ΄μ λ νλ‘μΈμμ μ±λ₯μ΄ I/O μλλ³΄λ€ λΉ¨λΌ, λͺ¨λ νλ‘μΈμ€κ° I/Oμμ μ μμ κ²½μ° μλ‘μ΄ νλ‘μΈμ€λ€μ λ©μΈλ©λͺ¨λ¦¬λ‘ λΆλ¬μ€κΈ° μν¨μ΄λ€.
λμ I/Oμμ μ€μ μλ νλ‘μΈμ€λ€μ λμ€ν¬λ‘ μ΄λνμ¬ I/Oμμ μ μννκ³ , νλ‘μΈμλ λμ§ μκ³ μλ‘μ΄ νλ‘μΈμ€ μμ μ μνν μ μλ€. μ΄λ κ² λ©μΈ λ©λͺ¨λ¦¬ μμ νλ‘μΈμ€μ λμ€ν¬ μμ μλ‘μ΄ νλ‘μΈμ€μ μ리λ₯Ό λ°κΎΈλ κ²μ _swap_μ΄λΌκ³ νλ€.

μμ μ΄ν΄λ³Έ Five State Modelμμ λ κ°μ§ μνκ° μΆκ°λ κ²μ λ³Ό μ μλ€. μ¬κΈ°μλ _swap in_κ³Ό _swap out_ μμ μ ν΅ν΄ _suspended _μνμ μ νμ΄ μ΄λ£¨μ΄μ§μ μ μ μλ€.
μ΄λ λ©μΈ λ©λͺ¨λ¦¬λ₯Ό κΈ°μ€μΌλ‘ λ©μΈ λ©λͺ¨λ¦¬μμ λμ€ν¬λ‘ λκ°λ κ²μ _swap out_μ΄λΌκ³ νκ³ , λμ€ν¬μμ λ©μΈ λ©λͺ¨λ¦¬λ‘ κ°μ Έμ€λ κ²μ _swap in_μ΄λΌκ³ νλ€.
Processλ₯Ό Suspension νλ μ΄μ
곡ν΅μ μΈ μ΄μ λ λ©μΈ λ©λͺ¨λ¦¬μ 곡κ°μ ν보νκΈ° μν¨μ΄λ€.
- Swapping
- μ€λΉλ νλ‘μΈμ€μ λν΄ λ©μΈ λ©λͺ¨λ¦¬ 곡κ°μ ν λΉνκΈ° μν¨μ΄λ€.
- Timing
- κ°λ ν λ²μ©λ§ μ€νλλ νλ‘μΈμ€μ κ²½μ° λμ€ν¬μ 보κ΄ν΄ λλ€.
- Interactive User Request
- μ¬μ©μκ° λλ²κΉ λ±μ λͺ©μ μΌλ‘ μμ²νλ κ²½μ°μ΄λ€.
- Parent Process Request
- λΆλͺ¨ νλ‘μΈμ€μ μμ²μΌλ‘ μΈν¨μ΄λ€.
- λ€λ₯Έ OS μ΄μ
- μλ¬κ° λ°μν νλ‘μΈμ€ λλ¬Έμ΄λ€.
'π Knowledge > μ΄μ체μ (OS)' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| [μ΄μ체μ ] 리λ μ€ λͺ λ Ήμ΄ μ 리 (0) | 2024.03.13 |
|---|---|
| [μ΄μ체μ ] Process Control Blockμ΄λ? (0) | 2024.03.09 |
| [μ΄μ체μ ] νλ‘μΈμ€μ κΈ°λ³Έ κ°λ μμ보기 (0) | 2024.03.09 |
| [μ΄μ체μ ] 컀λμ μ’ λ₯μ ꡬ쑰λ₯Ό μμ보μ. (0) | 2024.03.09 |
| [μ΄μ체μ ] λΆμ° μμ€ν κ³Ό System Callμ΄λ? (1) | 2024.03.05 |