1

是否可以创建具有奇数大小的 Linux (2.6) 块设备(例如环回设备)?我没能做到。losetup似乎向下舍入到 512 字节边界。ubd用户模式 ​​Linux 设备的设备ubd似乎四舍五入到 512 字节边界。在struct request中,我们有sector_t __sector读/写操作的块偏移量。

我问这个问题只是为了教育目的。我可以应付 512 字节的边界,但我仍然对是否可以绕过它感兴趣。在这个问题中,我对其他抽象层不感兴趣(例如使用常规文件或字符设备)。

4

2 回答 2

1

这就是块设备而不是字符设备的原因:块粒度。之所以存在这种二分法,是因为将一次工作一个块的真实硬件建模为同时处理块的抽象,效率要高得多。否则,每个操作都会变成更昂贵的计算。

正如您所提到的,绕过它的方法是使用面向字符的设备或抽象。这是 Unix 设备模型的核心:一切都是一系列八位字节,除了只能虚拟化为一个的东西。

于 2010-11-21T11:23:11.467 回答
1

不,Linux 2.6 块层不理解小于 512 字节的任何内容。任何更小的东西(尤其不是 2 的幂)都需要对大量代码进行重大重写。

于 2010-11-21T12:11:44.003 回答