UNIX文件系统是什么

Amber问答2020-08-18 09:34:02阅读(...)

Unix文件系统是对存储设备上的数据和元数据进行组织的机制。UNIX文件系统是UNIX系统的心脏部分,提供了层次结构的目录和文件。

Unix文件系统是对存储设备上的数据和元数据进行组织的机制。UNIX 文件系统是 UNIX 系统的心脏部分,提供了层次结构的目录和文件。

文件夹 folder

软件介绍

Unix 系统的产生和流行推动了操作系统的革命,它的设计思想和在发展过程中积累的丰富经验及教训仍可为人们借鉴。文件系统负责系统内文件信息的管理,在整个系统中起着至关重要的作用,文件系统是 Unix 成功的关键。Unix 系统采用树形文件结构、内核与外核的结合、设备与文件一样的管理机制和使用方法等技术和措施,使得 Unix 文件系统成为当代非常优秀的系统。

管理结构

Unix 文件系统是通过“磁盘索引 i 节点”、“目录项”来进行管理的,在文件被打开或被引用后还需要“内存索引 i 节点”、“用户文件描述表”、“文件表”。文件系统磁盘结构如图

。管理块主要管理磁盘结构中各部分区域的大小及资源(i 节点,磁盘块)的使用情况与管理方式。i 节点区用于存放该文件系统全部磁盘 i 节点结构,磁盘索引节点包含文件的重要信息如下:文件所有者标识符;文件类型;文件存取许可权;文件联结数目;文件存取时间;文件长度;文件地址索引表。

Unix 的每个目录项只存放文件名和 i 节点号,共 16 个字节,而文件中除名字以外的信息都存放到 i 节点中,优点是系统各级目录的规模大大减少。在 Unix 文件系统中,为了提高系统效率,减少内存空间的占用,当打开一个文件时,只是将与该文件相联系的目录项和磁盘 i 节点拷贝到主存中,为了对打开的文件进行管理,因此又设置了打开文件管理机构,它又由下列三部分组成:

1、活动 i 节点(内存 i 节点)。作用是反映文件当前活动的情况,因此它添加了一些项目:内存索引节点状态、设备号、索引节点号、内存索引节点的访问计数。

2、打开文件表。i 节点中只包含有文件的静态信息,但当一个文件被同一进程或不同进程、用同一或不同路径名、相同的或互异操作同时打开时,仅靠 i 节点就不能满足要求,因此,打开文件表记录了打开文件所需的一些附加信息:读写状态、引用计数、指向内存索引点的指针、读/写位置指针。

3、用户文件描述符表。每个用户进程有一个用户文件描述符表,每一个表项就是一个指针,并指向打开文件表的一个表项,这个表的作用就是保证每个进程能够打开多个文件,或者对同一个文件以不同形式操作打开。假定一个进程执行下列代码:

fd1= open(”/etc/pad”,O- RDONLY);

fd1= open(”/etc/pad”,O- RDWD);

则这三个表的作用和关系如图所示

物理结构

Unix 文件系统采用的是索引文件结构,在索引节点中建立有 13 个地址项,如图

对于长度不超过 10 个物理块的小型文件,可直接找到该文件所在的盘块号;对于中、大型文件采用一次或两次间接寻址;对超大型文件采用三次间接寻址。索引节点的优点是:索引节点占用的空间小,对小文件的索引速度快,同时又允许组织大型和超大型文件。文件最多可占用的物理块数可达到 10+ 256+256^2+ 256^3 个。

Unix 的统计数据表明,80%为小文件,20%为大文件(其中 1%为超大文件),这组数据就更加说明了 Unix 文件系统设计的精妙和科学。为了提高磁盘空间的利用率,允许文件在磁盘上不连续存放,且其寻址方式最多可达到三次。它的缺点是造成访问文件的寻道时间延长和多次访问磁盘。在非实时场合是可行的,但在实时场合,它的这一缺点就很突出。例如:假设磁盘的平均寻道时间为 15ms,每个磁盘块的大小为 512 字节,某文件大小为 3kB,如果连续存放,寻道时间只需 15ms;如果不连续存放,它要占用 6 个分散的磁盘块,可能位于不同的磁道,因此寻道时间需 90ms,比连续存放多浪费 75ms。

空闲磁盘块

Unix 文件系统通过管理块来实现空闲块管理。管理块的数据结构如下:
struct filsys{
int s- isize; /*i 节点区总块数*/
int s- fsize; /*文件卷总块数*/
int s- nfree; /*直接管理的空闲块数*/
int s- free[100] ; /*空闲块号栈*/
int s- ninode; /*直接管理的空闲 i 节点数*/
int s- inode[100] ;/*空闲 i 节点号栈*/
… …
}

空闲块的管理方法是:将空闲块从后向前,若干个空闲块(如 100 个)分为一组(最后一组为 99 块),每组最后一块作为索引表,用来登记下一组 100 的物理块号和块数,最前的一组物理块号和块数存放在管理块的 s_free[100]和 s_nfree 中。这种对空闲块先分组,再把组与组进行链接的管理方法称为组链接法。对空闲块的分配和释放类似于栈,使用后进先出算法。但其管理机构分为两级,一级常驻内存(管理块的 s-nfree 和 s-free[]),另一级则驻在各组的第一个盘块上。其优点是常驻内存的只有一个组,而不是将所有组的空闲表都调入内存,这样就大大的节省了内存空间,同时软件开销也小。缺点是可能导致物理块的利用率不均匀。例如:假设当前的 s-nfree= 80,此时某进程释放一个文件块,其占用的物理块号为 300,系统回收它后,s-nfree= 81,s-free= 300。接着某用户又申请物理空间,文件系统总是从索引表中取最后一项的值,即 s-free 出栈,将 300 号物理块又立即分配使用。可以想象,300 号块还会面临再释放,再分配的可能。300 号块多次被使用,而其它空闲块却未被分配使用,即有些物理块可能长期被使用,而有些物理块可能长期得不到使用,因此对外存储器的使用寿命不利。

结构和共享

Unix 的文件系统采用多级树型目录结构,其优点是有效的解决了文件重名问题,又可以很方便地实现文件共享。基本文件系统和子文件系统是可安装和可拆卸的,但在多用户环境下,多用户间共享数据同样感到不方便,绝对路径名是文件的唯一符号名,用户难以用另外符号名使用共享文件,因此 Uinx 文件又提供了如下两种链接机制。

1、硬链接技术。如果想为文件 1.c 建立一个硬链接 2.c,则只需将 2.c 的目录项指针指到文件 1.c 的 i 节点,同时将 i 节点链接数加 1 即可。这样用户似乎是增加了一个物理拷贝,可实际却只有一个文件实体,当删除链接时,只要删除一个目录项和将链接数减 1。

2、符号链接技术。如果想为 usr/sxk/1.c 建立一个符合链接 2.c,则 Unix 通过 read link 读出文件内容,即找到原文件路径名,再通过原文件路径名去打开文件。符号链接相当于给文件增加了一个别名。也可为目录建立符号链接,并且可以跨文件系统。Unix 文件链接的优点是用很小的开销为多用户共享文件提供了有效方式,且能快速定位文件和目录;缺点是对多用户使用文件不能加以并发控制,易造成数据的不一致性。硬链接只适用于普通文件,而不适用于目录文件和不同文件系统。

收藏0个人收藏
走进科技生活方式

评论交流

泪雪默认头像请「登录」后参与评论
  1. 加载中..