운영체제는 하드웨어를 “부품”보다 요청 큐·주소 변환·완료 신호로 본다

CPU와 장치의 속도 차이를 driver·buffer·DMA·interrupt로 흡수하고, 프로세스는 실행·대기 상태를 오가며 결과를 받는다.

1. System call프로세스가 표준 file/socket API로 요청한다.
2. Kernel subsystemVFS·block·network 계층이 요청을 검사하고 큐에 넣는다.
3. Driver공통 요청을 장치 descriptor와 register 조작으로 바꾼다.
4. DMA / controller장치가 IOMMU가 허용한 bus address와 memory 사이에서 데이터를 옮긴다.
5. Completioninterrupt 또는 polling이 완료 상태를 kernel에 알린다.
6. Wake결과·오류를 회수하고 기다리던 task를 runnable로 만든다.

CPU

run queue·register
스케줄링·선점·context switch

Memory

cache·page table·TLB
가상 메모리·fault·working set

Interconnect

bus·IOMMU·DMA
대역폭·격리·address mapping

Device

queue·controller·IRQ
driver·buffering·비동기 완료

어디서 기다리나runnable이면 CPU 경쟁, blocked면 lock·page·I/O 완료 원인을 구분한다.

주소를 섞지 않나user virtual, CPU physical, device bus address는 같은 값이라고 가정하지 않는다.

신호와 데이터를 나누나interrupt는 보통 완료를 알리고 실제 payload 이동은 DMA·buffer 경로에서 일어난다.