Linux Kernel (Ядро линукса) (часть 2)


Регистрация типа файловой системы

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

Каждая зарегистрированная файловая система представлена в виде объекта fiie system typeВсе объекты, представляющие типы файловых систем, объединены в однонаправленный список. Переменная file systems указывает на его первый элемент, а поле next описанной структуры указывает на следующий элемент списка. Спин-блокировка чтения/записи file_system_lock защищает список от попыток одновременного обращения.

Поле fs supers является головой (первым пустым элементом) списка суперблоков, соответствующих смонтированным файловым системам данного типа. Ссылки на соседние элементы списка хранятся в поле s instances суперблока.

Поле get sb указывает на специфичную для файловой системы функцию, которая создает новый объект-суперблок и инициализирует его (читая информацию с диска, если это необходимо). Поле kiii sb указывает на функцию, уничтожающую суперблок.

Поле fs fiags содержит некоторые флагиПри инициализации системы функция register_fiiesystem вызывается для каждой файловой системы, указанной на этапе компиляции. Эта функция заносит соответствующий объект fiie system type в список типов файловых систем.

Функция register fiiesystemo также вызывается при загрузке модуля, реализующего файловую систему. В этом случае регистрация файловой системы может быть аннулирована ВЫЗОВОМ функции unregister_filesystem, КОГДа модуль выгружается.

Функция get sb type , принимающая название файловой системы в качестве параметра, просматривает список зарегистрированных файловых систем, изучая поля name их дескрипторов, и возвращает указатель на соответствующий объект f iie system type, если таковой обнаруживается.

Предыдущая страница | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 | Следующая страница




Возможно, Вас также заинтересует:

ОС Knoppix - это Linux без про...

ВведениеЕсли вы цените свое время, умеете считать деньги и знаете стоимость информации, то эта книга...

Linux Kernel (Ядро линукса) (ч...

Спин-блокировкаСпин-блокировка необходима в многопроцессорной системе, потому что могут возникнуть...

Linux Kernel (Ядро линукса) (ч...

Копирование при записи В системах Unix первых поколений создание процесса было реализовано довольно...

Linux Kernel (Ядро линукса) (ч...

Буферы блоков и головы буферовУ каждого буфера есть дескриптор голова буфера, имеющий тип buffer...