Пользователи 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.
Вернемся к файлам устройств. Они бывают двух типов: блочные и символьные. Обмен информации с блочными устройствами, например с жесткими дисками, осуществляется блоками информации, а с символьными — отдельными символами. Пример символьного устройства — последовательный порт.