linux I节点
来源:互联网 发布:office for mac破解版 编辑:程序博客网 时间:2024/06/15 05:48
最近在复习linux, 谈谈自己对i节点的理解。
一个磁盘可以划分为很多个扇区, 每个扇区有512个字节, 扇区是磁盘的基本存储单元。将每个扇区编号, 这样磁盘就变为了一系列编了号的块组合。
一个磁盘主要包括引导块, 超级块, i节点表,文件存储区, 进程对换区等。
1、.引导块
引导块占用第0号物理块, 不属于文件系统管辖。如果系统中有多个文件系统, 只有跟文件系统才有引导程序放入引导块中, 其余文件系统都不使用引导块
2、超级块
文件系统的第一个块被称为超级块, 这个块存放的是文件系统本身的结构信息。比如超级块记录了每个区域的大小, 存放未使用磁盘的信息等。
3、i节点表
超级块是下一个部分就是i节点表, 每个文件对应一个i节点,每个文件都有一些属性, 如文件大小,所有者,创建时间等。这些信息存放在对应的i节点的结构中, 所有的文件都具有相同大小的I节点,这些i节点组成一个i节点表,文件系统创建后,i节点的数目是有限的。所以一个文件系统能够创建的文件也是有限的。
4、文件存储区
文件系统的第3个部分是文件存储区,文件的内容保存在这里, 磁盘所有的块大小都是一样, 如果文件大小超过一个块的大小,则文件会存放在多个次磁盘块中
5、进程对换区
磁盘上会开辟一块区域, 为对换区, 当内存中的进程需要扩大占用的内存空间, 而当前内存空间不足时, 则把某些不常用的进程暂时替换到对换区中, 在适用的时候又把他们换进 内存,解决内存不足和进程之间对内存的竞争问题。
i节点的结构如下
{
ushort di_mode; /*文件类型+用户权限*/
short di_nlink; /*文件链接数*/
ushort di_uid; /*属主用户id*/
ushort di_gid; /*属主用户组id*/
off_t di_size; /*文件大小*/
time_t di_mtime; /*最后修改时间*/
time_t di_ctime; /*创建时间*/
};
i节点数据结构里面没有文件名, 那文件系统是如何管理文件名,i节点和文件内容之间的关系的呢?
假设要创建一个新文件。该新文件占3个磁盘存储块。
创建文件步骤如下:
1、 内核先找到一块空闲的i节点, 图中,内核找到空的i节点号为10, 内核把文件信息记录到其中, 如文件大小, 文件所有者, 创建时间等。
2、存储数据,即文件的内容存储,由于该文件需要3个数据块,内核从空闲的数据块中找到3个数据块, 200, 300, 400。 将内容复制到这些块中。
3、记录分配情况, 数据保存到3个数据块中, 必须记录起来, 以便下次查找。 磁盘分配情况记录在文件的i节点的磁盘序列列表中,
4、增加文件名和目录。新文件的名字为hello.c, 内核将文件的入口添加到目录文件中,文件名和i节点号之间的对应关系, 将文件名和文件属性,内容联系起来,找到文件名就找到文件的i节点号,通过i节点号就能够找到文件的属性和内容。
- Linux的I节点
- linux i 节点
- linux i节点
- linux I节点
- 理解Linux i节点
- linux i节点(inode)
- Linux中的文件i节点
- 深入理解linux i节点
- Linux中的文件i节点
- Linux中的文件i节点
- 深入理解linux i节点(inode)
- linux文件系统之i节点详解
- 深入理解linux i节点(inode)
- 深入理解linux i节点(inode)
- 深入理解linux i节点(inode)
- 深入理解linux i节点(inode)
- 深入理解linux i节点(inode)
- 深入理解linux i节点(inode)
- Android官方文档---保存文件
- 提升你的效率
- Dx warning: Ignoring InnerClasses attribute for an anonymous inner class
- Web Service and SoupUI
- SRM 624 Building Heights DivI 题解
- linux I节点
- 【线段树】 HDOJ 3397 Sequence operation
- list 转换为set(主要用于hibernate后台取出list然后再转换为对象里的set)
- 代码的坏味道(bad smell)
- ubuntu
- 调试Bug:对象不能从 DBNull 转换为其他类型
- Android官方文档---把数据保存到数据库中(一)
- tomcat配置sqlserver数据库
- VC++ (VS2013)里面char和LPTSTR的转换问题