《Unix-Linux编程实践教程》读书笔记(四)
2014-05-19 14:32
549 查看
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
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
相关文章推荐
- 《Unix-Linux编程实践教程》读书笔记(三)
- 《Unix-Linux编程实践教程》读书笔记(十)
- 《Unix-Linux编程实践教程》读书笔记(一)
- 《Unix-Linux编程实践教程》读书笔记(七)
- UNIX-LINUX编程实践教程->第八章->实例代码注解->写一个简单的shell
- Unix-Linux编程实践教程——第十章
- UNIX-LINUX编程实践教程->第四章->实例代码注解->pwd1
- UNIX-LINUX编程实践教程->第八章->实例代码注解->写一个简单的shell->在shell中启动另一个程序
- UNIX-LINUX编程实践教程->第二章->实例代码注解->who01
- Unix-Linux编程实践教程——第七章
- Unix/linux 编程实践教程 ---------- 服务器-客户端编程
- Unix-Linux编程实践教程——第九章
- UNIX/LINUX编程实战教程——读书笔记一
- 一句话读书之unix-linux编程实践教程
- Unix-Linux编程实践教程——第十二章
- Unix-Linux编程实践教程——第五章
- UNIX-LINUX编程实践教程->第三章->实例代码注解->ls1
- Unix/Linux 编程实践教程 第7章 笔记(1)
- UNIX-LINUX编程实践教程->第二章->实例代码注解->cp1
- UNIX-LINUX编程实践教程->第五章->实例代码注解->setecho.c