Главная страница  Межпроцессное взаимодействие (состязание) 

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 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 [ 163 ] 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187

Файловая система имеет ту же основную структуру, что и менеджер памяти или задачи ввода/вывода. В ней есть главный цикл, ожидающий сообщений. Когда сообщение принято, определяется его тип, который затем используется как индекс в таблице указателей на функции, обрабатывающие различные системные вызовы. Затем найденная процедура вызывается, она выполняет свои действия и возвращает код завершения. Далее файловая система отправляет ответное сообщение процессу, сделавшему вызов, и возвращается в начало цикла ожидать следующее сообщение.

5.6.2. Структура файловой системы

Файловая система MINIX представляет собой самостоятельную логическую сущность с г-узлами, каталогами и блоками данных. Она может храниться на любом блочном устройстве, например на дискете или жестком диске (или разделе жесткого диска). В любом случае, файловая система имеет одну и ту же структуру. Рисунок 5.24 иллюстрирует эту структуру на примере дискеты объемом 360 Кбайт с размером блока 1 Кбайт и 128 г-узлами. У файловой системы большего объема или с другим числом г-узлов или с иным размером блока будут те же самые шесть частей, только, возможно, их относительные размеры будут другими.

Загрузочный Супеблок блок


-узлы

Один блок диска

Данные

Битовая карта 1-узлов

Битовая карта зон

Рис. 5.24. Структура диска в простейшем случае: дискета 360 Кбайт, 128 1-узлов, размер блока 1 Кбайт (то есть два подряд идущих сектора по 512 байт рассматриваются

как один блок)

Любая файловая система начинается с загрузочного блока. Этот блок содержит исполняемый код. При включении компьютера его аппаратное обеспечение считывает содержимое этого блока в память и исполняет его. Код в загрузочном блоке инициирует процесс загрузки самой операционной системы. После того как система загружена, загрузочный блок больше не используется. Для загрузки системы подходит не каждый дисковый накопитель, но ради единообразия структуры на каждом блочном устройстве резервируется загрузочный блок. Худшее, к чему может привести такая стратегия, - это потеря одного блока. Чтобы помешать аппаратному обеспечению пытаться загрузиться с устройства, не предназначенного для загрузки, в известное заранее место загрузочного блока записывается сигнатура ( магическое число ) в том и только том случае, если блок содержит исполняемый код. Аппаратура (а в действительности, код BIOS) отка-



жется загружаться с устройства, если загрузочный блок не имеет такой сигнатуры. Таким образом, случайный мусор не будет запущен как программа.

Суперблок содержит информацию, описывающую структуру (Ьайловой системы. Его строение показано на рис. 5.25.

Присутствуют и на диске, и в памяти

Есть в памяти, но отсутствуют на диске

- Максимальный размер файла

- Количество зон (V2)

Число узлов

Число зон {VI)

Число блоков битовой карты зон

Первая зона данных

Logj (блоков/зон)

Сигнатура

Заполнение

Указатель на корневой i-узел монтированной файловой системы

Указатель на i-узел, в который смонтирована система

1-узлов/блок

l-iOMep устройства

Флаг только чтение

Флаг направления битов в ФС

Версия ФС

Прямые зоны/1-узлы

Косвенные зоныЛ-узлы

Первый свободный бит в битовой карте i-узлов

Первый свободный бит в битовой карте зон

Рис. 5.25. Строение суперблока MiNIX

Его основное назначение - сообщить файловой системе, насколько ьелшл отдельные ее части. Зная размер блока и число г-узлов, несложно подсчитат! размер битовой карты г-узлов и количество блоков г-узлов. Например, если бло1 имеет размер 1 Кбайт, каждый блок битовой карты будет содержать 1 Кбай-(8 Кбит), то есть будет использован для отслеживания состояния 8192 г-узлог (Строго говоря, первый блок битовой карты описывает только 8191 г-узел, rai как 0-го г-узла нет, но бит в битовой карте для него все равно выделяется.) Есл\ всего имеется 10 ООО г-узлов, то потребуется два блока для хранения битовое



карты. Так как каждый г-узел занимает 64 байта, блок размером 1 Кбайт может содержать до 16 г-узлов. При наличии 128 используемых г-узлов для их хранения потребуется 8 дисковых блоков.

Позже мы подробно объясним различие между дисковыми блоками и зонами, сейчас же достаточно сказать, что место на диске может выделяться частями (зонами) из 1, 2, 4, 8 или, в общем случае, 2 блоков. Битовая карта зон отслеживает свободное пространство в зонах, а не в блоках. Для стандартных гибких дисков, используемых MINIX, размер зоны совпадает с размером блока (1 Кбайт), поэтому для таких устройств в первом приближении можно считать, что зона - это то же самое, что и блок. Пока мы позже в этой главе не приступим к обсуждению деталей выделения места, вы можете считать, что эти понятия эквивалентны.

Обратите внимание, что количество блоков в зоне не хранится в суперблоке, так как оно нигде не востребуется. Все, что нужно, - это логарифм по основанию два от этого числа, который используется как значение сдвига при преобразовании блоков в зоны, и наоборот. Например, если зона содержит 8 блоков, log28 = 3. То есть, чтобы найти зону, содержащую блок 128, нужно сдвинуть 128 на три бита вправо (получится зона 16).

Битовая карта зон содержит только зоны, занимаемые данными (то есть блоки, хранящие битовые карты и г-узлы, в нее не попадают), причем первая зона данных соответствует биту 1 в битовой карте. Как и в случае с картой г-узлов, нулевой бит не используется, а, значит, первый блок битовой карты описывает 8191 зон, а последующие - 8192 каждый. Если вы посмотрите на битовые карты только что отформатированного диска, вы увидите, что в обеих битовых картах, зон и г-узлов, установлено два бита. Первый из них соответствует несуществующей 0-й зоне или г-узлу. Второй соответствует г-узлу и зоне корневого каталога устройства, которая создается при создании файловой системы.

Информация, хранящаяся в суперблоке, избыточна, так как иногда она требуется в одной форме, а иногда в другой. Так как на размещение суперблока отводится 1 Кбайт места, имеет смысл хранить информацию во всех необходимых представлениях и не пересчитывать ее при работе. Например, номер первой зоны данных на диске можно вычислить, исходя из размера блока, размера зоны, числа г-узлов и числа зон, но быстрее просто хранить это значение в суперблоке. Оставшаяся часть суперблока все равно не используется, потому выделение в нем одного лишнего слова ничего не стоит.

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

Прежде чем файловая система MINIX сможет использовать диск, он должен быть приведен в соответствие структуре, показанной на рис. 5.24. Для построе-



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 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 [ 163 ] 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187

© 2000 - 2024 ULTRASONEX-AMFODENT.RU.
Копирование материалов разрешено исключительно при условии цититирования.