I/O 1 / Filesystems 1

Intro / Flashback (06:06)

Go Back

Device/File operations (03:21)

Go Back

Block devices (01:37)

Go Back

Device Driver flow (02:21)

Go Back

Two parts of device driver flow (01:40)

Go Back

Two parts

  1. Top half: called from system calls
  2. Bottom half: called from HW interrupts

xv6: Device files (01:34)

Go Back

xv6: Console devsw (00:32)

Go Back

xv6: Reading/top half (04:47)

Go Back

xv6: Bottom half (01:52)

Go Back

Connecting Devices (00:43)

Go Back

Control registers and buffers/queues (02:26)

Go Back

Interrupt controller (00:48)

Go Back

Bus Adaptors (00:45)

Go Back

Devices as magic memory (04:04)

Go Back

What about Caching? (01:19)

Go Back

Aside: I/O Space (01:45)

Go Back

xv6 keyboard access (02:02)

Go Back

Programmed I/O (00:44)

Go Back

Direct Memory Access (DMA) (01:25)

Go Back

Direct Memory Access

  • Device drivers writing directly to memory

How DMA works (03:12)

Go Back

OS puts things where it wants (zero-copy I/O) (03:59)

Go Back

Exercise: How many context switches with device I/O (06:09)

Go Back

Kernel/user mode switches

  1. Starting with A, switch to kernel
  2. switch to user mode B
  3. Interrupt from device
  4. Switch back to B
  5. Switch to kernel
  6. Switch to A
  7. Switch to kernel for read
  8. Switch back to A

Note: Second read() just gets data from top half (doesn't need to contact device)

Context switches

  1. Switch to B
  2. Switch back to A

IOMMUs (I/O Memory Management Units) (02:34)

Go Back

Devices Summary (03:12)

Go Back

Filesystems (00:15)

Go Back

Hard Drive interfaces (01:11)

Go Back

Filesystems (00:42)

Go Back

Filesystem problems (01:18)

Go Back

FAT Filesystem (00:53)

Go Back

Sectors (01:40)

Go Back

Clusters and files (00:48)

Go Back

File Allocation Table (02:46)

Go Back

Directories (04:15)

Go Back

Directory entries (03:13)

Go Back