【问题标题】:difference between logical and physical I/O?逻辑 I/O 和物理 I/O 的区别?
【发布时间】:2014-04-25 05:00:09
【问题描述】:

我无法理解逻辑 I/O 和物理 I/O 之间的区别。 你能解释一下它们之间的区别吗?

谢谢

【问题讨论】:

  • 一些上下文会有所帮助。

标签: c linux io operating-system


【解决方案1】:

术语逻辑、物理和虚拟 I/O 通常应用于磁盘。然而,也可以应用于其他类型的设备。

在磁盘上下文中,逻辑 I/O 将磁盘视为一系列块,编号为 0 到 N。

物理 I/O 需要按盘片、磁道、扇区、块寻址磁盘块。

在过去,操作系统实现了物理到逻辑的转换。较新的磁盘倾向于在硬件中实现逻辑 I/O(并自动处理坏块)。

【讨论】:

  • “物理”块编号是 ATA 协议的历史产物。硬盘控制器完全有能力进行这种级别的数学运算。
  • 物理 I/O 可以追溯到 ATA 存在之前。 RA 系列磁盘是我使用的第一个对控制器进行逻辑转换的磁盘。之前的 RP 系列需要驱动程序级别的物理 I/O(如果内存保持)。
  • 对 ATA 的引用只是为了让 Linux 用户理解。我不认为这个问题是指历史。
  • 这个解释是针对与IO无关的逻辑块和物理块。
【解决方案2】:

他们之间有很大的不同,

逻辑 IO: FS 系统调用由 FileSystem 解析,这意味着它们永远不会到达物理块设备,例如你读取一个文件,它的内容在页面缓存和缓冲区缓存中(所有必要的信息都在缓存 Inode + 块中) 你的app会得到VFS+FS给出的内容

另一个例子可能是当你执行 ls 时,第一次 VFS 需要从物理块设备获取所有的 inode 信息,第二次信息将被缓存在 dentry 缓存中,不需要深入到物理设备。

物理: 例如同步写入,它将到达物理块设备,如果写入是异步的,则块将被写入 OS 缓冲区(逻辑写入),然后所有脏页将一起写入块设备(物理)以改善性能。

这就是为什么检查我们的 FS 如何执行 IO 以避免物理 IO 非常重要的原因。根据 FS 和内核参数,您可以改进缓存以使其适合您的需要。

【讨论】:

  • 非常明确的答案。从文件系统的角度看 i/o。
猜你喜欢
  • 1970-01-01
  • 2017-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-24
  • 2022-01-13
  • 2014-04-09
  • 2010-11-12
相关资源
最近更新 更多