Drivers, IO and interrupts

Input and Output

What is driver?

Kernel-mode drivers

Microkernel

User-mode drivers

Drivers in processes

In-process drivers

Port-mapped IO

Memory-mapped IO

Programmed IO

Interrupt-driver IO

Interrupt handlers

Secend-level handler

Direct memory access

IO-MMU

System and expansion busses

history: ISA (Industry Standard Architecture)

MCA, EISA

VESA Local Bus

PCI: Peripheral Component Interconnect

Bus mastering

DMA (Direct Memory Access)

Plug and play

PCI IDs and drivers

AGP: Accelerated Graphics Port

PCI Express

USB: Universal Serial Bus

USB Classes

Other USB uses

ARM Busses

USB and PCIe on ARM

PCMCIA & PC Card

ExpressCard

miniPCIe, mSATA, M.2

Grahics and GPUs

Graphics cards

Graphics accelerator

3D Graphics

GPU (Graphical Processing Unit)

GPU drivers

Shaders

Mode setting

Graphics servers

Compositors

GP-GPU

Persistent sorage

Drivers

IDE / ATA

ATA Enumeration

PIO vs DMA

SATA

AHCI (Advanced Host Controller INterface)

ATA and SATA drivers

SCSi (Small Compter System Interface)

SCSI drivers

iSCSI

NVMe: Non-Volatilve Memory Express

USB mass storage

Tape drives

Optical drives

Optical disk writes (burners)

Networking and Wireless

Networking

Ethernet

Addressing

Transmit queue

Receive queue

Multi-queue adapter

Checksum and TCP offloading

WiFi