当前位置:嗨网首页>书籍在线阅读

26-总结

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

14.12 总结

设备都由/dev 下的文件来表示。每个设备都有相应的设备驱动程序,用以执行一套标准的操作,与之对应的系统调用包括open()、read()、write()和 close()。设备既可以是实际存在的,也可以是虚拟的,这分别表明了硬件设备的存在与否。无论如何,内核都会提供一种设备驱动程序,并实现与真实设备相同的API。

可将硬盘划分为一个或多个分区,每个分区都可包含一个文件系统。文件系统是对常规文件和目录的组织集合。Linux实现的文件系统多种多样,其中包括传统的ext2文件系统。ext2文件系统在概念上类似于早期的UNIX文件系统,由引导块、超级块、i节点表和包含文件数据块的数据区域组成。每个文件在文件系统i节点表中都有一条对应记录,记录了与文件相关的各种信息,其中包括文件类型、大小、链接数、所有权、权限、时间戳,以及指向文件数据块的指针。

Linux还提供了若干日志文件系统,其中包括Reiserfs、ext3、ext4、XFS、JFS以及Btrfs。在实际更新文件之前,日志文件系统会记录元数据更新(还可有选择地记录数据更新和文件系统更新)。这也意味着,一旦系统崩溃,系统可以重放(replay)日志文件,并迅速将文件系统恢复到一致状态。日志文件系统的最大优点在于系统崩溃后,无需像常规UNIX文件系统那样对文件系统进行漫长的一致性检查。

Linux系统上的所有文件系统都被挂载于单根目录树之下,其树根为目录“/”。目录树中挂载文件系统的位置被称为文件系统挂载点。

特权级进程可使用mount()和umount()系统调用来挂载、卸载文件系统。可使用statvfs()来获取与已挂载文件系统有关的信息。

进阶阅读

与设备和设备驱动程序有关的详细信息请参阅[Bovet & Cesati,2005]和[Corbet et al.,2005],尤其是后者。内核源码文件 Documentation/devices.txt中,也能找到一些与设备相关的有用信息。

以下几本著作都提供了关于文件系统的深度信息。[Tanenbaum,2007]对文件系统的结构和实现做了一般性介绍。[Bach,1986]介绍了UNIX文件系统的实现,主要针对System V。[Vahalia,1996]和[Goodheart & Cox,1994]也描述了System V文件系统。[Love,2010]和[Bovet & Cesati,2005]则讨论了Linux VFS的实现。

在内核源码子目录Documentation/filesystems下,可以找到关于各种文件系统的文档。针对Linux所支持的大多数文件系统实现,不少WEB站点也有论述。