Unix文件系统是Unix系统的心脏,它提供分层的目录和文件。文件系统将磁盘空间分成一组1024字节,称为一个块(也有512字节为一个块,如SCO XENIX),从0到整个磁盘的最大块数。
所有块可以分为四个部分,块0称为引导块,文件系统不使用;块1被称为特殊块,它包含许多信息,包括磁盘大小和整个块的其他两个部分的大小。从块2开始,有一个包含I节点的表,表中的块数是可变的,这将在后面讨论。在I节点表之后,有一个空闲存储块(数据存储块),可以用来存储文件内容。
文件的逻辑结构和物理结构非常不同,逻辑结构是用户键入cat命令后看到的文件,用户可以得到代表文件内容的字符流。物理结构是文件在磁盘上实际存储方式的存储格式。用户认为他们的文件是前沿字符流,但实际上,文件可能不是以前沿模式存储在磁盘上的,超过一个块的文件通常会分散存储在磁盘上。但是,当用户访问一个文件时,UNIX文件系统会以正确的顺序获取每个块,以便为用户提供文件的逻辑结构。
当然,在Unix文件系统的某个地方必须有一个表,告诉文件系统如何将物理结构转换成逻辑结构,这涉及到I节点。I节点是一个64字节长的表,包含了关于一个文件的信息,包括文件大小、文件所有者、文件访问权限模式,以及文件是普通文件、目录文件还是特殊文件。I节点中最重要的项目是磁盘地址表,表格中有13个块号。前10个块号是文件前10个块的存储地址,这10个块号可以给出一个文件的逻辑结构,长度最多为10个块,该文件将按照块号在磁盘地址表中出现的顺序获取相应的块。
Unix在每个目录条目中只存储文件名和I-node编号,总共16个字节,文件中除了名称以外的所有信息都存储在I-node中。优点是大大降低了系统各级目录的规模,在Unix文件系统中,为了提高系统效率,减少对内存空间的占用,在打开一个文件时,只将文件关联的目录项和磁盘I节点复制到主存。为了管理打开的文件,建立了一个打开文件管理机制,该机制由以下三部分组成:
1、活动I节点。也称为内存I节点,该函数是为了反映文件的当前活动,所以它添加了一些项目:内存索引节点状态、设备号、索引节点号和内存索引节点访问计数。
2、打开文件表。I-node只包含文件的静态信息,但是当一个文件被同一个进程或者不同的进程打开,路径名相同或者不同,操作相同或者不同的时候,仅靠I-node是无法满足要求的。因此,打开文件表记录了打开文件所需的一些附加信息:读写状态、引用计数、指向内存索引点的指针和指向读/写位置的指针。
3、用户文件描述符表。每个用户进程都有一个用户文件描述符表,每个条目都是一个指针,指向打开文件表中的一个条目。这个表的作用是保证每个进程可以打开多个文件,或者以不同的形式操作打开同一个文件。
总结:Unix文件系统的出现和普及推动了操作系统的革命,其设计思想和开发过程中积累的丰富经验教训至今仍可借鉴。文件系统负责管理系统中的文件信息,在整个系统中起着至关重要的作用。文件系统是Unix成功的关键,Unix系统采用树形文件结构,内核和外内核相结合,设备和文件的管理机制和使用方法相同,使得Unix文件系统成为目前非常优秀的系统。
本站部分文章搜集整理于互联网或者网友提供,如有侵权请联系站长
如若转载,请注明出处:https://htmlbk.com/it/995.html
温馨提示:该文档最后一次修改时间为2024-07-15 14:36:22,请注意相关的内容是否还可用!