- toc {:toc}
I/O Hardware
- I/O νλμ¨μ΄λ signal μ 보λ΄λ©΄μ OS μ μν΅νλ€.
- Port : μ₯μΉκ° μ°κ²° μ§μ
- Bus : PCI or PCIe bus, Expansion bus, Serial-Attached SCSI (SAS) for disks
- Controller : 컨νΈλ‘€λ¬λ₯Ό μ΄μ©ν΄ device μ μ κ·Όνλ€.
- λ°μ΄ν°λ₯Ό λμ€ν¬μ μ°λ μν , Error collection μν
- λ©μΈ λ©λͺ¨λ¦¬ μ¬μ©νλλ‘ λ§λ€μ΄μ€
- Direct I/O : I/O port number λ₯Ό μ¬μ©νμ¬ ν λΉ (λ©μΈ λ©λͺ¨λ¦¬ μ£Όμ체κ³μ μνμ§ μμ)
- Memory-Mapped I/O : Direct I/O μ λ°λλ‘ λ©μΈ λ©λͺ¨λ¦¬ μ£Όμ체κ³μ I/O device λ₯Ό ν΅ν©ν΄μ μ¬μ©
- μ£Όμλ₯Ό ν΅ν΄μ λ©μΈ λ©λͺ¨λ¦¬ μ£ΌμμΈμ§ I/O μ£ΌμμΈμ§ κ΅¬λΆ κ°λ₯
Polling
- κ° I/O byte μ λν΄ λλ°μ΄μ€μ λ³νκ° μλμ§ μ§μμ μΌλ‘ κ°μνλ λ°©μ (busy waiting λ°μ)
- Busy bit λ₯Ό state register λ‘ λΆν° μ½λλ€. (0 λ λ κΉμ§)
- Host(CPU) κ° read write bit λ₯Ό μ€μ νκ³ write λ©΄ data-out register μ λ°μ΄ν°λ₯Ό 볡μ¬νλ€.
- Host κ° command-ready bit λ₯Ό 1 λ‘ μ€μ νλ€.
- Controller κ° busy bit μ 1 λ‘ μ€μ νκ³ μ μ‘μ μμνλ€.
- μ μ‘μ΄ λλλ©΄ controller λ bit λ€μ λ€μ μ΄κΈ°ννλ€.
Interrupts
- CPU κ° λͺ¨λ instruction μ μ€ννκ³ λ ν interrupt-request line μ νμΈ
- Interupt νμ§λλ©΄ CPU κ° λ©λͺ¨λ¦¬μ κ³ μ λ μ£Όμμ μμΉν interrupt request routine μΌλ‘ μ΄λ
- CPU β 2 κ°μ interrupt request line μ κ°λλ€.
- Nonmaskable : ν볡 λΆκ°ν λ©λͺ¨λ¦¬ μ€λ₯μ λν λ§€μ° μ€μν μΈν°λ½νΈ (μ¦μ μ²λ¦¬λμ΄μΌ νλ€.)
- Maskable : μμ²λ 컨νΈλ‘€λ¬μ μν΄ μ²λ¦¬λλ μΈν°λ½νΈ
- Interrupt vector β μ¬λ°λ₯Έ handler λ‘ interrupt μ μ‘
- ν΄λΉ handler μ λν memory address ν¬ν¨
- OS λ boot time μ κ΄λ ¨λ interrupt handler λ₯Ό μ€μΉνλ€.
- μμΈμ²λ¦¬λ₯Ό μν΄μλ μ¬μ©λλ€.
- Multi-CPU λ μΈν°λ½νΈλ₯Ό λμμ μ²λ¦¬ν μ μλ€.
- λΉλ²νκ³ μκ°μ λ―Όκ°ν μ²λ¦¬μ μ¬μ©νκ³ λΉ λ₯΄λ€.
Direct Memory Access
- I/O κ° λ°μνλ κ²½μ° device μμ CPU λ‘ polling, interrupt λ°©μμ ν΅ν΄ μ νΈλ₯Ό 보λ΄κ³ CPU κ° λ€μμ signal μ μ²λ¦¬
- DMA λ°©μμμλ CPU λ₯Ό κ±°μΉμ§ μκ³ λ°λ‘ Main memory λ‘ μ κ·Όνλ€.
- DMA controller νμ
- μλ λ°©μ
- CPU λ DMA command block μ λ©λͺ¨λ¦¬μ μμ±
- CPU κ° DMA command block μ£Όμλ₯Ό DMA controller μ κΈ°λ‘νκ³ λ€λ₯Έ μμ μ μ§ν
- DMA contoller λ μ§μ λ©λͺ¨λ¦¬ λ²μ€λ₯Ό μ΄μν΄ ν μλμ© μ μ‘
Kernel I/O Structure
- I/O system call μ device behavior λ€μ μΊ‘μννλ€.
Block and Character Devices
- Block device : Block λ¨μλ‘ λ°μ΄ν°λ₯Ό μ£Όκ³ λ°λ κ².
- Block device λ disk drive λ₯Ό ν¬ν¨νλ€.
- Command : read(), write(), seek()
- Raw I/O, direct I/O(buffering, locking μμ΄), λλ file-system μ κ·Όμ λ§νλ€.
- Demand paging ν΅ν΄ κ°μ Έμ¨ virtual memory, cluster μ νμΌ mapping β Block λ¨μ
- Character device : Character λ¨μλ‘ μ£Όκ³ λ°λ κ²
- Command : get(), put()
Clocks and Timers
- Basic function
- νμ¬ μκ°
- κ²½κ³Ό μκ°
- X μ°μ°μ μν΄ λ°μλ μκ° T
Clock signal λ§λ€μ΄ μ¬μ©
Nonblocking and Asynchronous I/O
- Blocking : I/O μμ²μ΄ μλ£λ λκΉμ§ νλ‘μΈμ€ μ€λ¨
- Nonblocking : I/O μμ² ν κΈ°λ€λ¦¬μ§ μκ³ νλ‘μΈμ€ μ§ν.
- Asynchronous : I/O μμ² ν I/O μ²λ¦¬ μλ£λμλ€κ³ interrupt callback μ€λ©΄ λ°λλ€.