这样,多个分区建立一个文件系统就有可能了。启动核心的分区作为一个
已存的文件系统,其他的分区就嫁接到目录层上面。这个操作过程就是mount。
利用mount指令,就可以实现上面的操作。但是,mount之前的目录,在mount后
就给屏蔽了,直到mount结束,那些目录就可以再现。
以上就是经典的unix文件系统理论。但是,对于读入了i-node,就去读
data block ,这种情况,对于一个比较大的分区,硬盘磁头向disk head的距
离就太大了。总的来说,访问时间就会变长。在这里有一些指导思想:
。分区要比较小,多分小区
。了解超级块的地位,超级块记录了分区的信息,考虑由于介质的原因而
使这个超级块造成损害,所以,在分区内部就必须为它准备多几个拷贝。
。目录和它下层的文件,要在相同的领域内放置。
。确保单位data block要比磁盘的block大。
考虑了一些东西后,经过改良标准,freebsd就采用一个叫做FFS的文件系
统(Fast File System),但这只是i-node领域/data领域的配置方法的变化,基
本的考虑方法并没有变。对磁盘分区进行文件系统的构造的初始化由命令newfs
提供。看看它的source就知道怎么配置的了。其他的构造(......)对应于kernel
的source,对于构成boot program的文件disk.c和sys.c(@i386/boot/biosboot)
比较简单易懂(单纯性)。
上面讲述的i-node对disk的partition的记录形式,详细的(source)在
struct dinode(@ufs/ufs/dinode.h)里面有。在核心内部使用的,包含这个东西
的是struct inode(@ufs/ufs.inode.h)。
描述io设备的文件叫特殊文件(special file),他对应的i-node有两个种
类:
。块型(block)
和装置的固有的数据记录的单位(大多数的情况是512byte)无关。读写
的最小单位是1byte,可以在任意的场所里任意长度的data。核心对各个
block型的特殊文件进行固定的记录单位长度(倍数)进行缓冲(buffer)
管理,这样就可以处理任意长度的读写了.
。文字型(char)
上一页 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1718 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 下一页
| 论坛热门帖子: | [lch203] 写得蛮好的linux学习笔记(10-21) [黑马制造] 学习java的30个目标(10-19) [笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19) [udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18) [沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18) |
| TAG标签: | 作者 入门 核心 文件 进行 设备 系统 调用 操作 v-node |
注册
个人空间
