【发布时间】:2022-01-20 13:36:16
【问题描述】:
我知道您可以对块设备(/dev/sda 等)使用常规 I/O 功能,但是您可以只读取一些大小为 n 的数据,还是必须能被 512 整除?有没有听说过小尺寸的阅读?有些设备的块大于 512 字节,如果较小的大小有开销,我怎么知道最佳的块大小?
【问题讨论】:
标签: c linux block-device
我知道您可以对块设备(/dev/sda 等)使用常规 I/O 功能,但是您可以只读取一些大小为 n 的数据,还是必须能被 512 整除?有没有听说过小尺寸的阅读?有些设备的块大于 512 字节,如果较小的大小有开销,我怎么知道最佳的块大小?
【问题讨论】:
标签: c linux block-device
根据Wikipedia 以及对于 Unix 和类 Unix 系统(因此是 Linux):
块特殊文件或块设备提供对硬件设备的缓冲访问,并从它们的细节中提供一些抽象。与字符设备不同,块设备将始终允许程序员读取或写入任何大小(包括单个字符/字节)和任何对齐方式的块。不利的一面是,由于块设备是缓冲的,程序员不知道写入数据从内核缓冲区传递到实际设备需要多长时间,或者实际上两个单独的写入将以什么顺序到达物理设备。 .
这意味着您可以使用任何大小进行读取。由于 in 驱动程序 缓冲,物理读取将始终读取物理扇区。
【讨论】: