码迷,mamicode.com
首页 > 系统相关 > 详细

Linux杂记

时间:2015-07-11 20:07:50      阅读:275      评论:0      收藏:0      [点我收藏+]

标签:

目录:

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!