1

Can anyone explain how the read/write operations performed on /dev node using BSD read() write() operation reaches the HDD.

Does it go thru File System or It directly interacts thru the device drivers....

4

2 回答 2

1

它直接与设备驱动程序交互。一些操作系统(不确定 OS X)会使用缓冲区缓存,但有些会绕过它。在某些情况下,它甚至取决于设备节点。例如,OS X 有 /dev/disk* 和 /dev/rdisk*,其中 rdisk* 设备节点是原始访问。

于 2011-08-30T03:24:44.087 回答
1

例如,采取以下情况。您打开虚构的 /dev/bd 设备,它是一个 HDD。内核为了服务系统调用请求,首先尝试查找与 /dev/bd 路径关联的 inode。成功后,正在确定,inode的类型是什么,刚才已经读过了。在我们的例子中,inode 的类型将是 BLOCK-SPECIFIC。此时,内核知道这个inode代表一个驱动程序(一个块特定设备的驱动程序)。每个设备都有一个关联的 (major_id,minor_id) 对,它们标识不同的设备。在 inode 中,可以找到它,并且内核确切地知道,哪个驱动程序可以为请求提供服务。并且根据请求,将调用驱动程序的相应功能(例如读取)。

于 2011-11-06T09:34:12.600 回答