Как файлы в / dev соответствуют модели устройства в Linux? [закрыто]
Вот мое понимание открытия файла для чтения / записи.
На прикладном уровне я могу вызватьfopen()
функция.
fwrite()
функция будет вызывать системный вызовopen()
.
После того, как ОС получаетopen()
вызов, он передаст команду в VFS (виртуальная файловая система).
VFS ищет имя файла, включая все необходимые каталоги, и выполняет необходимые проверки доступа.
Если это в кэш-памяти RAM, то доступ к диску не требуется. Если нет, VFS отправляет запрос на чтение в конкретную файловую систему, которая, вероятно, EXT4.
Затем драйвер файловой системы EXT4 определит, в каком дисковом блоке находится этот каталог. Затем он отправит команду чтения драйверу дискового устройства.
Итак, теперь давайте скажем, что я хочу прочитатьi2c устройство A прикреплен к плате. И каталог файлов/ DEV / I2C / А
Есть ли основной номер для всех устройств? Например, ОС Linux устанавливает 180 как основной номер для USB. Таким образом, на стороне устройства есть главный номер 180 в каждом устройстве USB?
Если на первый вопрос ответ НЕТ, то как ОС Linux может определить, какой типустройство А это просто в соответствии с каталогом файлов?
Я думаю, что ответ на 2-й вопрос может быть: на этапе инициализации загрузки есть некоторые определенные коды, которые уже монтируют этот порт в файловую систему, используя что-то вроде export ()? На самом деле, сразу после этапа загрузки, каталог файлов/ DEV / I2C / А существует там, и это связано с основным номером для устройств i2c. Поэтому, когда я хочу открыть dev / i2c / A, ОС найдет для меня подходящий драйвер i2c, а не драйвер SPI или USB. Я не уверен в этой части, мне нужна дополнительная информация по этому вопросу.
Вышеуказанная ситуация возникает, когда устройство монтируется в файловую систему сразу после этапа загрузки. Так что же случилось, если у меня есть USB, как можно подключить этот USB к файловой системе с правильным старшим номером 180 после его подключения? И я думаю, что есть IRQ, когда USB подключен до начала монтажа?