POSIX raw чтение / запись - PullRequest
       25

POSIX raw чтение / запись

1 голос
/ 09 декабря 2010

Может ли кто-нибудь объяснить, как операции чтения / записи, выполняемые на узле / dev с использованием операции BSD read () write (), достигают жесткого диска.

Идет ли это через файловую систему или напрямую взаимодействует с драйверами устройства ....

Ответы [ 2 ]

1 голос
/ 06 ноября 2011

Например, возьмем следующий случай.Вы открываете вымышленное устройство / dev / bd, которое является жестким диском.Ядро, чтобы обслужить запрос системного вызова, сначала пытается найти индекс, связанный с путем / dev / bd.После того, как это удалось, выясняется, какой тип индекса, был прочитан только сейчас.В нашем случае тип индекса будет BLOCK-SPECIFIC.На данный момент ядро ​​знает, что этот индекс представляет драйвер (драйвер устройства для конкретного блока).С каждым устройством связана пара (major_id, minor_id), они идентифицируют разные устройства.В inode он может быть найден, и ядро ​​точно знает, какой драйвер может обслуживать запрос.И в зависимости от запроса будет вызвана соответствующая функция драйвера (например, read).

1 голос
/ 30 августа 2011

Он напрямую взаимодействует с драйвером устройства. Некоторые операционные системы (не уверенные в OS X) используют буферный кеш, но некоторые обходят его. В некоторых случаях это зависит даже от узла устройства. Например, OS X имеет / dev / disk *, а также / dev / rdisk *, где узлы устройств rdisk * имеют прямой доступ.

...