μ΄μ체μ μ νλμ¨μ΄ κ°μ μνΈλμ(ν΄λ§)
μ΄μ체μ λ λ μ§μ€ν°(μν, λͺ λ Ή, λ°μ΄ν° λ μ§μ€ν°)λ₯Ό μ½κ³ μ°λ κ²μ ν΅ν΄ νλμ¨μ΄ μ₯μΉμ λμμ μ μ΄ν μ μκ² λλ€.
- μν(Status) : νλμ¨μ΄ μ₯μΉμ νμ¬ μνλ₯Ό μ½μ μ μλ λ μ§μ€ν°
- λͺ λ Ή(Command) : νλμ¨μ΄ μ₯μΉκ° νΉμ λμμ νλλ‘ μμ²ν λ μ¬μ©
- λ°μ΄ν°(Data) : νλμ¨μ΄ μ₯μΉμ λ°μ΄ν°λ₯Ό 보λ΄κ±°λ λ°κ±°λ ν λ μ¬μ©
μ΄μ체μ μ νλμ¨μ΄ μ₯μΉ κ°μ ν΄λ§μ ν΅ν μνΈμμ©μ λ€μκ³Ό κ°λ€.
- ν΄λ§(Polling)μ νλ€.
- ν΄λ§(Polling) : μ΄μ체μ κ° νλμ¨μ΄ μ₯μΉμ μν λ μ§μ€ν°λ₯Ό μ½μμΌλ‘μ¨ λͺ λ Ήμ μμ μ¬λΆλ₯Ό μ£ΌκΈ°μ μΌλ‘ νμΈνλ κ²μ΄λ€.
- μ¦, νλμ¨μ΄μ₯μΉμ μνλ₯Ό μμλ‘ μ²΄ν¬νμ¬ λͺ λ Ήμ λ°μ μ μλμ§ νμΈνλ κ²μ λ§νλ€.
- μ΄μ체μ κ° λ°μ΄ν° λ μ§μ€ν°μ λ°μ΄ν°λ₯Ό μ λ¬νλ€.
- μ΄μ체μ κ° λͺ λ Ή λ μ§μ€ν°μ λͺ λ Ήμ κΈ°λ‘νλ€.
- μ΄μ체μ λ νλμ¨μ΄ μ₯μΉκ° νΉμ λμμ μ²λ¦¬νμλμ§ ν΄λ§ λ°λ³΅λ¬Έμ λλ©΄μ κΈ°λ€λ¦°λ€.(μ±κ³΅/μ€ν¨ μ½λλ₯Ό λ°κ² λ¨)
ν΄λ§μ νλ λμμλ λ€λ₯Έ νλ‘μΈμ€μκ² CPUλ₯Ό μλνμ§ μκ³ νλμ¨μ΄ μ₯μΉκ° λμμ μλ£ν λκΉμ§ κ³μ 루νλ₯Ό λλ©΄μ νλμ¨μ΄ μνλ₯Ό 체ν¬νκ² λλ€.
→ νλμ¨μ΄ μ₯μΉμ μλλ λ§€μ° λ리기 λλ¬Έμ CPUλ₯Ό λ§μ΄ λλΉνκ² λλ€.
μΈν°λ½νΈ
CPUκ° νλ‘κ·Έλ¨μ μ€ννκ³ μμ λ, I/O νλμ¨μ΄ λ±μ μ₯μΉμ μμΈμν©μ΄ λ°μνμ¬ μ²λ¦¬κ° νμν κ²½μ° CPUμκ² μλ € μ²λ¦¬ν μ μλλ‘ νλ κ²μ λ§νλ€.
- CPUμ μ μμ μΈ νλ‘κ·Έλ¨ μ€νμ λ°©ν΄νλ€λ μλ―Έ
μ΄μ체μ λ λλ°μ΄μ€λ₯Ό ν΄λ§νλ λμ μ I/O μμ²ν νλ‘μΈμ€λ₯Ό λΈλ‘μν€κ³ CPUλ₯Ό λ€λ₯Έ νλ‘μΈμ€μκ² μλνλ€. μ₯μΉκ° λλ§μΉλ©΄ νλμ¨μ΄ μΈν°λ½νΈλ₯Ό λ°μμν€κ³ CPUλ μ΄μ체μ κ° λ―Έλ¦¬ μ μν΄ λμ μΈν°λ½νΈ μλΉμ€ 루ν΄(ISR) λλ μΈν°λ½νΈ νΈλ€λ¬(Interrput Handler)λ₯Ό μ€ννλ€. μΈν°λ½νΈ νΈλ€λ¬λ μ μΆλ ₯ μμ², I/O λκΈ°μ€μΈ νλ‘μΈμ€ κΉ¨μ°κΈ° λ±μ νμ¬ νλ‘μΈμ€κ° μμ μ κ³μν μ μλλ‘ νλ€.
μΈλΆ μΈν°λ½νΈ, λ΄λΆ μΈν°λ½νΈ, μννΈμ¨μ΄ μΈν°λ½νΈκ° μλ€.
- μΈλΆ/λ΄λΆ μΈν°λ½νΈλ CPUμ νλμ¨μ΄ μ νΈμ μν΄ λ°μ
- μννΈμ¨μ΄ μΈν°λ½νΈλ λͺ λ Ήμ΄μ μνμ μν΄ λ°μ
μΈλΆ μΈν°λ½νΈ
μ μΆλ ₯ μ₯μΉ, νμ΄λ° μ₯μΉ, μ μ λ± μΈλΆμ μΈ μμΈμΌλ‘ λ°μ
- νμ΄λ¨Έ μΈν°λ½νΈ : νμ΄λ¨Έκ° μΌμ ν μκ° κ°κ²©μΌλ‘ μ€μμ²λ¦¬μ₯μΉμκ² μΈν°λ½νΈλ₯Ό μμ²
- μ μΆλ ₯ μΈν°λ½νΈ : μλκ° λλ¦° μ μΆλ ₯μ₯μΉκ° μ μΆλ ₯ μ€λΉκ° μλ£λμμμ μ리기 μν΄ μΈν°λ½νΈλ₯Ό μμ²
λ΄λΆ μΈν°λ½νΈ
Trapμ΄λΌκ³ λΆλ₯΄λ©°, μλͺ»λ λͺ λ Ήμ΄λ λ°μ΄ν°λ₯Ό μ¬μ©ν λ λ°μ
0μΌλ‘ λλκΈ°, μ€λ²νλ‘μ°, λͺ λ Ήμ΄ μλͺ» μ¬μ©ν κ²½μ°(Exception)
- νλμ¨μ΄ κ³ μ₯(Hardware Interrupt)
- μ»΄ν¨ν° κ³ μ₯
- λ°μ΄ν° μ λ¬ κ³Όμ μμμ λΉνΈ μ€λ₯
- μ μμ΄ λκ° κ²½μ°
- μ€νν μ μλ λͺ λ Ήμ΄ : κΈ°μ΅μ₯μΉμμ μΈμΆν λͺ λ Ήμ΄μ λΉνΈ ν¨ν΄μ΄ μ μλμ΄ μμ§ μμ κ²½μ°
- λͺ λ Ήμ΄ μ€ν μ€λ₯ : λλκΈ° 0μ νλ κ²½μ°
- μ¬μ© κΆν μλ°° : μ¬μ©μκ° μ΄μ체μ λ§ μ¬μ©ν μ μλ μμμ μ‘μΈμ€νλ κ²½μ°
μννΈμ¨μ΄ μΈν°λ½νΈ
νλ‘κ·Έλ¨ μ²λ¦¬ μ€ λͺ λ Ήμ μμ²μ μν΄ λ°μν κ²(SVC μΈν°λ½νΈ)
- μ¬μ©μκ° νλ‘κ·Έλ¨μ μ€νμν¬ λ λ°μ : μννΈμ¨μ΄ μ΄μ© μ€μ λ€λ₯Έ νλ‘μΈμ€λ₯Ό μ€νμν€λ©΄ μλΆν μ²λ¦¬λ₯Ό μν΄ μμ ν λΉ λμμ΄ μνλλ€.
μΈν°λ½νΈ μ²λ¦¬ κ³Όμ
μ°μ , λͺ λ Ήμ΄ μ¬μ΄ν΄μ μΈμΆ(fetch stage)κ³Ό μ€ν(execution stage) λ κ°μ§ λ¨κ³λ₯Ό λ°λ³΅ν΄μ μννλ€.
κ·Έλ°λ° μΈν°λ½νΈ μμ²μ΄ λ€μ΄μλ€κ³ ν΄μ λ°λ‘ μ΄λ₯Ό μ²λ¦¬νλ κ²μ΄ μλλΌ, λͺ λ Ήμ΄ Nμ μ€ν λ¨κ³λ₯Ό λ§μ³μΌ νλ€. λͺ λ Ήμ΄μ μ€νλ¨κ³λ₯Ό λ§μΉ λλ§λ€ μ€μμ²λ¦¬μ₯μΉ(CPU)λ λ°λ³΅μ μΌλ‘ μΈν°λ½νΈ μμ²μ΄ μλμ§ κ³μν΄μ νμΈνλ€. μΈν°λ½νΈ μμ²μ΄ μμ΄μΌ μΈν°λ½νΈ μλΉμ€ λ¨κ³λ₯Ό μ§ννλ€.
μ’ λ ν° κ°λ μΌλ‘ μ΄ν΄λ³Έλ€λ©΄ μλμ κ°μ κ·Έλ¦Όμ΄ λλ€.
μ£Ό νλ‘κ·Έλ¨μ΄ μ€νλλ€κ° μΈν°λ½νΈκ° λ°μνλ€. νμ¬ μν μ€μΈ νλ‘κ·Έλ¨μ λ©μΆκ³ , μν λ μ§μ€ν°μ PC λ±μ μ€νμ μ μ μ μ₯ν λ€μ μΈν°λ½νΈ μλΉμ€ 루ν΄μΌλ‘ κ°λ€. (μ μ μ μ₯νλ μ΄μ λ, μΈν°λ½νΈ μλΉμ€ 루ν΄μ΄ λλ λ€ λ€μ μλ μμ μΌλ‘ λμμμΌ νκΈ° λλ¬Έ)
process A μ€ν μ€ λμ€ν¬μμ μ΄λ€ λ°μ΄ν°λ₯Ό μ½μ΄μ€λΌλ λͺ λ Ήμ λ°μλ€κ³ κ°μ ν΄λ³΄μ.
- process Aλ system callμ ν΅ν΄ μΈν°λ½νΈλ₯Ό λ°μμν¨λ€.
- CPUλ νμ¬ μ§ν μ€μΈ κΈ°κ³μ΄ μ½λλ₯Ό μλ£νλ€.
- νμ¬κΉμ§ μνμ€μ΄μλ μνλ₯Ό ν΄λΉ processμ PCB(Process Control Block)μ μ μ₯νλ€. (μνμ€μ΄λ MEMORYμ£Όμ, λ μ§μ€ν° κ°, νλμ¨μ΄ μν λ±...)
- PC(Program Counter, IP)μ λ€μμ μ€νν λͺ λ Ήμ μ£Όμλ₯Ό μ μ₯νλ€.
- μΈν°λ½νΈ 벑ν°λ₯Ό μ½κ³ ISR μ£Όμκ°μ μ»μ΄ ISR(Interrupt Service Routine)λ‘ μ ννμ¬ λ£¨ν΄μ μ€ννλ€.
- ν΄λΉ μ½λλ₯Ό μ€ννλ€.
- ν΄λΉ μΌμ λ€ μ²λ¦¬νλ©΄, λνΌμν¨ λ μ§μ€ν°λ₯Ό 볡μνλ€.
- ISRμ λμ IRET λͺ
λ Ήμ΄μ μν΄ μΈν°λ½νΈκ° ν΄μ λλ€.
- IRET : Intel μν€ν μ²μ μ΄μ λΈλ¦¬ λͺ λ Ήμ΄ μ€ νλλ‘ 'μΈν°λ½νΈ μ²λ¦¬ μμ λͺ¨λ μ²λ¦¬λ₯Ό μλ£νκ³ λ€μ νμ€ν¬λ‘ 볡ꡬ'νλ λͺ λ Ήμ΄
- IRET λͺ λ Ήμ΄κ° μ€νλλ©΄, λνΌμν¨ PC κ°μ 볡μνμ¬ μ΄μ μ€ν μμΉλ‘ 볡μνλ€.
- μΈν°λ½νΈ λ²νΈλ μμΈμν© μΈν°λ½νΈλ₯Ό μ μΈνκ³ μ΄μ체μ κ° κ²°μ νλ€. 리λ
μ€μμ μΈν°λ½νΈ λ²νΈλ μλμ κ°λ€.
- 0 ~ 31 : μμΈμν© μΈν°λ½νΈ
- 32 ~ 47 : νλμ¨μ΄ μΈν°λ½νΈ
- 128 : μμ€ν μ½
ν΄λ§ vs μΈν°λ½νΈ
- ν΄λ§ : νλ‘μΈμ€ 1μ΄ μ€ν μ€μ Diskλ‘λΆν° I/O μμ²μ΄ λ°μνλ©΄, μ΄μ체μ λ I/O μμ²μ΄ μλ£λ λκΉμ§ λ°λ³΅μ μΌλ‘ ν΄λ§νλ€.(p). λμ€ν¬κ° I/O μμ²μ μ²λ¦¬λ₯Ό μλ£νλ©΄ νλ‘μΈμ€ 1μ΄ λ€μ λμνλ€.
- μΈν°λ½νΈ : νλ‘μΈμ€ 1μ΄ μ€ν μ€μ μλ€κ° Diskλ‘λΆν° I/O μμ²μ λ°μΌλ©΄, μμ²μ μ²λ¦¬νλ λμμ μ΄μ체μ λ νλ‘μΈμ€ 2λ₯Ό CPUμμ μ€νμν€κ² λλ€. νλ‘μΈμ€ 1μ λν λμ€ν¬ μμ²μ΄ μλ£κ° λλ©΄ μΈν°λ½νΈλ₯Ό λ°μμμΌ μ΄μ체μ λ νλ‘μΈμ€ 1μ λ€μ CPUμμ μ€νμν¨λ€.
μ΄μ²λΌ μΈν°λ½νΈλ₯Ό μ¬μ©νλ©΄ CPU μ°μ°κ³Ό I/O μ₯μΉ μμ μ μ€μ²©μμΌ μνν μ μκ² λλ€. κ·Έλ κΈ° λλ¬Έμ ν΄λ§λ³΄λ€ CPU μ¬μ©λ₯ μ λμΌ μ μλ€.
- νμ§λ§ 무쑰건 ν΄λ§λ³΄λ€ μ’λ€κ³ ν μλ μλ€.
- μλ₯Ό λ€μ΄, λ¨ νλ²μ ν΄λ§μΌλ‘λ§ λλ μ λμ λΉ λ₯Έ νλμ¨μ΄ μ₯μΉλΌλ©΄ μΈν°λ½νΈλ³΄λ€ ν΄λ§μ΄ λ ν¨μ¨μ μ΄λΌκ³ ν μ μλ€.
- μΈν°λ½νΈλ₯Ό μ¬μ©νκ² λλ©΄ νμ¬ μ€νμ€μΈ νλ‘μΈμ€λ₯Ό λ€λ₯Έ νλ‘μΈμ€λ‘ λ¬Έλ§₯κ΅ν(Context Switching)νκ² λκ³ μ΄ λ λ§μ λΉμ©μ΄ μλ°λκΈ° λλ¬Έμ΄λ€.
- κ·Έλ κΈ° λλ¬Έμ λΉ λ₯Έ νλμ¨μ΄ μ₯μΉλΌλ©΄ ν΄λ§μ΄ λ ν¨μ¨μ μ΄κ³ λλ¦° νλμ¨μ΄ μ₯μΉλΌλ©΄ μΈν°λ½νΈκ° λ ν¨μ¨μ μ΄λΌκ³ ν μ μλ€.
μ¦, 컨νΈλ‘€λ¬κ° μ λ ₯μ λ°μλ€μ΄λ λ°©λ²(μ°μ μμ νλ³λ°©λ²)μλ λκ°μ§κ° μλ€.
- ν΄λ§ λ°©μ
- μ¬μ©μκ° λͺ λ Ήμ΄λ₯Ό μ¬μ©ν΄ μ λ ₯ νμ κ°μ κ³μ μ½μ΄ λ³νλ₯Ό μμλ΄λ λ°©μ
- μΈν°λ½νΈ μμ² νλκ·Έλ₯Ό μ°¨λ‘λ‘ λΉκ΅νμ¬ μ°μ μμκ° κ°μ₯ λμ μΈν°λ½νΈ μμμ μ°Ύμ μ΄μ λ§λ μΈν°λ½νΈ μλΉμ€ 루ν΄μ μννλ€. (νλμ¨μ΄μ λΉν΄ μλ λλ¦Ό)
- μΈν°λ½νΈ λ°©μ
- MCU(λ§μ΄ν¬λ‘ 컨νΈλ‘€λ¬ μ λ, Micro Controller Unit, μ»΄ν¨ν°)μμ²΄κ° νλμ¨μ΄μ μΌλ‘ λ³νλ₯Ό 체ν¬νμ¬ λ³ν μμλ§ μΌμ ν λμμ νλ λ°©μ
- Daisy Chain
- λ³λ ¬ μ°μ μμ λΆμ¬
- MCU(λ§μ΄ν¬λ‘ 컨νΈλ‘€λ¬ μ λ, Micro Controller Unit, μ»΄ν¨ν°)μμ²΄κ° νλμ¨μ΄μ μΌλ‘ λ³νλ₯Ό 체ν¬νμ¬ λ³ν μμλ§ μΌμ ν λμμ νλ λ°©μ
μΈν°λ½νΈ λ°©μμ νλμ¨μ΄λ‘ μ§μμ λ°μμΌ νλ μ μ½μ΄ μμ§λ§, ν΄λ§μ λΉν΄ μ μνκ² λμνλ κ²μ΄ κ°λ₯νλ€. λ°λΌμ μ€μκ° λμμ΄ νμν λλ νμμ μΈ κΈ°λ₯μ΄λ€.
μ¦, μΈν°λ½νΈλ λ°μμκΈ°λ₯Ό μμΈ‘νκΈ° νλ κ²½μ°μ 컨νΈλ‘€λ¬κ° κ°μ₯ λΉ λ₯΄κ² λμν μ μλ λ°©λ²μ΄λ€.
λκΈ°/λΉλκΈ° κ΄μ μμ λλ λ³Έ μΈν°λ½νΈ
μ°Έκ³
'πCS > OS' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[OS] μμ€ν νΈμΆ(System Calls) (0) | 2021.08.31 |
---|---|
[OS] νλ‘μΈμ€ μ£Όμ κ³΅κ° (0) | 2021.08.23 |
[OS] νλ‘μΈμ€ vs μ€λ λ (0) | 2021.08.18 |
[OS] CPU μ€μΌμ€λ§ (0) | 2021.08.11 |
[OS] μ€μΌμ€λ¬μ μ’ λ₯: μ₯κΈ°, μ€κΈ°, λ¨κΈ° μ€μΌμ€λ¬ (0) | 2021.08.04 |
λκΈ