【发布时间】:2014-04-25 05:00:09
【问题描述】:
我无法理解逻辑 I/O 和物理 I/O 之间的区别。 你能解释一下它们之间的区别吗?
谢谢
【问题讨论】:
-
一些上下文会有所帮助。
标签: c linux io operating-system
我无法理解逻辑 I/O 和物理 I/O 之间的区别。 你能解释一下它们之间的区别吗?
谢谢
【问题讨论】:
标签: c linux io operating-system
术语逻辑、物理和虚拟 I/O 通常应用于磁盘。然而,也可以应用于其他类型的设备。
在磁盘上下文中,逻辑 I/O 将磁盘视为一系列块,编号为 0 到 N。
物理 I/O 需要按盘片、磁道、扇区、块寻址磁盘块。
在过去,操作系统实现了物理到逻辑的转换。较新的磁盘倾向于在硬件中实现逻辑 I/O(并自动处理坏块)。
【讨论】:
他们之间有很大的不同,
逻辑 IO: FS 系统调用由 FileSystem 解析,这意味着它们永远不会到达物理块设备,例如你读取一个文件,它的内容在页面缓存和缓冲区缓存中(所有必要的信息都在缓存 Inode + 块中) 你的app会得到VFS+FS给出的内容
另一个例子可能是当你执行 ls 时,第一次 VFS 需要从物理块设备获取所有的 inode 信息,第二次信息将被缓存在 dentry 缓存中,不需要深入到物理设备。
物理: 例如同步写入,它将到达物理块设备,如果写入是异步的,则块将被写入 OS 缓冲区(逻辑写入),然后所有脏页将一起写入块设备(物理)以改善性能。
这就是为什么检查我们的 FS 如何执行 IO 以避免物理 IO 非常重要的原因。根据 FS 和内核参数,您可以改进缓存以使其适合您的需要。
【讨论】: