Старший и младший номера устройства записаны в индексном дескрипторе для данного файла устройства. (Индексные дескрипторы рассмотрены в разделе 14.4.) Каждый драйвер устройства регистрирует свою привязку к определенному старшему идентификационному номеру, и она обеспечивает соединение между специальным файлом устройства и его драйвером. Когда ядро отыскивает драйвер устройства, имя файла устройства не имеет значения.

В версии Linux 2.4 и более ранних общее количество устройств в системе ограничено тем обстоятельством, что старший и младший номера описаны восьмью битами. А тот факт, что старшие номера устройств фиксированы и выделяются централизованно (организацией Linux Assigned Names and Numbers Authority, см. www.lanana.org), еще сильнее усугубляет это ограничение. В версии Linux 2.6 это ограничение менее строгое за счет использования большего количества битов для хранения старшего и младшего идентификаторов устройств (12 и 20 бит соответственно).

14.2. Диски и разделы

Обычные файлы и каталоги располагаются, как правило, на жестких дисках. (Файлы и каталоги могут также храниться и на других устройствах, например на компакт-дисках, картах с флеш-памятью и на виртуальных дисках, но нас интересуют главным образом жесткие диски.) В следующих разделах вы увидите, каким образом диски организованы и разбиты на разделы.

Дисководы

Дисковод — это механическое устройство, состоящее из одной или нескольких пластин, которые вращаются с высокой скоростью (до нескольких тысяч оборотов в минуту). Информация, которая закодирована магнитным способом на поверхности диска, извлекается или изменяется с помощью головок чтения/записи, перемещающихся вдоль радиуса диска. Физически информация на поверхности диска размещена в виде набора концентрических кругов, называемых дорожками. Дорожки, в свою очередь, разделены на секторы, каждый из которых состоит из последовательности физических блоков. Размер физического блока обычно равен 512 байтам (или кратному значению) и представляет собой наименьший блок информации, который привод способен прочитать или записать.

И хотя современные диски работают быстро, на чтение и запись информации все так же требуется существенное время. Сначала головка диска должна переместиться к соответствующей дорожке (время поиска), а затем привод должен дождаться, пока необходимый сектор окажется под головкой (задержка из-за вращения) и требуемые блоки будут переданы (время передачи). Общее время, которое необходимо для выполнения подобной операции, обычно составляет несколько миллисекунд. Для сравнения: современные ЦПУ способны выполнить за это время миллионы инструкций.

Разделы диска

Каждый диск имеет один или несколько (неперекрывающихся) разделов. Каждый раздел воспринимается ядром как отдельное устройство, расположенное в каталоге /dev.

Системный администратор задает количество, тип и размеры разделов на диске с помощью команды fdisk. Команда fdisk — l выводит список всех разделов диска. В характерном для Linux файле /proc/partitions перечислены старшие и младшие номера устройств, размеры и названия всех дисковых разделов системы.

Дисковый раздел может содержать информацию любого типа, но обычно содержит что-либо из перечисленного ниже:

• файловую систему, которая упорядочивает файлы и каталоги, как описано в разделе 14.3;

область данных, которая доступна в качестве устройства с прямой пересылкой данных, как описано в разделе 13.6 (эту технологию используют некоторые системы управления базами данных);

• область подкачки, которая применяется ядром для управления памятью.

Область подкачки создается с помощью команды mkswap(8). Привилегированный (CAP_SYS_ADMIN) процесс может использовать системный вызов swapon() для уведомления ядра о том, что дисковый раздел следует задействовать в качестве области подкачки. Системный вызов swapoff() выполняет функцию преобразования, говоря ядру о том, чтобы оно прекратило использование дискового раздела в качестве области подкачки. Эти системные вызовы не регламентированы в стандарте SUSv3, но все же присутствуют во многих реализациях UNIX. Дополнительную информацию см. на страницах руководства swapon(2) и swapon(8).

Особый файл Linux /proc/swaps можно применять для отображения информации об областях подкачки, задействованных в данный момент в системе. В числе этой информации указан размер каждой области подкачки, а также использованной доли этой области.

14.3. Файловые системы

Файловая система — это упорядоченный набор обычных файлов и каталогов. Файловая система создается с помощью команды mkfs.

Одной из сильных сторон Linux является возможность поддержки самых разных файловых систем, в число которых входят следующие:

• традиционная файловая система ext2;

• различные файловые UNIX-системы, например Minix, System V и BSD;

• файловые системы, разработанные корпорацией Microsoft: FAT, FAT32 и NTFS;

Перейти на страницу:

Похожие книги