linux0.11文件系统学习小结

大概浏览了一下linux0.11文件系统,感觉逻辑比较复杂(程序之间的层次并不十分清晰,相互调用很多),很难一时理解的透彻,只能阶段性的描述下自己的感受。
我读linux0.11源码参考的是<<linux0.11内核完全注释>>和<<linux内核设计的艺术>>,这两本书都详细的讲解了源码,但是只有理解了才能变成自己的东西。linux0.11版本虽然比较老,但还是可以有助于理解OS原理。

文件操作为计算机运算提供了最关键的数据支持,理解了文件系统,才能更好的理解OS,才能更好的理解计算机。
我们平时看到电脑上的各种文件实际上一种逻辑上的数据,存在磁盘中的数据才是真正的物理数据。

文件在磁盘上的最小存储单位是“扇区”,每个扇区可存储512个字节(物理数据)。操作系统读取磁盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block),linux0.11中一个块包含2个扇区,"块"是文件存取的最小单位。

那么逻辑上的文件是什么东东呢?逻辑文件的存储是一种索引结构,文件的起源是“根目录”文件,根目录文件的内容目录项,目录项由iNode节点和文件名(name)组成,目录项中的inode即有可能是下一目录(子目录)的iNode节点,也有可能是文件的iNode节点(目录和文件都是文件)。
iNode节点中储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小,文件“块”的索引;通过“块”的索引,我们可以找到文件物理数据。
(fs.h中的file struct并不能代表文件,用于在文件句柄与iNode节点之间建立关系。)

就这样,通过逻辑文件索引到物理数据的过程,加上在这个过程中内存分配和缓存的一些逻辑,就构成了文件系统。

Linux0.11的文件系统的主要布局(物理布局):引导块、超级块、iNode节点位图、逻辑块位图、iNode节点、数据盘块。
文件的全局信息都保存在超级块(super block)中,包括节点,块,位图信息等;
iNode节点位图是iNode节点的映射表;
逻辑块位图是逻辑块的映射表;
iNode节点中包含了文件的属性,数据块的索引;
数据盘块为实际的数据区。
通过上述数据,我们就可以推导出我们需要的数据:
超级块->逻辑块位图->数据块(空闲数据块)
超级块->iNode节点位图->iNode节点表中的iNode节点->数据块(指定数据块)

计算机对磁盘文件的读写不会直接通过内存和磁盘,而是在内存中划出一块区域作为缓冲区,缓冲区虽然在物理内存中,但不属于linux内存管理范畴;这样,计算机对磁盘的操作步骤就是CPU->内存->缓冲区->磁盘。设置缓冲区的目的是为了加快磁盘读写效率。

缓冲区实际和磁盘物理数据区对等映射,缓冲区被分成和块大小的缓冲块,盘块=逻辑块=缓冲块=1024字节。
OS会将超级块、iNode节点位图、逻辑块位图和部分(需要使用的)iNode节点、(需要使用的)数据盘块加载入缓冲块;这样,当对缓冲块操作,在同步时,会将缓冲块的数据写入物理块中。

...

这只是一个非常抽象的小总结,里面错误、不完善的地方难免,我会在后面学习过程中不断更正。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值