原始 I/O 是否绕过驱动程序提供的部分或大部分服务?

Tim*_*Tim 1 linux drivers io

操作系统概念,作者:Abraham Silberschatz,2012 年 9 日 说

\n
\n

原始 I/O绕过所有 \xef\xac\x81le 系统服务,例如 \xef\xac\x81le I/O 需求分页、\xef\xac\x81le 锁定、预取、空间分配、\xef\xac\x81le 名称、和目录。

\n

...

\n

不幸的是,此后不会在此设备上执行任何操作系统服务。

\n
\n

原始 I/O 是否也会绕过驱动程序提供的部分或大部分服务?

\n

原始 I/O 会绕过驱动程序提供的哪些类型的服务?如果我在这里这里正确理解斯蒂芬,原始 I/O 不会绕过驱动程序提供的对仅顺序寻址设备的随机访问权限,而是绕过驱动程序提供的缓冲区/缓存?

\n

它是否会将设备驱动程序更改为更原始的、服务更少的驱动程序?

\n

open()请注意,您可以通过以下方式执行原始 I/OO_DIRECT

\n

谢谢。

\n

pjc*_*c50 5

我不认为他的意思和 O_DIRECT 是同一个意思;我认为他指的是访问块设备,例如 /dev/sda。打开 /dev/sda 将绕过“\xef\xac\x81le 锁定、预取、空间分配、\xef\xac\x81le 名称和目录” - 因此它绕过了文件系统,但没有绕过块设备驱动程序。

\n