您的位置:首页 > 运维架构 > Linux

《Unix-Linux编程实践教程》读书笔记(四)

2014-05-19 14:32 453 查看
1.      在第三章中,在简单介绍目录树的基础上,结合之前who程序的编写,完成了ls程序的编写。本章则重点介绍文件系统的具体细节,并编写pwd程序。

2.      从用户的角度看文件系统:介绍了与目录文件相关的多个shell命令,形成文件系统的感官认识。

3.      文件系统的内部结构:

         1)  第一层抽象:从磁盘到分区

         2)  第二层抽象:从磁盘到块序列

         3)  第三层抽象:从快序列到三个区域的划分(超级快、inode节点表、数据区)

4.      详细分析创建一个文件的过程:

         1) 存储属性:在inode节点表中找到空闲inode节点,存储新文件属性信息

         2) 存储内容:在数据区寻找内满足存储需要的数据块(每块512字节,需要若干块),存储文件内容

         3)  记录分配情况:将数据区中该文件的分配的数据块信息记录到inode节点中

         4)  添加文件名到目录:将新建的文件名添加到其所在目录的文件名和inode节点对的列表中

5.      目录的工作过程:

         1)  明确目录的实质:文件名和inode节点的对应表

         2)  多重链接(硬链接)

6.      文件系统的实现:cat命令的工作原理(实际是访问文件的具体过程)

         1)  cat filename:首先根据filename在目录中找到其inode节点号

         2)  根据inode节点号在inode节点表中找到相应的inode节点,从该节点中找到文件在数据区的数据块序列信息

         3)  按照数据块序列信息访问文件的实际数据

7.      大文件inode节点的处理

         在详细分析创建一个文件的过程中,提到将文件分配到的数据块信息存储在其inode节点中,但是inode节点数据结构用来存储块序列的空间是有限的,对大文件(需要分配较多的块)而言,就要使用间接块的概念了。概念块中并不是记录存储文件数据的块的地址,而是记录文件数据的块地址的块的地址。

8.      理解目录

         1)  “文件包含在目录中”:目录中有文件及其inode节点的对应信息

         2)  “目录包含子目录、父目录”:能根据inode节点信息按图索骥,描述层次结构

         3)  多重链接和链接数

9.      与目录树相关的命令和系统调用:mkdir、rmdir、rm、ln、mv、cd

10.   编写pwd

         1)  获取“.”的inode,chdir到“..”,通过获取的inode获取文件名,应为在当前目录中不存储自身的名字

         2)  按上述过程,一级一级向“/”递归,由于“/”的“.”“..”指向同一个inode,所以能挑出递归

         3)  程序无法在多个文件系统自合成一个树的情况下正常运行。

11.   多个文件系统的组合:由多棵树构成的树

         1)  装载点(挂载点)

         2)  多重inode节点和设备交叉链接

         3)  符号链接

12.   小结

本章重点介绍了文件系统的实现,详细介绍了跟文件创建和访问相关的细节。前四章都以文件作为程序的数据源,介绍了文件相关的诸多细节,接下来的章节将去讨论其他方面。

----------------------------------------------------------------------------------------

本文链接http://blog.csdn.net/yongchurui/article/details/26245129

2014.05.19
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息