计算机操作系统教程_第三版_(张尧学_张高_史美林_著)_清华大学出版社_第9章
时间:2026-01-16
时间:2026-01-16
第9章 文件和设备管理示例9.1 文件系统的特点与文件类别 9.2 文件系统的数据结构及其关系 9.3 资源管理和地址映射 9.4 目录与搜索方法 9.5 文件系统的系统调用 9.6 UNIX System Ⅴ的中断和陷阱总控程序 9.7 缓冲区管理 9.8 块设备驱动 9.9 字符设备驱动 本章小结 习题
9.1 文件系统的特点与文件类别9.1.1 特点 本章通过 UNIX 的文件系统来进一步深入了解文件 系统与操作系统其他部分的关系以及文件系统的设 计方法。从用户的角度看,UNIX文件系统具有如 图9.1所示的树形层次结构: 在图9.1中,根目录root之下有dev设备子目录,bin实 用程序子目录,lib库文件子目录,etc 基本数据和 维护实用程序子目录,tmp临时文件子目录,usr通 用子目录和include 基本数据子目录等。而 UNIX 子目录则存放UNIX操作系统核心程序自身。这些 子目录又由各自的子目录构成。
图9.1 UNIX文件系统的层次结构例
文件系统被组织成树形结构之后,文件名由路径名 给出。路径名确定一个文件在文件系统中的位置。 一个完整的路径名由代表根目录的斜杠开始,到所 指定的文件为止。例如在图9.1中, “/usr/users/shi/b.exe”确定了文件 b.exe在文件系统 中的位置。另外,路径名也可从正在执行进程的当 前目录开始指定,例如,若在图9.1中的当前目录 是zhang 的话,路径名 a.exe与 /usr/users/zhang/a.exe具有相同的效果。 一般来说,UNIX文件系统还具有如下特点: · UNIX的文件是无结构的字符流式文件。 · 文件可以动态地增长或减少。
· 文件数据可由文件拥有者设置相应的访问权限而受 到保护。 · 外部设备,例如终端用磁带、磁盘设备、键盘等都 被看作文件。从而,设备可通过文件系统隐蔽掉设 备特性。在文件系统中,设备文件占据着文件系统 目录结构中相应的位置,用户程序按与存取其他文 件时所使用的系统调用和语法来读、写设备文件。 因此,用户程序既没有必要知道设备的内部特性, 也不必在更换或增加设备之后修改自己。
9.1.2 文件的分类 UNIX文件可分为普通文件、目录文件和设备文件。 普通文件即存储用户和系统的有关数据和程序的文 件。它是无结构、无记录概念的字符流式文件。 目录文件则是由文件系统中的各个目录所形成的文 件。这种文件在形式上同普通文件一样,由系统将 其解释成目录。在UNIX系统中,一个目录文件由 多个目录项组成,而每个目录项则由文件名及指示 相应的文件说明信息表(i节点) 的标识符id组成。
普通文件和目录文件都是无结构、无记录概念的字 符流式文件。文件系统以512 字节为一块,文件在 块内连续存放。对于普通文件和目录文件来说
,文 件的存放方式既可以是顺序存取的,也可以是直接 存取的。UNIX文件在文件系统中的存放采用的是 索引结构方法,从而,对文件存储块的分配可以是 非连续的,且文件长度可以动态变化。 设备文件与普通文件和目录文件不同,它除了在目 录文件和文件说明信息表,也就是 i结点中占据相 应的位置之外,并不占有实际的物理存储块。因此, 对设备文件的读、写操作将实际上变为对设备的操 作,而对设备文件的保护也将变成对设备的保护。 例如: >cp /dev/tty terminalread 把在终端上敲进的字符(设备文件/dev/tty是用户终端) 读入,并把它们复制到文件 terminalread上。
9.2 文件系统的数据结构及其关系9.2.1 文件系统的存储结构 UNIX系统把文件信息存储在磁盘或磁带上,不过, UNIX系统的磁盘文件组织也可以当作一个连续的 物理块构成的磁带——文件卷看待。在 UNIX 系统 中,一个物理存储器可包含一个或多个文件系统。 这些文件系统可以被动态装卸。为了简单起见,假 定在一个计算机系统中只存在一个文件系统。
文件系统由每块 512字节或 512字节的任意倍数所构 成的逻辑块序列组成。在同一个文件系统中,这些 逻辑块的大小完全相同。块长的选取将直接影响设 备与主存之间的数据传输速率和内存的存储能力。 大的块长将使得内存和设备之间的数据传输更加容 易,但反过来又使得内存页面长度增加,从而影响 内存的有效存储能力。在 UNIX 的许多版本中,大 都采用每块 512字节。 文件卷的结构如图9.2所示。其中第 0# 块是引导块 (boot block)。 引导块中装有引导或初启操作系统 的引导代码。
图9.2 文件系统存储结构 显然,在有多个文件系统的计算机系统中,只有一 个文件系统的引导块中装有引导代码,而其他的引 导块则是空的。 1#块是超级块(superblock)。超级块用来描述文件 系统的状态,例如文件系统的大小、有关空闲区分 配和回收用的堆栈等。有关超级块的结构将在后面 部分进一步介绍。
从2#块开始到 K+1# 块为止的区域被用来存放文件说 明信息,也就是 BFD表。UNIX系统把一个文件的 说明信息称为 i节点或索引节点(inode list)。索引节 点表的大小由系统管理人员在进行系统配置时指定。 K+2# 以后的块称为数据块,其中存放文件数据,包 括目录文件数据。UNIX系统中文件系统的任一数 据块只能属于文件系统中某一个文件或空闲。
9.2.2 几种常用的数据结构 1.资源管理结构 filsys 超级块中存放的最重要的数据结构是资源管理结构 filsys。该结构中含有文件系统空闲块分配用堆栈 及 …… 此处隐藏:1402字,全部文档内容请下载后查看。喜欢就下载吧 ……