[μ΄μ체μ ] νλ‘μΈμ€μ κΈ°λ³Έ κ°λ μμ보기
νλ‘μΈμ€λ?
νλ‘μΈμ€λ μ€ν μ€μΈ νλ‘κ·Έλ¨μ΄λ€. xxx.exeλ νλ‘κ·Έλ¨μ΄μ§λ§, νλ‘μΈμ€λ μλλ€. μ΄ νλ‘κ·Έλ¨μ λλΈν΄λ¦νμ¬ μ€νμμΌμΌλ§ νλ‘μΈμ€λΌκ³ νλ κ²μ΄λ€.
μ‘°κΈ λ μ ννκ² λ§νμλ©΄,
μΌλ ¨μ λͺ λ Ήμ΄μ μ€ν, νΉμ μνλ‘ νΉμ μ§ μ΄μ§λ μ€νμ λ¨μμ΄λ€.
κ·Έλ¬λ©΄ λκ° νλ‘μΈμ€λ₯Ό λ§λ€κΉ? κ²°κ΅ λ κ°μ§ μ€ νλκ° λ§λ€κ² λλλ°, 첫 λ²μ§Έλ μΈκ°μ΄λ€. μΈκ°μ΄ GUI νΉμ Command Lineμ ν΅νμ¬ νλ‘κ·Έλ¨μ μν¨λ€. λ λ²μ§Έλ νλ‘μΈμ€μ μν΄μλ€. μ΄λμ κ²½μ° OS process νΉμ User Processκ° νλ‘μΈμ€λ₯Ό λ§λ€κ² λλ€.
νλ‘μΈμ€μ κ΅¬μ± μμ?
- μ€νν μ μλ νλ‘κ·Έλ¨(code, text)
- νλ‘κ·Έλ¨μ μ¬μ©λλ λ°μ΄ν°
- κΈ°ν μ€νμ μν μ΄μ체μ μ μμ(Execution Context)
νλ‘μΈμ€μ μν
Main Memoryμμ 0~5000κΉμ§λ OS κΈ°λ₯μ λͺ¨μλμ 컀λμ΄κ³ , κ·Έ μμ _Dispatcher_λΌλ ν¨μκ° μλ€. _Dispatcher_λ νλμ νλ‘μΈμ€μμ λ€λ₯Έ νλ‘μΈμ€λ‘ νλ‘μΈμλ₯Ό λ³κ²½(Switch)νλ μν μ νλ€.
νλ‘μΈμ€ Aλ 5000~5012κΉμ§μ΄κ³ , νλ‘μΈμ€ Bλ 8000~8005, νλ‘μΈμ€ Cλ 12000 ~ 12011κΉμ§λΌκ³ ν΄λ³΄μ. μ΄λ¬ν μν©μμ μ°¨λ‘λλ‘ μ½λκ° μ€νλ κ²μ΄λ€.
κ·Έλ¦¬κ³ μ΄μ μ λ°°μ΄ time share systemμ λ°λΌμ κ° νλ‘μΈμ€λ€μ μΌμ ν time sliceμ λ°λΌ λ²κ°μ κ°λ©΄μ νλ‘μΈμ€λ₯Ό μ§ννλ€. μ¬κΈ°μ μ€μν κ²μ Time outμ΄ λ¨μ λ°λΌ νλμμ μΆκ°μ μΈ μ½λκ° λν΄μ§μ μ μ μλ€.
μ΄ μ½λλ€μ 100λ²λμ ν΄λΉλλ μ½λλ€λ‘, OS κΈ°λ₯μ μννλ ν¨μμ΄λ€. κ·Έλ¦¬κ³ μ΄μ κ·Έλ¦Όμ μμΈν 보μλ€λ©΄ μ΄κ²μ΄ 무μμΈμ§ λμΉμ± μ μμ κ²μ΄λ€. μ΄λ _Dispatcher_ν¨μμ΄λ€. μ¦, νλ‘μΈμ€ κ°μ Switchλ₯Ό μν΄μ μ½μ λ κ²μ΄λ€.
κ·Έλ λ€λ©΄, νλ‘μΈμ€ Aμμ νλ‘μΈμ€ Bλ‘μ Switchκ° μΌμ΄λ¬λ€. νμ§λ§ νλ‘μΈμ€ Bλ μ¬μ©μμ μ λ ₯μ λ°λ I/O Reqeustκ° μΌμ΄λ μν©μ΄λ€. μ΄μ λ°λΌ νλ‘μΈμλ μλ¬΄λ° μΌμ ν μ μμΌλ―λ‘, νλ‘μΈμ€λ₯Ό Switch ν΄μΌ νλ€. λ°λΌμ νλ‘μΈμ€ Cλ‘ Switch νλ€.
μ΄λ¬ν νλ¦λλ‘ μ½λκ° μ§νλλ€λ©΄ νλ‘μΈμ€ A, B, C, A, C... μμΌλ‘ μ§νλ¨μ μ μ μλ€. μ€μν κ²μ νλ‘μΈμλ μ€νν μ μλ νλ‘μΈμ€νν κ°λ€λ κ²μ΄λ€.
λν OS κΈ°λ₯μ μννλ ν¨μκ° λ°±κ·ΈλΌμ΄λμμ λμκ°λ κ²μ΄ μλλΌ μΌλ° νλ‘μΈμ€λ€κ³Ό ν¨κ» μμ°¨μ μΌλ‘ μ€νλλ€.
Two-State Process Model
_State trasition diagram_μ μμ λ§ν νλ‘μΈμ€μ νλ¦μ μμ보기 μ½κ² λμνν κ²μ΄λ€. κ° νλ‘μΈμ€λ€μ κ°μ _State trasition diagram_μ μ§λκ³ μμΌλ©°, _Dispatch_ν¨μλ₯Ό ν΅ν΄ _Running_μνκ° λκ±°λ _Pause_μ μνμ¬ _Not Running_λλ μνλ₯Ό κ°μ§λ€.
νλ‘μΈμ€λ₯Ό λ§λλ κ²½μ°
νλ‘μΈμ€λ₯Ό λ§λλ κ²½μ°λ μ¬λ¬ κ°μ§κ° μκ² μ§λ§, λ€μ μΈ κ°μ§λ₯Ό μ£Όμ μ΄μ λ‘ μΌλλ€.
- User Commandμ μν΄ λ§λ€μ΄μ Έ μ¬μ©λκΈ° μν¨
- foreground modeμ background modeλ‘ νλ‘κ·Έλ¨μ μ€ννλ€.
- μ΄λ background mode(batch)μμλ OSλ νλ‘κ·Έλ¨μ μ€νμ μ‘°κΈ λ¦μΆλ€.
- OSμ μν΄ μ€νλλ μλΉμ€λ₯Ό μ¬μ©νκΈ° μν¨
- νλ‘κ·Έλ¨ λΆν μμ OSκ° νΉμ μμ μ μμνμ¬ μ€νμν€κΈ° μν¨μ΄λ€.
- μ΄λ₯Ό λ°λͺ¬ νλ‘μΈμ€λΌκ³ λ νλ€.
- μ΄λ―Έ μ‘΄μ¬νλ νλ‘μΈμ€μ μμ νλ‘μΈμ€λ₯Ό λ§λ€κΈ° μν¨
- νλ‘μΈμ€μ μμ μ΄ λ³΅μ‘ν κ²½μ° νμ μμ νλ‘μΈμ€λ₯Ό λ§λ€μ΄ λΆλ΄νμ¬ μ¬μ©ν μ μλ€.
μ€μν κ²μ λͺ¨λ OSμ μν΄ μμ±λλ νλ‘μΈμ€λΌλ μ μ΄λ€.
νλ‘μΈμ€λ₯Ό μ’ λ£μν€λ κ²½μ°
- μΌλ°μ μΈ μ’
λ£(Normal completion)
- μ μμ μΌλ‘ _exit_ν¨μκ° μ€νλμ΄ μ’ λ£λλ€.
- κ·μΉ μλ°(Protection Error)
- νμ©λμ§ μμ λ©λͺ¨λ¦¬μ μ κ·Όνλ € νλ κ²½μ°, μ’ λ£λλ€.
- λΆλͺ¨μ μμ²(Parent Request)
- λΆλͺ¨κ° μμ νλ‘μΈμ€λ₯Ό μ’ λ£μν€λ κ²½μ°μ΄λ€.
- λΉμ μμ μΈ μλ¬
- Divide by Zero, I/O μ€ν¨, μ ν΄μ§μ§ μμ λͺ λ Ήμ΄ μ€ν λ±
μ¬κΈ°μ μ μμ μΈ μ’ λ£λ μΌλ°μ μΈ μ’ λ£, λΆλͺ¨μ μμ²μ μν μ’ λ£μ΄λ©° λλ¨Έμ§ λ κ°λ λΉ μ μμ μΈ μ’ λ£μ΄λ€.