标签:
目录:
1.理解iNode
2.理解硬链接和软连接
1.理解iNode
我们知道 linux中一个文件具有很多属性,uid,gid,文件大小,访问权限,文件内容block位置等。这些内容是和文件中的实际内容分开放的。文件的属性是放在叫做 i节点的结构中 ,而文件内容则放在数据块中。这个 inode(i节点) 和block(数据块)是文件系统一开始就规划好的,并且不会改变(除非你格式化)。i节点存放的是文件(或目录)的属性,,还存放文件内容的block的位置,并不存放文件或目录的实际内容,(目录的内容就是一般文件或子目录,也就是说一般文件的文件名和子目录名也是存放在block中的)。也就是说文件内容是通过i节点来索引的。
文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。
操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个 sector组成一个 block。
文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。每一个文件对应一个inode,硬盘上有多少文件,就有多少个inode。
磁盘块上存储文件时,按照一定的规律。每个文件系统分为3部分:超级块,i-节点表,数据区 。
超级块 :存放文件系统本身的信息,比如记录了每个区域的大小,或未被使用的磁盘块的信息。(不同版本稍有差别)
i-节点表 :每个文件都有其属性,大小,最近修改时间等等,这些被存储在ino_t 的结构体中,所有的i-节点都有一样的大小,i-节点表就是这样一些节点的列表。
(表中的每个i-节点都通过位置来标志,例如标志为2的i-节点位于文件系统i-节点表中的第3个位置 )
数据块 :存放文件内容,因为块的大小一定,所以有时一个文件会分布在多个磁盘上。
创建一个文件的4个步骤:
存储属性:内核先找到一个空的i-节点,把文件的属性信息填入其中;
存储数据:从磁盘上找出空闲块,把文件数据复制进去;
记录分配情况:内核在i-节点的磁盘分布区记录了刚刚的磁盘编号
添加文件名到目录:将(i-节点号,文件名)添加到目录。
系统读文件的方式:假设读取/home/feng/a文件的内容
1.系统先通过 根目录 / 的挂载点 找到它的inode编号(从下面输出中我们看到是inode是 2)
[root@Big /]# ll -di /
2 drwxr-xr-x 24 root root 4096 Jul 8 04:18 /
2.找到编号为2的i节点,然后从该i节点中找到 存放 / 目录中目录项名的block,从这些block中找到内容有home的block,然后也就找到了home目录项的inode编号(目录项名,和inode是放在一起的)(262145)
以此寻找...
2.理解硬链接和软连接
我们先来看一下一个忽略了一些细节的关于符号连接和硬链接的图。矩形为目录,圆形为文件,三角形为内存块。
如上图所示。A在自己的目录下建立一个与B下x的同名文件。
符号链接:如图中黄色箭头所示,让A中的x实际上指向B中的x
硬链接:如图中红色箭头所示,它是直接指向B中x的实际内存中的内容。而不通过B中的x。
从上图可以很容易看出 符号链接和硬链接的区别:
符号链接可以说的间接访问。它通过B中的x才能访问到内存中x的内容。那么如果把B中的x目录项删掉,那么A中的x也就不能在访问到x的内容了。因为它是同过B中的x来访问的。
那么硬链接就可以说是直接访问。它直接指向B中x在内存中的内容。那么现在就算B中的x目录项被被删掉了。我们仍然可以通过A中的x来访问它。
如果细究,就要知道它们的inode 和block的组织方式。
我们假设/home/A的 inode 编号为5, /home/B的 inode 编号为6,而 记录 B中x的数据block 分布的 inode编号为7 。
那么硬链接的情况如下:
符号链接如下:
3.Linux进程类型
Linux操作系统包括3种不同类型的进程,每种进程都有自己的特点和属性。
•交互进程:由一个Shell启动的进程,交互进程既可以在前台运行,也可以在后台运行。
•批处理进程:这种进程和终端没有联系,是一个进程序列。
•监控进程:也称守护进程,Linux系统启动是启动的进程,并在后台运行。
Linux杂记
标签:
原文地址:http://www.cnblogs.com/shih/p/4639127.html