Старший и младший номера устройства записаны в индексном дескрипторе для данного файла устройства. (Индексные дескрипторы рассмотрены в разделе 14.4.) Каждый драйвер устройства регистрирует свою привязку к определенному старшему идентификационному номеру, и она обеспечивает соединение между специальным файлом устройства и его драйвером. Когда ядро отыскивает драйвер устройства, имя файла устройства не имеет значения.
В версии Linux 2.4 и более ранних общее количество устройств в системе ограничено тем обстоятельством, что старший и младший номера описаны восьмью битами. А тот факт, что старшие номера устройств фиксированы и выделяются централизованно (организацией Linux Assigned Names and Numbers Authority, см. www.lanana.org), еще сильнее усугубляет это ограничение. В версии Linux 2.6 это ограничение менее строгое за счет использования большего количества битов для хранения старшего и младшего идентификаторов устройств (12 и 20 бит соответственно).
Обычные файлы и каталоги располагаются, как правило, на жестких дисках. (Файлы и каталоги могут также храниться и на других устройствах, например на компакт-дисках, картах с флеш-памятью и на виртуальных дисках, но нас интересуют главным образом жесткие диски.) В следующих разделах вы увидите, каким образом диски организованы и разбиты на разделы.
Дисковод — это механическое устройство, состоящее из одной или нескольких пластин, которые вращаются с высокой скоростью (до нескольких тысяч оборотов в минуту). Информация, которая закодирована магнитным способом на поверхности диска, извлекается или изменяется с помощью головок чтения/записи, перемещающихся вдоль радиуса диска. Физически информация на поверхности диска размещена в виде набора концентрических кругов, называемых
И хотя современные диски работают быстро, на чтение и запись информации все так же требуется существенное время. Сначала головка диска должна переместиться к соответствующей дорожке (время поиска), а затем привод должен дождаться, пока необходимый сектор окажется под головкой (задержка из-за вращения) и требуемые блоки будут переданы (время передачи). Общее время, которое необходимо для выполнения подобной операции, обычно составляет несколько миллисекунд. Для сравнения: современные ЦПУ способны выполнить за это время миллионы инструкций.
Каждый диск имеет один или несколько (неперекрывающихся)
Системный администратор задает количество, тип и размеры разделов на диске с помощью команды fdisk. Команда fdisk — l выводит список всех разделов диска. В характерном для Linux файле /proc/partitions перечислены старшие и младшие номера устройств, размеры и названия всех дисковых разделов системы.
Дисковый раздел может содержать информацию любого типа, но обычно содержит что-либо из перечисленного ниже:
•
•
Область подкачки создается с помощью команды mkswap(8). Привилегированный (CAP_SYS_ADMIN) процесс может использовать системный вызов swapon() для уведомления ядра о том, что дисковый раздел следует задействовать в качестве области подкачки. Системный вызов swapoff() выполняет функцию преобразования, говоря ядру о том, чтобы оно прекратило использование дискового раздела в качестве области подкачки. Эти системные вызовы не регламентированы в стандарте SUSv3, но все же присутствуют во многих реализациях UNIX. Дополнительную информацию см. на страницах руководства swapon(2) и swapon(8).
Особый файл Linux /proc/swaps можно применять для отображения информации об областях подкачки, задействованных в данный момент в системе. В числе этой информации указан размер каждой области подкачки, а также использованной доли этой области.
Файловая система — это упорядоченный набор обычных файлов и каталогов. Файловая система создается с помощью команды mkfs.
Одной из сильных сторон Linux является возможность поддержки самых разных файловых систем, в число которых входят следующие:
• традиционная файловая система ext2;
• различные файловые UNIX-системы, например Minix, System V и BSD;
• файловые системы, разработанные корпорацией Microsoft: FAT, FAT32 и NTFS;