• Наркологическая клиника и наркологические клиники в Москве

    Наркологические клиники центры Москвы. Наркологическая клиника и наркологические клиники в Москве.

    www.alcoclinic.ru





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


Структуры Ext2 на диске

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

Группы блоков уменьшают фрагментацию файлов, поскольку ядро стремится хранить блоки данных файла в одной группе блоков файловой системы, если это возможно. Каждый блок в группе содержит один из следующих элементов информации:
- копию суперблока файловой системы;
- копию дескрипторов групп блоков
- битовую карту блоков данных;
- битовую карту индексных дескрипторов;
- таблицу индексных дескрипторов;
- данные файлов, т. е. блоки данных.

Если блок не содержит осмысленную информацию, говорят, что он свободен.

суперблок и дескрипторы групп дублируются в каждой группе блоков. Только суперблок и дескрипторы групп, включенные в
группу блоков 0, используются ядром, а остальные суперблоки и дескрипторы остаются неизмененными. Более того, ядро их даже не просматривает. Когда программа e2fsck проверяет непротиворечивость состояния файловой системы, она читает суперблок и дескрипторы групп, хранящиеся в группе блоков 0, и копирует их во все другие группы блоков. Если произойдет порча данных, и главный суперблок или главные дескрипторы групп в группе блоков 0 станут некорректными, системный администратор может проинструктировать программу e2fsck, чтобы она читала старые копии суперблока и дескрипторов групп, хранящиеся в других группах блоков. Обычно эти избыточные копии содержат достаточно информации, чтобы позволить e2fsck привести раздел Ext2 в корректное состояние.

Сколько существует групп блоков? Это зависит как от размера раздела, так и от размера блока. Основное ограничение заключается в том, что битовая карта блоков, применяемая для идентификации свободных и занятых блоков внутри группы, должна храниться в одном блоке. Следовательно, в каждой группе блоков может быть максимум 8xb блоков, где b — размер блока в байтах. Тогда общее количество групп блоков примерно равно s/($xb), где s — размер раздела в блоках.

В качестве примера рассмотрим 32-гигабайтный раздел Ext2 с размером блока 4 Кбайт. В этом случае каждая битовая карта в 4 Кбайт описывает 32 Кбайт блоков данных, т. е. 128 Мбайт. Следовательно, необходимо 256 групп блоков. Ясно, что, чем меньше размер блока, тем больше групп блоков.

Предыдущая страница | 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 | Следующая страница




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

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

ВведениеЕсли вы цените свое время, умеете считать деньги и знаете стоимость информации, то эта книга для вас. А так как к книге прилагается компакт- диск с готовой к работе операционной системой Knoppix Live CD, то лишь достаточно вставить его в привод и перегрузить компьютер,...

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

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

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

Копирование при записи В системах Unix первых поколений создание процесса было реализовано довольно неуклюже: получив системный вызов fork о, ядро в буквальном смысле дублировало все адресное пространство родителя и присваивало копию процессу-потомку. Такая операция...

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

Буферы блоков и головы буферовУ каждого буфера есть дескриптор голова буфера, имеющий тип buffer head. Этот дескриптор содержит всю информацию, необходимую ядру для работы с блоком, так что перед обработкой блока ядро обязательно проверяет голову...