UNX文件系统的数据结构综述 在UNⅨ文件系统的实施过程中,涉及到多种数 据结构。有一类数据结构用于对文件的静态管理, 因此都分布在文件所在的存储设备上,它们包括 外存文件控制块 inode、目录,以及存储资源管 理信息块fys三种; ●另一类数据结构用于文件打开时的管理,因此都 出现在内存,它们包括内存文件控制块 inode 打开文件控制块fe、以及进程打开文件表三种
二、UNIX文件系统的数据结构综述 ⚫ 在UNIX文件系统的实施过程中,涉及到多种数 据结构。有一类数据结构用于对文件的静态管理, 因此都分布在文件所在的存储设备上,它们包括 外存文件控制块inode、目录,以及存储资源管 理信息块filsys三种; ⚫ 另一类数据结构用于文件打开时的管理,因此都 出现在内存,它们包括内存文件控制块inode、 打开文件控制块file、以及进程打开文件表三种
1、外存文件控制块 inode ●由前知,文件存储设备上的每一个文件,都有一个文件 控制块 inode与之对应,这些 inode被集中放在文件存储 设备上的 inode区。文件控制块 Linode对于文件的作用, 犹如进程控制块proc、use对于每个进程的作用,这集 中了这个文件的属性及有关信息,找到了 inode,就获得 了它所对应的文件的一切必要信息。 ●每一个 inode结构理用32个字节,共九项内容,反映出 个文件的如下信息:文件长度及在存储设备上的物理 位置、文件主的各种标识、文件类型、存取权限、文件 勾连数、文件访问和修改时间、以及 inode节点是否空闲
1、外存文件控制块inode ⚫ 由前知,文件存储设备上的每一个文件,都有一个文件 控制块inode与之对应,这些inode被集中放在文件存储 设备上的inode区。文件控制块inode对于文件的作用, 犹如进程控制块proc、user对于每个进程的作用,这集 中了这个文件的属性及有关信息,找到了inode,就获得 了它所对应的文件的一切必要信息。 ⚫ 每一个inode结构理用32个字节,共九项内容,反映出 一个文件的如下信息:文件长度及在存储设备上的物理 位置、文件主的各种标识、文件类型、存取权限、文件 勾连数、文件访问和修改时间、以及inode节点是否空闲
2、目录和目录文件 ●(1)目录 丿NX 目录项,目录项 文件的名字以及该 这个文 件的外存 inode编号,则是它的内部标识。可以看出,文件的目录项建立 起了文件内、外部标识之间的对应关系:根据文件名找到它的目录项,由 目录项的外存 inode编号找到文件控制块 inode,从而获得该文件的信息。 (2)目录文件 UNX视每张目录表为一目录文件。作为一个文件,它有自己的名字以及 对应的外存 inode。要注意的是,每个文件系统(基本的或子文件系统) 都有一个根目录文件,它的外存 inode总是放于文件存储设备上 inode区中 的第一个,于是保证很容易从它出发,到达树型目录结构上的任一节点 另外还要注意的是,由于每一个目录项需要16个字节的存储空间,每个 盘块的容量为512字节,因此存放目录文件的盘块中,每一盘块可以存放 32个文件的目录。有了这些,UNX文件目录的树型结构可以细化成如图 19所
2、目录和目录文件 ⚫ (1) 目录 ⚫ UNIX中的每个文件都有一个目录项,目录项中记录了文件的名字以及该 文件对应的外存inode的编号。文件名是一个文件的外部标识,而这个文 件的外存inode编号,则是它的内部标识。可以看出,文件的目录项建立 起了文件内、外部标识之间的对应关系:根据文件名找到它的目录项,由 目录项的外存inode编号找到文件控制块inode,从而获得该文件的信息。 ⚫ (2) 目录文件 ⚫ UNIX视每张目录表为一目录文件。作为一个文件,它有自己的名字以及 对应的外存inode。要注意的是,每个文件系统(基本的或子文件系统) 都有一个根目录文件,它的外存inode总是放于文件存储设备上inode区中 的第一个,于是保证很容易从它出发,到达树型目录结构上的任一节点。 另外还要注意的是,由于每一个目录项需要16个字节的存储空间,每个 盘块的容量为512字节,因此存放目录文件的盘块中,每一盘块可以存放 32个文件的目录。有了这些,UNIX文件目录的树型结构可以细化成如图 19所示。 ⚫ ⚫
目录文件a0的 一般文件 般文件 件系统根 一般文件31的各个盘块 平 b3或 /a0/bx31 ■I 一般文件x31! 练
(3)文件目录中的勾连 为了实现文件共享,UNⅨ允许对一般文件节点 件系统的 日求项 存 inode节点编号来实现的,图9-25中的虚线处 反映的正是这种勾连。譬如说,一般文件的原 有路径名为/a31,则在目录文件中就应有一目 录项,其文件名为a31,对应的外存 inode编号 为n。如果再给它另起一个路径名/a0/bx31,则 在目录文件a0中应该新设置一个目录项,它的 文件名部分填入bx31,它的外存iode编号仍 填为n。另外,在编号为n的外存iode里,将i nink的值加1。于是文件系统中就有两个目录 项同时指向这一个 inode,实现了对文件a31的 不同名共享
(3) 文件目录中的勾连 ⚫ 为了实现文件共享,UNIX允许对一般文件节点 实行交叉连接,这称为勾连。它是通过在同一 文件系统中的两个不同目录项里填入同一个外 存inode节点编号来实现的,图9-25中的虚线处 反映的正是这种勾连。譬如说,一般文件的原 有路径名为/a31,则在目录文件中就应有一目 录项,其文件名为a31,对应的外存inode编号 为n。如果再给它另起一个路径名/a0/bx31,则 在目录文件a0中应该新设置一个目录项,它的 文件名部分填入bx31,它的外存inode编号仍 填为n。另外,在编号为n的外存inode里,将inlink的值加1。于是文件系统中就有两个目录 项同时指向这一个inode,实现了对文件a31的 不同名共享