2010-12-09 96 views
1

任何人都可以解釋如何使用BSD read()write()操作在/ dev節點上執行的讀/寫操作到達HDD。POSIX raw讀/寫

是否走通的文件系統或它直接通設備驅動程序進行交互....

回答

1

它直接與設備驅動程序進行交互。一些操作系統(對OS X不確定)會使用緩衝區緩存,但有些操作系統會繞過它。在某些情況下,它甚至取決於設備節點。例如,OS X具有/ dev/disk *以及/ dev/rdisk *,其中rdisk *設備節點是原始訪問。

1

例如,採取以下情況。你打開虛構的/ dev/bd設備,這是一個硬盤。爲了提供系統調用請求,內核首先嚐試查找與/ dev/bd路徑關聯的inode。成功之後,現在已經確定了什麼是inode的類型。在我們的例子中,inode的類型將是BLOCK-SPECIFIC。此時,內核知道這個inode代表一個驅動程序(一個特定於塊的設備的驅動程序)。每個設備都有一個(major_id,minor_id)對關聯,它們標識不同的設備。在inode中,可以找到它,並且內核確切知道哪個驅動程序可以爲請求提供服務。並且取決於請求,驅動程序的適當功能將被調用(例如讀取)。