Файлы и устройства

Пользователи Windows привыкли к тому, что файл — это именованная область данных на диске. Отчасти так оно и есть. Отчасти — потому, что приведенное определение файла было верно для DOS (Disk Operating System) и Windows.

В FreeBSD же понятие файла значительно шире. Сейчас Windows-пользователи будут очень удивлены: в UNIX существуют файлы устройств, позволяющие обращаться с устройством, как с обычным файлом. Файлы устройств находятся в каталоге /dev (от devices). Да, через файл устройства мы можем обратиться к устройству! Если вы работали в DOS, то, наверное, помните, что что-то подобное было и там — существовали зарезервированные имена файлов: PRN (принтер), CON (клавиатура при вводе, дисплей при выводе), LPT n (параллельный порт, n — номер порта), COM n (последовательный порт).

Вот самые распространенные примеры файлов устройств:

 /dev/ad N — файл жесткого диска с интерфейсами PATA (IDE) и SATA:

/dev/ad0 — жесткий диск, подключенный как Primary Master;

/dev/ad1 — жесткий диск, подключенный как Primary Slave;

/dev/ad2 — жесткий диск, подключенный как Secondary Master;

/dev/ad3 — жесткий диск, подключенный как Secondary Slave;

/dev/ad4 — жесткий диск, подключенный к первому SATA-разъему;

/dev/ad5 — не используется;

/dev/ad6 — жесткий диск, подключенный ко второму SATA-разъему;

/dev/ad7 — не используется;

/dev/ad8 — жесткий диск, подключенный к третьему SATA-разъему;

/dev/ad9 — не используется;

 /dev/ad xN — файл устройства раздела (слайса) на ATA-винчестере x, N — здесь но-мер раздела;

 /dev/da N — файл жесткого диска с интерфейсом SCSI или флешка (USB-диск);

 /dev/da xN — файл устройства раздела (слайса) на SCSI-винчестере;

 /dev/cd0 — привод CD/DVD, подключенный к SCSI-контроллеру;

 /dev/acd0 — привод CD/DVD, подключенный к ATA-контроллеру;

 /dev/fd N — дисковод для гибких дисков;

 /dev/cuau N — файл последовательного порта, N — номер порта (cuau0 соответствует COM1, cuau1 — COM2 и т. д.);

 /dev/ulpt N — принтер, подключенный к USB-порту, N — номер принтера.

У начинающих пользователей чаще всего вызывает непонимание образование имен жестких дисков. Вернемся к временам, когда еще не было SATA-дисков, а использовались только диски PATA (тогда они назывались IDE или EIDE) и SCSI. SCSI-диски назывались /dev/da N, где N — номер диска, зависящий от порядка подключения диска к SCSI-контроллеру. С PATA-дисками все тоже не вызывало сомнений. В обычной системе имеется два PATA-контроллера (не больше и не меньше — всего два), к каждому контроллеру можно подключить не более двух дисков. То есть в системе может существовать до четырех PATA-дисков. Имена дисков жестко определены:

 /dev/ad0 — жесткий диск, подключенный как Primary Master;

 /dev/ad1 — жесткий диск, подключенный как Primary Slave;

 /dev/ad2 — жесткий диск, подключенный как Secondary Master;

 /dev/ad3 — жесткий диск, подключенный как Secondary Slave.

Но вот появились диски SATA. И тут же возник вопрос: к какому классу дисков их отнести? В Linux SATA-диски были зачислены в ранг SCSI и получили имена /dev/sd X, как настоящие SCSI-диски. Но, как ни крути, SATA — это не SCSI, поэтому в FreeBSD их отнесли к PATA-дискам, имена тоже позаимствовали у PATA. Поскольку первые четыре имени зарезервированы для двух контроллеров PATA, то жесткий диск, подключенный к первому SATA-контроллеру, стал называться ad4. Но к SATA-контроллеру можно подключить только один жесткий диск. И раз уж диски SATA стали именоваться по аналогии с PATA, то имя /dev/ad5 должно быть зарезервировано под Slave-диск контроллера. Однако такого диска в природе не существует, поэтому имя ad5 никогда не используется. Аналогично с именами ad6–ad9.

Вернемся к файлам устройств. Они бывают двух типов: блочные и символьные. Обмен информации с блочными устройствами, например с жесткими дисками, осуществляется блоками информации, а с символьными — отдельными символами. Пример символьного устройства — последовательный порт.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: