我似乎找不到这个问题的答案。我只想了解一个操作系统如何实现和运行(支持)多个文件系统?
答案 0 :(得分:0)
假定存在一个全局名称空间,其中所有文件和目录名称都具有某种前缀,以确定文件或目录来自哪个文件系统。对于某些操作系统(DOS),前缀可能是设备字母(例如C:\
开头的C:\foo\bar.txt
)。对于其他操作系统,它可能看起来像文件路径的正常部分(例如,/home
开头的/home/foo/bar.txt/
可能会告诉操作系统该文件位于挂载在{{1}的文件系统中) }。
一旦操作系统确定了哪个文件系统包含该文件,它便可以使用文件“全局名称”的其余部分向该文件系统询问有关该文件的信息(例如,对于文件/home
,它会询问为文件/home/foo/bar.txt
安装在/home
的文件系统上。
为使此功能有效,操作系统中将内置一个层来注册文件系统并找出哪个文件系统询问哪个文件或目录(可能除了提供其他功能外,例如缓存目录信息和文件数据) )。通常(但并非总是)这称为“虚拟文件系统”(或VFS)。
在引导过程中,以及插入新的存储设备时,将出现“某些信息”,以找出要使用的文件系统类型以及如何将其添加到全局名称空间中。这可以包括自动检测(例如,从存储设备上的分区表条目中检测),可移动媒体的规则集和/或配置文件(/foo.bar.txt
)。
答案 1 :(得分:0)
文件系统的基本功能是提供映射,以将虚拟块转换为逻辑块(或在过去称为物理块)。对于文件系统,操作系统必须实现一个转换系统,该转换系统会将文件的虚拟块N转换为磁盘上的逻辑块Q。
没有什么可以阻止操作系统具有多个子系统来以对应于多个文件系统的不同方式执行该转换的。
大多数操作系统都具有某种MOUNT命令,该命令告诉操作系统连接到磁盘并确定其具有哪种文件系统。正是在安装过程中,操作系统会选择要使用的适当的虚拟到逻辑转换软件。
操作系统从一开始就支持多个文件系统。在过去,除了磁盘以外,还有9轨磁带以及自己的文件系统。操作系统也必须支持这些功能。