文件系统实现
1文件系统布局
2 文件的实现
文件的实现归根到底就是能够把文件的内容放在合适的地方,并能够在需要时读出这些内容。
1)给文件分配磁盘空间;
2)记录这些磁盘空间的位置;
3)将文件内容存放在磁盘中。
以上三点均需要知道文件的存放方式:连续存放和非连续存放。
2.1 连续存放方式
1)文件名到文件地址的映射就是文件名到第一个数据块的地址的映射;
2)读写效率高;
3)浪费空间,不易扩展。
2.2 非连续存放方式
1)链表
a 可利用碎片但是访问速度慢,如果有一个指针出现了问题,则无法访问;
b 指针占用了内存空间。
2)将指针放在一个地方:文件分配表(页表过大)
3)索引文件组织(大文件存在问题)
索引数据块:I-NODE
使用索引组织方式时,用户线宣称文件有多大,系统就按用户的声明分配一个含有相应数量指针空间的的文件头,但不真正分配磁盘空间。在真正分配磁盘空间时更新指针。
a 避免了将所有文件的地址同时加载到内存;
b 随机访问很方便;
c 随机访问效率不高;
d 文件增长灵活但是增长困难。
4)多级索引结构(小文件存在问题:访问速度低)
5)非对称多级索引
6)文件缓存
3 目录实现:文件地址独立的实现
将上述的地址存放在文件夹中即可。
4 文件共享
硬链接
在使用符号链接时,一个文件可以从多个路径进行访问,也就是说该文件的地址保存在多个文件里,具体来说,当用户把一个文件链接到一个文件夹时, 该文件夹里会增加一条记录。删除时不是将文件马上删除,而是将文件里面的连接数减1,如果结果为0,才会删除。
软链接
要想链接是软连接,就不能将文件的地址直接存放在链接目录的目录夹中。间接访问。
5 文件挂载