`

unix环境高级编程-4.14-文件系统

 
阅读更多

文件系统

为了说明文件连接的概念,先要介绍UNIX文件系统的基本结构,同时,了解i节点和志向i将诶点的目录项之间的区别也是很有益处的。

目前正在使用的UNIX文件系统有多种实现。例如,SOLARIS支持多种不同类型的磁盘文件系统:传统的机遇BSD的unix文件系统,ufs,读写DOS格式哈软盘的文件系统,以及读CD的文件系统。本节讨论的是UFS。

我们可以把一个磁盘氛围一个或者多个分区。每个分区可以包含一个文件系统。如下如图

i节点是固定长度的记录项,它包含了有关文件的大部分信息。如果更仔细的观察一个朱米娜的i节点和数据块部分,则可以看到下图所示的情况

注意上图中下列各点:

  • 在上图中有两个目录项指向了同一个i节点。每个i节点都有个一个链接计数,其值是指向改i节点的目录项数。只有当链接计数减少至0的时候,才可以删除该文件。也就是可以释放该文件占用的数据块。这既是为什么“解除对一个文件的链接”操作并不总是意味着“释放该文件中拥有磁盘块”的原因。这也是为什么删除一个目录项的函数被称为unlink而不是delete的原因。在stat结构中,链接计数包含在st_link成员中,其基本系统数据类型是nlink_t,这种链接为硬链接。LINK_MAX制定了一个文件连接数的最大值。
  • 另外一种连接类型称为符号链接。对于这种链接,该文件的实际内容包含在该符号链接所指向的文件的名字。在下列lrwxrwxrwx 1 root 7 time lib->usr/lib该目录项中的文件名是3个字符串lib,而在该文件中包含了7个数据字节usr/lib该i节点中的文件类型是S_IFLNK,于是系统指导这是一个符号链接。
  • i节点包含了大多数与文件有关的信息:文件类型,文件访问权限位,文件长度和指向该文件所用用的数据块的指针等等。stat结构忠的大多数信息都取自i节点。只有两项数据存放在目录项中,文件名字和i节点编号。i节点编号的数据类型是ino_t
  • 每个文件系统各自对他们的i节点进行编号,因此木目录项中的i节点编号数指向同一个文件系统中的相应的i节点。不能是使一个目录项指向另一个文件系统的i节点。这就是为什么ln(1)命令(构造一个指向一个向右文件的新录像)不能跨越文件系统的原因。我们将在下一节说明link函数。
  • 当在不更换文件系统情况下为一个文件更名时候,该文件的实际内容并未改动,只需构造一个指现有i节点的新目录项,并解除与旧目录项的链接。

我们说明了普通文件的链接计数概念,但是对于目录文件的链接计数字段又如何呢?假定我们在工作目录中构造了一个新目录:如命令

mkdir testdir

下图显示了其结果。注意改图显示的显示了.和..目录项。

对于编号为2549的i节点,其类型字段表示他是一个目录,而连接计数为2.任何一个叶目录的连接计数总是2,数值2来自于命名该目录目录项以及在该目录忠的.项。对于编号为1267的i节点,器类型字段表示她是一个目录,二连接技术则大雨或等于3.他大雨或等于3的原因是,至少有三个目录项指向他:一个是命名他的目录项。第二个是该目录中的.项第三个是在其子目录的testdir中的..项注意,父目录中的每一个子目录都会是该目录项的链接计数增1。

更多内容欢迎访问:http://blog.csdn.net/wallwind

分享到:
评论

相关推荐

    UNIX环境高级编程

    4.14 文件系统 69 4.15 link, unlink, remove和rename 函数 71 4.16 符号连接 73 4.17 symlink 和readlink函数 76 4.18 文件的时间 76 4.19 utime函数 78 4.20 mkdir和rmdir函数 79 4.21 读目录 80 4.22 chdir, ...

    UNIX环境高级编程第二版

    4.14 文件系统 69 4.15 link, unlink, remove和rename 函数 71 4.16 符号连接 73 4.17 symlink 和readlink函数 76 4.18 文件的时间 76 4.19 utime函数 78 4.20 mkdir和rmdir函数 79 4.21 读目录 80 4.22 chdir, ...

    UNIX环境高级编程.pdf

    4.14 文件系统 69 4.15 link, unlink, remove和rename 函数 71 4.16 符号连接 73 4.17 symlink 和readlink函数 76 4.18 文件的时间 76 4.19 utime函数 78 4.20 mkdir和rmdir函数 79 4.21 读目录 80 4.22 chdir, ...

    UNIX环境高级编程(中文版+英文版+源代码)

    4.14 文件系统 69 4.15 link, unlink, remove和rename 函数 71 4.16 符号连接 73 4.17 symlink 和readlink函数 76 4.18 文件的时间 76 4.19 utime函数 78 4.20 mkdir和rmdir函数 79 4.21 读目录 80 4.22 chdir, ...

    UNIX环境高级编程_第2版.part2

    UNIX环境高级编程_第2版 ----------------------------------------------------------- 共两个压缩包( UNIX环境高级编程_第2版.part1 UNIX环境高级编程_第2版.part1 ) ------------------------------------------...

    UNIX环境高级编程(PDF)

    4.14 文件系统 69 4.15 link, unlink, remove和rename 函数 71 4.16 符号连接 73 4.17 symlink 和readlink函数 76 4.18 文件的时间 76 4.19 utime函数 78 4.20 mkdir和rmdir函数 79 4.21 读目录 80 4.22 chdir, ...

    UNIX环境高级编程中文版

    4.14 文件系统 69 4.15 link, unlink, remove和rename 函数 71 4.16 符号连接 73 4.17 symlink 和readlink函数 76 4.18 文件的时间 76 4.19 utime函数 78 4.20 mkdir和rmdir函数 79 4.21 读目录 80 4.22 chdir, ...

    Unix环境高级编程电子书

    4.14 文件系统 69 4.15 link, unlink, remove和rename 函数 71 4.16 符号连接 73 4.17 symlink 和readlink函数 76 4.18 文件的时间 76 4.19 utime函数 78 4.20 mkdir和rmdir函数 79 4.21 读目录 80 4.22 chdir, ...

    UNIX环境高级编程和源代码

    4.14 文件系统 69 4.15 link, unlink, remove和rename 函数 71 4.16 符号连接 73 4.17 symlink 和readlink函数 76 4.18 文件的时间 76 4.19 utime函数 78 4.20 mkdir和rmdir函数 79 4.21 读目录 80 4.22 chdir, ...

    UNIX环境高级编程 不扣分哦

    4.14 文件系统 69 4.15 link, unlink, remove和rename 函数 71 4.16 符号连接 73 4.17 symlink 和readlink函数 76 4.18 文件的时间 76 4.19 utime函数 78 4.20 mkdir和rmdir函数 79 4.21 读目录 80 4.22 chdir, ...

    UNIX环境高级编程(第二版中文).pdf

    4.14 文件系统 69 4.15 link, unlink, remove和rename 函数 71 4.16 符号连接 73 4.17 symlink 和readlink函数 76 4.18 文件的时间 76 4.19 utime函数 78 4.20 mkdir和rmdir函数 79 4.21 读目录 80 4.22 chdir, ...

    UNIX环境高级编程_第二版中文

    4.14 文件系统  4.15 link、unlink、remove和rename函数  4.16 符号链接  4.17 symlink和readlink函数  4.18 文件的时间  4.19 utime函数  4.20 mkdir和rmdir函数  4.21 读目录  4.22 chdir、...

    UNIX环境高级编程(第二版中文)

    UNIX环境高级编程 第1章 UNIX基础知识 1 1.1 引言 1 1.2 UNIX体系结构 1 1.3 登录 1 1.4 文件和目录 3 1.5 输入和输出 6 1.6 程序和进程 8 1.7 出错处理 10 1.8 用户标识 12 1.9 信号 14 1.10 ...

    中文第一版-UNIX环境高级编程

    4.14 文件系统 69 4.15 link, unlink, remove和rename 函数 71 4.16 符号连接 73 4.17 symlink 和readlink函数 76 4.18 文件的时间 76 4.19 utime函数 78 4.20 mkdir和rmdir函数 79 4.21 读目录 80 4.22 chdir, ...

Global site tag (gtag.js) - Google Analytics