Chapter#18 I/O Devices
I/O Devices
I/O System Architecture
memory bus를 통해서 main memory가 cpu에 붙는다
I/O bus를 통해서 system에 연결된다
Memory Bus : 100~300 GB/s
General I/O Bus : PCIe3.0 36GB/s ~ PCIe5.0 100GB/s
Peripheral I/O Bus : 5GB/s
hierarchical structrue 사용 이유 : 물리/비용적 issue
bus가 빠를수록 high performance를 유지하는건 비용이 크며 더 적은 device를 넣을 수 있다
Canonical Device
H/W interface : system software가 작동을 제어할 수 있도록 함
- Registers (Status, Command, Data)
Internal structure : implementation specific
- Micro-controller running firmware
- Memory(DRAM or SRAM or both)
- Other H/W-specific Chips
H/W Interface
Status register : device의 current status
Command register : device가 특정 작업을 하도록 함
Data register : device에 data를 주거나 가져옴
위 3개의 register로 OS가 device behavior를 control함
while (STATUS == BUSY)
; // wait unitl device is not busy
write data to data register
write command to command register
(starts the device and executes command)
while (STATUS == BUSY)
; // wait untill device is done with your request
Polling : OS는 device가 도는 동안 기다림
Interrupts : device가 도는 동안 현 프로세스는 sleep시키고 context switch함. device가 종료되면 interrupt하며 기존 process wake
context switch가 비싼 작업이므로 Interrupts가 안좋을 수 있다
device 작업이 빠른 경우 : polling이 좋음
device 작업이 느린 경우 : Interrupts가 좋을 수 있음
Programmed I/O (PIO)
memory -> device로 많은 양의 data를 copy하는데 cpu낭비를 한다
DAM (Direct Memory Access)
일종의 H/W. data가 어디있는지와 얼마나 copy해야되는지를 알고 있음
Device Interaction
Special I/O instructions(old style)
Memory-mapped I/O
I/O Instruction (Port-mapped I/O)
device를 특정하는 port값과 data가 들어있는 register를 넘겨주는 I/O를 위한 CPU instructions 사용
e.g. outb(0x1f2, reg) | instruction(port,register)
Memory-mapped I/O
I/O device를 위한 memory address space 할당
OS에서 load/store를 통해 particular register access -> H/W가 main memory 대신 device에 load/store
학교 강의를 토대로 개인 공부 목적으로 작성되어 오타가 및 오류가 있을 수 있으며, 문제가 될 시 삭제될 수 있습니다.
'Study > 운영체제' 카테고리의 다른 글
Chapter#20 Flash-based SSDs (0) | 2021.12.10 |
---|---|
Chapter#19 I/O : HDD and RAID (0) | 2021.12.10 |
Chapter#17 Swapping (0) | 2021.12.10 |
Chapter#16 Paging Advanced (0) | 2021.12.09 |
Chapter#15 Paging (0) | 2021.12.09 |