加入收藏 | 设为首页 | 会员中心 | 我要投稿 站长网 (https://www.zhandada.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

文件的结构

发布时间:2022-12-13 14:04:12 所属栏目:Unix 来源:转载
导读: 逻辑结构有结构文件按记录的组织形式可以分为:
1)顺序文件。
记录是定长的且按关键字顺序排列。可以顺序存储或以链表形式存储,在访问时需要顺序搜索文件。顺序文件有以下两种结构:
第一

逻辑结构有结构文件按记录的组织形式可以分为:

1)顺序文件。

记录是定长的且按关键字顺序排列。可以顺序存储或以链表形式存储,在访问时需要顺序搜索文件。顺序文件有以下两种结构:

第一种是串结构,各记录之间的顺序与关键字无关。通常的办法是由时间来决定,即按存入时间的先后排列,最先存入的记录作为第一个记录,其次存入的为第二个记录,以此类推。

第二种是顺序结构,指文件中所有记录按关键字顺序排列。

在对记录进行批量操作时,即每次要读或写一大批记录,对顺序文件的效率是所有逻辑文件中最高的;此外,也只有顺序文件才能存储在磁带上,并能有效的工作。但顺序文件对查找、修改、增加或删除单个记录的操作比较困难。

2)索引文件

对于可变长记录的文件只能顺序查找,系统开销较大,为此可以建立一张索引表以加快检索速度,索引表本身是顺序文件。在记录很多或是访问要求高的文件中,需要引入索引以提供有效的访问,实际中,通过索引可以成百上千倍地提高访问速度。

3)索引顺序表

索引顺序表是顺序和索引两种组织形式的结合。索引顺序文件将顺序文件中所有记录分为若干个组,为顺序文件建立一张索引表,在索引表中为每组中的第一个记录建立一个索引项,其中含有该记录的关键字值和指向该记录的指针。

4)直接文件或散列文件(哈希文件,Hash File)

给定记录的键值或通过Hash函数转换的键值直接决定记录的物理地址。这种映射不同于顺序文件或索引文件,没有顺序的特性。散列文件有很高的存取速度,但是会引起冲突,即不同关键字的散列函数值相同。

目录管理

1)文件控制块。

文件控制块(FCB)是用来存放控制文件需要的各种信息的数据结构,以实现“按名存取”。FCB的有序集合称为文件目录,一个FCB就是一个文件目录项。为了创建一个新文件,系统将分配一个FCB并存放在文件目录中,称为目录项。

FCB主要包含以下信息:

l 基本信息,如文件名、文件的物理位置、文件的逻辑结构、文件的物理结构等。

l 存取控制信息,如文件的存取权限等。

l 使用信息,如文件建立时间、修改时间等。

2)索引节点

在检索目录文件的过程中,只用到了文件名,仅当找到一个目录项(查找文件名与目录项中文件名匹配)时,才需要从该目录项中独处该文件的物理地址。也就是说,在检索目录时,文件的其他描述信息不会用到,也不许调入内存,因此,有的系统(如UNIX)采用了文件名和文件描述信息分开的方法,文件描述信息单独形成一个称为索引节点的数据结构,简称为i节点。在文件目录中的每个目录项仅由文件名和指向该文件所对应的i节点的指针构成。

一个FCB的大小是64B,盘块大小是1KB,则在每个盘块中可以存放16个FCB。而在UNIX系统中一个目录仅占16B,其中14B是文件名,2B是i节点指针。在1KB的盘块中可存放64个目录项。这样可是查找文件时平均启动磁盘次数减少到原来的1/4,大大节省了系统开销。

目录结构

1)单级目录结构。

整个文件系统只建立一张目录表,每个文件占一个目录项。

当访问一个文件时,先按文件名在该目录中查找到相应的FCB,经合法性检查后执行相应的操作。当建立一个新文件时,必须先检索所有目录项以确保没有“重名”的现象,然后在该目录中增设一项,把FCB的全部信息保存在该项中。当删除一个文件时,先从该目录中找到该文件的目录项,回收该文件所占用的存储空间,然后再清除该目录项。

单级目录结构实现了按名存取,但是存在查找速度慢、文件不允许重名、不便于文件共享等缺点,而且对于多用户的操作系统显然是不适用的。

2)二级目录结构

unix目录_unix 命令目录_unix环境高级编程目录

单级目录很容易造成文件名称的混淆,可以考虑采用二级方案,将文件目录分成主文件目录MFD和用户文件目录UFD两级。

主文件目录项记录用户名及相应用户文件所在的存储位置。用户文件目录项记录该用户文件的FCB信息。当某用户与对其文件进行访问时,只需要搜索该用户对应的UFD,这即解决了不同用户文件的重名问题,也在一定程度上保证了文件的安全。

两级目录结构可以解决多用户之间的文件重名问题,文件系统可以在目录上实现访问限制,但是两级结构对于用户结构内部结构没有任何帮助。用户如果需要在某个任务上进行合作和访问那其他文件时便会产生很多问题。

3)多级目录结构

也成为树形目录结构。将两级目录结构的层析加以推广,就形成了多级目录结构,及树形目录结构。

用户要访问某个文件时用文件的路径名标识文件,文件路径名是一个字符串,由从根目录出发到所找文件的通路商的所有目录名与数据文件名用分隔符/连接起来而成。从根目录出发的路径称为绝对路径。当层次较多时,每次从根目录查询浪费时间,于是加入了当前目录,进程对各文件的访问都是相对于当前目录进行的。当用户要访问某个文件时,使用相对路径标识文件,相对路径由从当前目录出发到所找文件通路商所有目录名与数据文件名用分隔符/链接而成。

通常,每个用户都有自己的当前目录,登陆后自动进入该用户的当前目录。操作系统提供一条专门的系统调用,供用户随时改变当前目录。

树形目录结构可以很方便地对文件进行分类,层次结构清晰,也能够更有效地进行文件的管理和保护。但是,在属性目录中查找一个文件,需要按路径名主机访问中间节点,这就增加了磁盘访问次数,无疑将影响查询速度。

4)无环图目录结构

树形目录结构可便于实现文件分类,但不便于实现文件共享,为此在树形目录结构的基础上增加了一些指向同一节点的有向边,使整个目录成为一个有向无环图。

引入无环图目录结构是为了实现文件共享。

当某用户要求删除一个共享节点时,若系统只是简单地将它删除,当另一共享用户需要访问时,却无法找到这个文件而发生错误。为此可以为每个共享节点设置一个共享计数器,每当途中增加对该节点的共享链时,计数器加1;每当某用户提出删除该节点时,计数器减1。仅当共享计数器为0时,才真正删除该节点,否则仅删除请求用户的共享链。

共享文件或目录不同于文件复制。如果有两个复制文件,每个程序员看到的是复制文件而不是原件;但如果一个文件被修改unix目录,那么另一个程序员的复制不会有改变。对于共享文件,只存在一个真正文件,任何改变都会为其他用户所见。

无环图目录结构方便实现了文件的共享,但是使系统的管理变得更加复杂。

(编辑:站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章