In [1]:
from mosaic import *
OS2023(27)
27. 设备驱动程序与文件系统¶
Changelog & 反馈
- 艰难地处理各种欠下的事情
- Deadline 会相当宽松的,请大家放心
背景回顾:我们可以把设备想象成一组寄存器,以及寄存器基础上的一个设备通信协议,能够实现处理器和设备之间的数据交换:数据可以小到一个字符 (串口),也可以大到程序和海量的数据 (GPU)。
本讲内容:很自然的问题是,如果操作系统上的程序想要访问设备,就必须把设备抽象成一个进程可以使用系统调用访问的操作系统对象,也就是设备驱动程序和文件系统:
- 设备驱动程序
- 文件系统 API
In [2]:
slideshow('27.1')
In [3]:
slideshow('27.2')
In [4]:
demo('launcher', 'p/launcher')
In [5]:
slideshow('27.3')
In [6]:
slideshow('27.4')
In [7]:
demo('linux-minimal', 'v/linux-minimal')
In [8]:
demo('fish', 'p/fish')
Take-away Messages¶
操作系统通过设备驱动程序,将硬件设备五花八门的 “寄存器协议” 抽象成了统一的接口,并且进而成为目录树的一部分。UNIX “一切皆文件” 的设计使应用程序可以自由访问各类设备,但带来的代价则是文件系统部分巨大的历史包袱和移植性问题:操作系统的复杂性是难以掩盖的,它们总会在某个地方 “膨胀”。
课后习题/编程作业¶
1. 阅读材料¶
教科书 Operating Systems: Three Easy Pieces:
- 第 39 章 - Files and Directories