操作系统目录与文件系统---21
操作系统目录与文件系统---21
文件,抽象成一个磁盘块集合
单个文件映射到磁盘上,靠的是对应的映射表,通过映射表就可以知道该文件被映射到了那几个磁盘块进行存储。
文件系统,抽象成整个磁盘(第四层抽象)
要将整个文件系统都映射到磁盘上去,那么就需要在磁盘上维护相关数据结果来记录文件系统的结构,并且需要确保这些数据结构也能被其他机器识别,这样就可以让同一块磁盘可以被不同的机器解析并被使用。
下面的关键就是如何让一堆文件映射到磁盘了
故事先从多个文件开始…
如果将所有文件都放在一起,那么无论怎么划分,文件数量还是会很大,不方便管理。
引入目录树
实现目录成为了关键问题…
首先需要回答:目录怎么用?
- 用“/my/data/a”定位文件a
问题:更准确的说,是要干什么?
- 根据/my/data/a,得到文件a的FCB
现在的关键就是如何完成目录名到对应文件FCB的映射
问题:那么目录中应该存什么?
存放目录下的所有文件的FCB吗? 如果是,解析my要干什么?
我们的目的只是查找my目录下的某个文件,并且在进行查找过程中,也只是根据文件名进行挨个匹配,如果每个文件名都需要保存其对应文件的FCB(FCB平均每个也有几百个字节),那么显然这样太浪费磁盘空间,毕竟大部分的文件的FCB都是不被需要的。
问题:有什么办法(目录存什么)让系统效率更高?
最直接的想法,就是能不能不直接存储对应文件的FCB,而是只存储对应FCB在磁盘中的位置,或者某一个编号,而通过磁盘中维护的某个数组,可以快速查找到该编号对应的FCB。
树状目录的完整实现
在磁盘中某个固定位置,我们需要维护一个FCB数组,当我们需要查询某个目录名时,首先需要从根目录开始查询起(根目录位置应该是固定的),通过根目录数据块维护的文件名和对应FCB索引映射关系,查询到对应一级目录的FCB。
然后再通过一级目录的FCB定位到对应的数据块,再通过数据块查询到下一级目录对应的FCB索引,然后依次往复,直到查询到最终的文件…
关键是起始的根目录位置,如果让操作系统知晓呢?
要使整个系统能自举,还需存一些信息
超级块可以记录两个位图有多大,包括自身有多大,通过这些信息就可以计算出存放节点的区域起始位置在哪里,然后就可以定位到根节点的位置,因为根节点是节点区域中的第一个节点,并且每个节点的大小也应该是固定的。
一个磁盘想要使用,需要mount到一个系统中,所谓mount就是读取超级块,超级块可以通过换算找到根目录,而如果要将磁盘挂载到当前系统的/usr/local目录下面,则当操作系统需要遍历/usr/local目录时,对应定位到的就是当前磁盘的根目录
“完成全部映射下”的磁盘使用
相关文章
- 操作系统概念学习笔记 11 进程同步(一)
- KubeCon 2020 阿里云推出四大企业级容器新品 ,详解云原生操作系统进化
- 【STM32F429】第7章 ThreadX操作系统移植(GCC)
- Linux 0.11-操作系统如何获取时间-17
- 有道云笔记在Windows 英文操作系统下字体显示模糊的解决方案
- Atititi 计算机系 教材 目录 1. 硬件类2 1.1. 《微机系统与接口技术》2 1.2. 《计算机组成与系统结构(第2版)》2 2. Atitit 操作系统原理 操作系统原理(cpu
- Atittit HDFS hadoop 大数据文件系统java使用总结 目录 1. 操作系统,进行操作1 2. Hdfs 类似nfs ftp远程分布式文件服务2 3. 启动hdfs服务start
- IT:银行类金融科技岗笔试习题集合—各大行(工商+建设+农业+浦发+招商+平安+人民+邮政银行)计算机信息科技岗笔试集合(包括计算机基础知识+网络+操作系统+数据库系统原理)
- 为ubuntu操作系统增加root用户
- 查看linux操作系统
- 操作系统笔记
- reactos操作系统实现(153)
- reactos操作系统实现(197)
- Linux【基础篇】—— linux操作系统目录结构、运行级别介绍
- 国产操作系统之凝思磐石安装
- 操作系统权限提升(七)之系统错误配置-不安全注册表提权
- 查看开源操作系统ReactOS源码,解决dll库动态库加载失败问题(调用LoadLibrary加载失败)