挂载时UNIX文件系统中的特殊文件?

问题描述 投票:0回答:1

我正在阅读 The UNIX Time-Sharing System 由D.M.Ritchie和K.Thompson撰写,他们在书中简单介绍了UNIX操作系统。在文件系统部分,当他们谈到 "mount "时,他们说了下面2段话。而我对这两段中的粗体和itatic内容有一些疑问。

第1段:当对一个i节点表示特殊的文件提出IO请求时,最后12个设备地址字是不重要的,第一个指定的是内部设备名,解释为一对数字,分别代表了一个 器件类型子设备号. 设备类型表示哪个系统例程将处理该设备上的IO;子设备号选择,例如,连接到特定控制器上的磁盘驱动器或几个类似终端接口中的一个。

第2段:在这种环境下,mount系统调用(3.4节)的实现是非常直接的,mount维护了一个? 系统表 其参数是i-数字和 普通文件的设备名 在挂载过程中指定的,并且其 对应值 是指定的特殊文件的设备名。在打开或创建过程中扫描路径名时,会对每一个出现的i-number-device对进行搜索;如果发现匹配的设备。i-number被替换为根目录的i-number,设备名称被替换为表值。

  1. 从第一段中,我知道 设备名称 是存在于 特别档案 i节点。但是,为什么在第二段中说 普通档案 也有它?

  2. 褂幸桓龃? 系统表mount 试图维护?在第2段中,是否表明系统表是内部文件系统的一部分,挂载过程做出这样一个表,它的条目是 特别档案 指向挂载的外部设备中的文件?

file unix operating-system filesystems mount
1个回答
0
投票

先说说2个看法。

  1. mount /dev/sda2 /mnt/sda2 首先是两个观察: 特别档案 /dev/sda2和一个非特殊文件(普通档案) /mnt/sda2.
  2. 文件名查询必须知道如何跨入另一个挂载的文件系统。

让我们假设 /dev/sda1 是设备100,并安装在 /. 让我们假设 /dev/sda2 是装置200,并安装在 /mnt/sda2. 当你抬头看时,会发生什么?/mnt/sda2/x? 该文件被存储为 /x 关于 /dev/sda2. 下面是发生了什么。

  1. 假设每一个文件系统的根节点的inode号都是1
  2. 操作系统查找 mnt 在设备100的inode 1中,发现例如inode 5。
  3. 操作系统检查它的全局系统挂载表,看看(设备100,inode 5)是否映射到什么地方--没有。
  4. 操作系统查找 sda2 在设备100的inode 5中,发现例如inode 17。
  5. 操作系统会检查它的全局系统挂载表,看看(device 100, inode 17)是否映射到什么地方。
  6. 因为 /dev/sda2 安装在 /mnt/sda2,该表返回 /dev/sda2,也就是设备200--我们正在进入另一个挂载的文件系统。
  7. 操作系统会查找 x 在设备200的inode 1中,找到例如inode 11。
  8. 查找返回(设备200,inode 5)。

所以回答你的问题。

  1. 普通文件是挂载点 "普通 "的意思是 "不是特殊文件"。注意,可以挂载普通文件,而不仅仅是目录。Docker就使用了这个功能。
  2. 系统表的条目是 挂载点 指向安装的设备。
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.