π μΈν°λ½νΈ(Interrupt)μ μ μμ μΈν°λ½νΈκ°λ°μ νμλμ μ²λ¦¬ κ³Όμ μ?
μΈν°λ½νΈλ λ νλ‘μΈμ€ μ€ν μ€ νμ¬ μμ μ μ€λ¨νκ³ , λ λμ μ°μ μμλ₯Ό κ°μ§ μμ μ μ²λ¦¬νκΈ° μν΄ νΉμ μ½λλ₯Ό μ€ννλλ‘ νλ μ νΈμ λλ€. μ£Όλ‘ μ¬μ©μμ ν€λ³΄λλ λ§μ°μ€ μ λ ₯, λλ νλ‘κ·Έλ¨μμ μ€μ λ νμ΄λ¨Έ μ΄λ²€νΈ λ±μΌλ‘ μΈν΄ μΈν°λ½νΈκ° λ°μν©λλ€.
μΈν°λ½νΈκ° λ°μνλ©΄ μ°μ CPUμ μ νΈλ₯Ό 보λ λλ€. κ·Έλ¦¬κ³ νμ¬ μμ μ μ μ₯ν ν λ°μν μΈν°λ½νΈμ ν΄λΉνλ νΈλ€λ¬λ₯Ό μ€νν©λλ€. μ²λ¦¬ ν μ μ₯λ μμ μ 볡ꡬνμ¬ λ€μ μ€ννκ² λ©λλ€.
π μΈν°λ½νΈμ ν΄λ§μ μ°¨μ΄λ?
ν΄λ§μ CPUκ° μ£ΌκΈ°μ μΌλ‘ μ₯μΉμ μμ μμ²μ΄ μλμ§ νμΈνλ λ°©μμ λλ€. μ΄ λ°©μμ CPUκ° κ³μν΄μ μ₯μΉ μνλ₯Ό 체ν¬ν΄μΌ νλ―λ‘ μμμ λ§μ΄ μλͺ¨ν μ μμ΅λλ€. λ°λ©΄, μΈν°λ½νΈλ νΉμ μ΄λ²€νΈκ° λ°μνμ λλ§ CPUμ μ νΈλ₯Ό 보λ΄μ΄ λμνλ―λ‘ CPU μμμ λ ν¨μ¨μ μΌλ‘ μ¬μ©ν μ μμ΅λλ€. λ°λΌμ, μΈν°λ½νΈ λ°©μμ΄ ν΄λ§λ³΄λ€ λ ν¨μ¨μ μ λλ€.
π μΈν°λ½νΈμ μμΈμ μ°¨μ΄λ?
μΈν°λ½νΈλ μμ€ν μμ²μ μν΄ λ°μνλ©°, νμ¬ μμ λ³΄λ€ λ μ€μν μμ μ μ²λ¦¬ν΄μΌ ν λ μ¬μ©λ©λλ€. μλ₯Ό λ€μ΄, μΈλΆ μ₯μΉμ μμ²μ΄λ νμ΄λ¨Έκ° λ°μν λ μΈν°λ½νΈκ° λ°μν©λλ€. λ°λ©΄, μμΈλ νλ‘κ·Έλ¨ μ€ν μ€ μ€λ₯λ νΉμ 쑰건μ μν΄ λ°μν©λλ€. μμΈλ λ³΄ν΅ νλ‘κ·Έλ¨ λ΄μμ μλͺ»λ μ°μ°μ΄λ μκΈ°μΉ μμ μν©μ μν΄ λ°μνλ©°, μ΄λ₯Ό μ²λ¦¬νκΈ° μν νΉλ³ν λ©μ»€λμ¦μ΄ νμν©λλ€.
π μΈν°λ½νΈμ μ°μ μμλ?
μΈν°λ½νΈμ μ°μ μμλ λμμ μ¬λ¬ μΈν°λ½νΈκ° λ°μνμ λ μ΄λ€ μΈν°λ½νΈλ₯Ό λ¨Όμ μ²λ¦¬ν μ§λ₯Ό κ²°μ νλ κΈ°μ€μ λλ€. μ°μ μμκ° λμ μΈν°λ½νΈκ° λ¨Όμ μ²λ¦¬λλ©°, μ΄ μμλ νλμ¨μ΄ κΈ°λ°κ³Ό μννΈμ¨μ΄ κΈ°λ°μΌλ‘ λλμ΄ κ΄λ¦¬λ©λλ€. νλμ¨μ΄ κΈ°λ°μμλ μΈν°λ½νΈ 컨νΈλ‘€λ¬κ° μ°μ μμλ₯Ό κ²°μ νκ³ , μννΈμ¨μ΄ κΈ°λ°μμλ μ΄μ체μ κ° μ΄λ₯Ό κ΄λ¦¬ν©λλ€. λν, μ€μ²© μΈν°λ½νΈλ μ΄λ―Έ μ²λ¦¬ μ€μΈ μΈν°λ½νΈκ° μμ λ λ λμ μ°μ μμμ μΈν°λ½νΈκ° λ°μνλ©΄ νμ¬ μμ μ μ€λ¨νκ³ μλ‘μ΄ μΈν°λ½νΈλ₯Ό μ²λ¦¬νλ λ°©μμΌλ‘, μ€μν μμ μ μ°μ μ μΌλ‘ μ²λ¦¬ν μ μλλ‘ ν©λλ€.
π μννΈμ¨μ΄ μΈν°λ½νΈμ νλμ¨μ΄ μΈν°λ½νΈμ μ°¨μ΄λ?
νλμ¨μ΄ μΈν°λ½νΈλ μΈλΆ μ₯μΉμμ λ°μνλ©°, μλ₯Ό λ€μ΄ ν€λ³΄λλ λ§μ°μ€μ κ°μ μ₯μΉκ° CPUμ μ νΈλ₯Ό 보λ΄μ΄ μμ μ²λ¦¬λ₯Ό μμ²ν©λλ€. λ°λ©΄, μννΈμ¨μ΄ μΈν°λ½νΈλ νλ‘κ·Έλ¨ λ΄λΆμμ λ°μνμ¬ μ΄μ체μ μλΉμ€λ₯Ό μμ²νλ κ²½μ°μ λλ€. μ¦, νλμ¨μ΄ μΈν°λ½νΈλ μΈλΆ νλμ¨μ΄ μ₯μΉμμ λ°μνλ λ°λ©΄, μννΈμ¨μ΄ μΈν°λ½νΈλ νλ‘κ·Έλ¨ λ΄μ λμμ μν΄ λ°μν©λλ€.
μΈν°λ½νΈ μλ£κ΅¬μ‘°λ μ€νμ μ¬μ©νκ² λλ€.
β ISR, Masking
μΈν°λ½νΈ μλΉμ€ 루ν΄(ISR, Interrupt Service Routine) μΈν°λ½νΈ μ²λ¦¬ ν¨μμ΄λ€. μΈν°λ½νΈ λ°μ μ CPUμμ μλμΌλ‘ μ€νλλ€. ν¨μ νΉμ±μ λΉ λ₯΄κ² μ€νλμ΄μΌνκ³ μ€λ¨μ΄ μμ΄μΌνλ€. μλ‘ ν€λ³΄λ, νμ΄λ¨Έ μΈν°λ½νΈκ° λ°μνλ©΄ ISRκ° μ€νλμ΄ μ΄λ²€νΈ μ²λ¦¬ ν μ΄μ μμ μΌλ‘ 볡κ·νκ² λλ€.
μΈν°λ½νΈ λ§μ€ν¬ (Interrupt Mask)λ νΉμ μΈν°λ½νΈλ₯Ό λΉνμ±ννκ±°λ μ°μ μμλ₯Ό μ‘°μ ν΄ μ²λ¦¬νμ§ μλλ‘ νλ κΈ°μ μ΄λ€. μ΄κ²μ΄ νμ±ν λλ©΄ CPUκ° λ¬΄μνκ² λμ΄ μ²λ¦¬λμ§ μλλ€. νλμ¨μ΄μ , μννΈμ¨μ΄μ μΌλ‘ ꡬνκ°λ₯νλ€. μλ‘ κ²μ, 보μ λ± νΉμ νλ‘κ·Έλ¨μμ μ¬μ©μμκ² νΉμ μμ μ ν€λ³΄λ μ λ ₯μ λ°μ§ μκ² μ μ΄ ν μ μλ€. μ¬μ©μ μ λ ₯μ ν΅ν κ°μ μ λ§μ μ μλ€. λ€λ₯Έ μμλ‘λ λ°°ν°λ¦¬ μ μ½μ μν μ μ λ ₯ λͺ¨λκ° μλ€.
'ποΈ μ€ν°λ νλ > π CS μ€ν°λ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[μ΄μ체μ ] 컨ν μ€νΈ μ€μμΉ(Context Switching) λ©΄μ μ§λ¬Έ μ 리 (0) | 2024.11.26 |
---|---|
[λ€νΈμν¬] λ©ν° μΊμ€νΈμ λΈλ‘λμΊμ€νΈ λ©΄μ μ§λ¬Έ μ 리 (0) | 2024.11.25 |
[μ΄μ체μ ] μμ€ν μ½(system call) λ©΄μ μ§λ¬Έ μ 리 (0) | 2024.11.21 |
[λ€νΈμν¬] TCP νλ¦μ μ΄ λ©΄μ μ§λ¬Έ μ 리 (0) | 2024.11.20 |
[λ€νΈμν¬] TCP λ©΄μ μ§λ¬Έ μ 리 (1) | 2024.11.18 |