πŸ“˜ 였늘의 ν•™μŠ΅λ…ΈνŠΈ (Day 4 – Keyboard & Interrupt)

1. 전체 흐름 이해

ν‚€λ³΄λ“œ μž…λ ₯
β†’ IRQ1 λ°œμƒ
β†’ PIC
β†’ IDT[0x21]
β†’ irq1 (ASM stub)
β†’ irq1_handler (C)
β†’ scancode 읽기 (inb 0x60)
β†’ 처리
β†’ EOI
β†’ 볡귀

핡심:

μ™ΈλΆ€ ν•˜λ“œμ›¨μ–΄ 이벀트λ₯Ό OSκ°€ 직접 μ²˜λ¦¬ν•˜κΈ° μ‹œμž‘

2. PIC & IRQ 정리

PIC (Programmable Interrupt Controller)
β†’ ν•˜λ“œμ›¨μ–΄ μΈν„°λŸ½νŠΈ κ΄€λ¦¬μž

IRQ
β†’ μž₯μΉ˜κ°€ λ³΄λ‚΄λŠ” μΈν„°λŸ½νŠΈ 번호

IRQ0 β†’ Timer (PIT)
IRQ1 β†’ Keyboard

문제:

κΈ°μ‘΄ IRQ λ²ˆν˜Έκ°€ CPU μ˜ˆμ™Έ(0x00~0x1F)와 좩돌

ν•΄κ²°:

PIC remap
β†’ IRQ0~15 β†’ 0x20~0x2F둜 이동

κ²°κ³Ό:

Keyboard IRQ1 β†’ IDT 0x21

3. PIC remap 핡심 ꡬ쑰

ICW1 β†’ μ΄ˆκΈ°ν™” μ‹œμž‘
ICW2 β†’ μΈν„°λŸ½νŠΈ μ‹œμž‘ 번호 (0x20 / 0x28)
ICW3 β†’ Master-Slave μ—°κ²°
ICW4 β†’ 8086 λͺ¨λ“œ

μ€‘μš” κ°œλ…:

PIC 섀정은 "κ°’ ν•˜λ‚˜"κ°€ μ•„λ‹ˆλΌ "μˆœμ„œ 기반 ν”„λ‘œν† μ½œ"