磁盘的组织。
第一层:磁盘到分区,每个分区可以看成是独立的磁盘
第二层:磁盘到磁盘块(扇区),磁盘分成了大量编号的磁盘块
第三层:从磁盘块到三个分区:文件系统由三个部分组成,每一个部分都是由大量磁盘块组成。
A:文件系统的第一块叫做超级块,它存放了系统本身的结构信息,如每个区域的大小,未被使用的磁盘块的大小….
B:i-节点表:文件的大小,所有者和修改时间..都放在一个i-节点里面,每个i-节点有相同的大小,每个文件都有一个i-节点。每个i-节点都是通过位置来标识的。注:以上是磁盘文件的情况。 设备文件的i-节点是指向驱动的指针
i-节点都是固定大小的,这样才能顺利遍历它。担如果有很多磁盘块(大文件),该如何处理? I-节点 最多放10个的磁盘块,剩下的块编号都放在数据区的磁盘块里面,然后由I-节点 的第11个指针指向该磁盘块;另外还有多级间接块机制,就不详细展开了。
C:数据区,文件的内容就在数据区。
存储一个新文件:
1:把文件属性放在一个空的i-节点
2:把文件内容放在空的数据区的磁盘块,E.G.:No. 101,200,522
3:记录分配情况,把101,200,522 记录到i-节点
4:将i-节点编号和文件问记录到目录文件里面,对应起来
目录就是:一个包含i-节点和文件名的表。
如果两个文件指的是同一个物理文件(Hard link),则目录文件里面记录的i-节点是同一个
读取一个文件
1:在目录文件找到文件名和对应的i-节点
2:定位该i-节点,并读取文件读取权限,owner,数据块的编号等文件信息
3:按顺序的读取数据块,得到文件内容
i-节点 属性还包括了区分不同文件的,内核通过访问块分配表来知道是设备文件还是磁盘文件,如果是磁盘文件,内核通过访问块分配表来读取数据;如果是设备文件,通过调用设备驱动的read来读取数据。: