linux系统是如何管理文件的

介绍

本篇内容主要讲解“linux系统是如何管理文件的”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“linux系统是如何管理文件的“吧!

,一、什么是文件系统?
在这之前,我们有必要了解一下文件系统的概念----它是操作系统用于明确存储设备或分区上的文件的方法和数据结构;也就是说,在存储设备上组织文件的方法。所以在操作系统中负责管理和存储文件信息的软件结构称为文件管理系统,简称文件系统(文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。专业的讲,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,安全控制,日志,压缩,加密等;打个非常不切当的比喻,只是为了好理解,莫见怪,哈哈哈-----比如我们在建房子的时候,你首先得设计结构来,然后分配好任务来,要准备哪些材料来;房子建好了的时候,你搬进来住的时候,你得考虑空间大小等方面,这里的文件系统就是你自己的各方面考虑的想法。)

linux系统是如何管理文件的

二、inode结构体:
1、在讲这个之前,我想接触过Linux的好友,都会听过这句话:在linux系统下,一切都是文件。这个确实是,怎么讲,不知道你有没有注意,在windows下,我们可以看到硬盘分区:C盘、D盘、E盘等,但是你在linux下,你是看不到这样的分盘标识符的。但是它是需要硬盘来提供存储管理的(这句话感觉说完,自己有点傻,是人都知道要物理内存)。在一块物理硬盘中可以分为两大区域:一个是硬盘内容存储管理表项,另一个是真正存储内容的区域。操作系统访问硬盘时是先去读取硬盘内容管理表(作为搜找一个文件存储路径的索引),从中找到我们要访问的那个文件的扇区级别的信息,然后再通过这个信息去查询真正存储内容的区域,最后得到我们要的文件。

2、什么是inode呢? 理解inode,要从文件储存说起。文件储存在硬盘上,硬盘的最小存储单位叫扇区(Sector)。每个扇区储存512字节(相当于0.5KB)。操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个块(block)。这种由多个扇区组成的块是文件存取的最小单位,块的大小,最常见的是4KB,即连续八个sector组成一个block,文件数据都储存在块中,那么很明显,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创年日期、文件的大小等等。这种储存元信息的区域叫做inode,中文译名为”索引节点”。inode (index node) 表中包含文件系统的所有文件列表

3、在linux系统下,操作系统最初拿到的信息是文件名,最终得到的是文件内容。第一步就是去查询硬盘内容管理表,这个管理表中以文件为单位记录了各个文件的各种信息,每一个文件有一个信息列表数据结构(我们叫inode结构体,i节点,其实质是一个结构体,这个结构体有很多元素,每个元素记录了这个文件的一些信息,其中就包括文件名、文件在硬盘上对应的扇区号、块号那些东西·····)
注意:硬盘管理的时候是以文件为基本单位的,每个文件一个inode结构体,每个inode有一个数字编号,对应一个结构体,结构体中记录了各种信息。(我们操作系统拿到一个文件名后就会在硬盘内容管理表中利用文件名循环匹配硬盘内容管理表中的文件信息节点inode,怎么匹配呢?我觉得应该是拿文件名去匹配节点里的一个结构体指向元素,差不多和c语言里面构建了一个结构变量,然后通过这个结构体变量来访问结构体内的内容原理是一样的)。

linux系统是如何管理文件的

4、小结:i节点就是我们操作系统中用来记录文件各种信息(存储、大小之类)的一种数据结构,这种数据结构能够让我们去管理硬盘上的存储文件。
三、vnode结构体:
1、在讲这之前,我们还是要讲一下什么是文件描述符,前面的文章我只是简单的讲了一下,这里还是补充一下:
a、文件描述符(fd)的本质是一个数字,这个数字本质上是进程表中文件描述符表的一个表项,进程通过文件描述符作为index去索引查表得到文件表指针,再间接访问得到这个文件对应的文件表。

linux系统是如何管理文件的