20. 设备和驱动程序

虚拟化和并发两个主题的内容为我们展示了操作系统为应用程序提供的各类 API——我们可以通过系统调用和基于系统调用封装的库函数创建进程和线程使用多个处理器、访问文件系统中的操作系统对象等。是时候回到 “everything is a file” 的 “everything” 了。

本讲内容:计算机系统的最后一块拼图:I/O 设备原理、构造与实现,包括键盘、鼠标、打印机、显卡……你会感到 “实现计算机系统” 真的是可以做到的。

20.1 输入/输出设备

20.2 输入/输出设备案例

💬
Prompt: NVMe 是如何接入 PCIe 总线的?

20.3 设备驱动程序

20.4 总结

Take-away messages: 输入/输出设备可以说是五花八门,你也看到越来越多的设备上甚至 “自带电脑”。但无论如何,操作系统都把它们抽象成一个可以读写、可以控制的,实现了 struct file_operations 的文件 (操作系统对象)。

📚阅读材料

教科书 Operating Systems: Three Easy Pieces:

  • 第 36 章 - I/O Devices