Unix编程学习笔记---文件系统与 i节点
来源:互联网 发布:2016年11月网络热搜 编辑:程序博客网 时间:2024/04/19 13:50
文件系统: i节点与磁盘文件
:
首先提出我的一些问题:
1. 文件描述符fd 、文件对象、i节点、磁盘文件之间是什么关系???
a) 文件对象:表示进程已经打开的文件在内存中的表示,该对象不是物理上的文件,
b) 文件对象在内存中有一段存储内容。
c) 每一个文件对象都包含:文件的状态信息、内存中存储文件内容的缓冲区指针,以及当前文件的读写位置等。在文件对象中,存有文件的iNode节点信息。
d) 文件描述符-------》文件对象------》iNode节点-------》磁盘文件
2. 如何将一个字符串形式的路径名,转换为一个文件在内核中的iNode号??
3. iNode节点都有哪些信息???
4. 如何才能由i节点定位到文件在磁盘上的物理地址的???
1》 目录文件中存有每一个文件的文件名和该文件名所对应的iNode号。
2》 iNode_table文件即:iNode节点表文件,该文件存有iNode号和该iNode号节点的结构体指针, 在iNode节点中存有该iNode节点所指向的在磁盘上的磁盘块的指针。
3》 每一个iNode节点,都对应有一个磁盘文件,该文件要么是目录项或者是普通文件
4》 要点:
1. iNode节点都有哪些信息??
a) 每一个iNode节点都有一个描述它的磁盘数据结构,在iNode节点中存有该iNode节点所对应的文件在磁盘上的数据块的指针和文件的数据块数。
2. 目录文件的作用:
a) 完成文件名到iNode号的映射。
b) 即:给定一个文件名找出其所对应的iNode号。
3. 每一个iNode节点都能唯一定位一个磁盘文件。
4. 在磁盘上,存储的有两种文件:
a) 1目录文件
b) 普通文件
5. 我们来看一下,磁盘结构:
如何将一个字符串形式的路径名,转换为一个文件在内核中的iNode号?????
实例:/home/my/code/test.c
这个工作流程:
1. 首先:把这个路径名拆分成一个个文件名序列,除了最后一项以外,所有的文件名都必定是目录。
在这里是: home、 my 、 code、test.c
2. 内核会存有一个根目录文件,然后内核会把分析出的第一个文件名home,与根目录中的文件名进行匹配,如果找到匹配项,则把该目录项的iNode号提出出来,home的iNode号是2
3. 内核得到一个iNode号,便会在iNode_table 中找到该iNode 号所对应的文件在磁盘上的数据块地址,然后,根据数据块的地址,把文件内容读取到内存当中。
4. 然后继续分析下一个文件名。
5. 重复以上工作。
我们发现,home文件名的iNode号的磁盘文件是一个目录文件,该目录文件中的iNode号指向的又是一个目录文件,只有路径名中的最后一个文件名的iNode节点号所对应的磁盘文件是一个普通文件。因此,把此普通文件读取到内存中。
- Unix编程学习笔记---文件系统与 i节点
- Unix文件系统研究:1. i节点
- UNIX文件系统--i节点小知识
- Unix 文件系统的一些基本理论(关于i-节点)
- UNIX环境编程学习笔记(7)——文件I/O之文件访问权限与进程访问控制
- unix环境编程笔记:第二章:文件系统
- UNIX环境编程学习笔记—文件I/O之标准I/O流
- 《unix/linux编程实践教程》学习笔记:第四章 文件系统:编写pwd
- Unix学习笔记-------Unix编程实例练习
- Unix网络编程学习笔记——close与shutdown
- Linux 与 unix shell编程指南——学习笔记
- HP-UNIX 11i的学习笔记
- HP-UNIX 11i的学习笔记
- HP-UNIX 11i的学习笔记
- unix标准I/O学习笔记
- unix-文件i/o学习笔记
- unix-标准i/o学习笔记
- Unix网络编程学习笔记
- linux mknod命令解析
- JavaBean的编译和部署说明
- 【Python】Learn Python the hard way, ex4 使用变量
- 利用MSSQL复制功能实现与Oracle数据库同步
- ns-2与TCP拥塞模拟 之六 ns-2 TCP拥塞控制核心模块-变量说明
- Unix编程学习笔记---文件系统与 i节点
- NSTimer定时器的简单用法/NSTimer Instance
- 由scroll view引发的一系列小零碎
- theano tutorial学习笔记(一)
- Logistic Regression笔记
- CTreeCtrl带CHECKBOX属性,实现联动效果(点击父节点全部子节点被选中)
- 网络爬虫Python试验
- UINavigationBar自定义返回按钮
- Set Matrix Zeroes