27. 文件和设备驱动

背景回顾:我们可以把设备想象成一组寄存器,以及寄存器基础上的一个设备通信协议,能够实现处理器和设备之间的数据交换:数据可以小到一个字符 (串口),也可以大到程序和海量的数据 (GPU)。

本讲内容:很自然的问题是,如果操作系统上的程序想要访问设备,就必须把设备抽象成一个进程可以使用系统调用访问的操作系统对象。于是我们就回到了 “文件” 和文件在操作系统中的实现。

27.1 文件和文件描述符

27.2 实现文件

27.3 设备驱动程序

Take-away Messages

任何实现了 struct file_operations 的操作系统对象可以都是 “文件”:可以是 /dev/null 这样的虚拟设备,可以是 /proc/stats 中的虚拟 “文件”,可以是一个管道,也可以是文件系统中普通的字节序列。

1. 阅读材料

📚阅读材料

教科书 Operating Systems: Three Easy Pieces:

  • 第 39 章 - Files and Directories