Структура i –note.
Методы выделения дискового пространства.
Подходы:
1) пространство на диске выделяется непрерывной последовательностью блоков
Преимущества: для определения, какие блоки принадлежат файлу, достаточно записать адрес первого блока и размер файла, что сохраняется в директории. Адрес первого блока – ссылка на данные. Повышается производительность. Однако, когда в результате удаления файлов остается свободная область памяти и в нее записывается новый файл, может остаться несколько свободных блоков, размер которых недостаточен для записи какого-либо файла – т.е. происходит фрагментация. Если мы неправильно указали размер файла, то такой файл использоваться не может, и поэтому файл неизменяем.
Выход: разрешить дописывать к фалу непрерывные блоки. Для каждой области в директории указывается свое распределение. Фрагментация при этом усиливается..
2) выделение памяти кусками, наименьший из которых – блок.
Должны быть запомнены адреса всех блоков данного файла.
А) создание связанных файлов (в реальности не существует)
имя | … | Адрес первого блока |
Данные + указатель |
В последнем блоке нет указателя.
Ссылка = адрес первого блока
Недостатки: обращение к блокам – только последовательно, ненадежная система – ссылка теряется при возникновении сбойного блока, увеличивается размер блока, он становится некратным 2.
Б) связанный список с использованием индекса
Информация о положении блоков хранится во вспомогательной индексной таблице – File Allocation Table (FAT) .
… |
Количество ячеек – по количеству дисковых блоков. Во второй ячейке – адрес следующего дискового блока. Вместо адреса для пустого файла записывается специальный код. (Используется MS-DOS, Windows).
Проблема – может быть потеряна индексная таблица. Кроме того, индексная таблица должна практически полностью размещаться в памяти.
В) для хранения информации в системе организуется специальная структура данных – индексный узел ( i -note). Для каждого файла организуется свой i –note. Все i –note объединяются в таблицу. В директории указывается номер индексного узла (№ строки в таблице). Ссылки – номер i –note.
Индексный узел может иметь фиксированный размер, но должен хранить информацию о всех блоках файла.
вместо адреса непосредственно блока с данными может храниться адрес, указывающий остальные ссылки на блоки с данными – косвенная адресация.
- м.б. использована двойная косвенная адресация
адрес -> адрес блоков -> блок с данными
- тройная косвенная адресация
Пр-р: адрес – 32 бита (4 байта), размер логического блока – 1 Кб (1024 бита). Какое адресное пространство можно адресовать с помощью 34-байтного индексного узла?
Прямая адресация – 10Кб.
Косвенная – 1024/4= 256 адресов с блоками данных – 256 КБ
Двойная косвенная – 256*256=64МБ
Тройная косвенная – 10 ГБ.
Ни один процесс не хранит информации о блоках файла. Чтение/запись на диск производит файловая система: преобразует текущую позицию в адрес блока и смещение от начала блока. Упрощается таблица размещения файлов..
Таблица размещения файлов – узнать, куда входит текущее смещение по таблице открытых файлов, поделив смещение на размер блока, смещение внутри блока – остаток от деления.
Индексная таблица.
Пр-р:
Размер логического блока 1024
Тек позиция 90000
9000-1024*8=808 – смещение внутри 9-ого блока
350000 – очевидно, не прямая адресация
10=1054002565 байт
1=256Кб=262144Б
272384 б.
350000-272304=77616
каждый блок прямой адресации – 1024
77161/1024=75
т.е. 76 блок адресации
76616-75*1024=816
Лекция 10.
Ни один процесс не хранит информации о блоках файла. Чтение/запись на диск производит файловая система: преобразует текущую позицию в адрес блока и смещение от начала блока. Упрощается таблица размещения файлов..
Таблица размещения файлов – узнать, куда входит текущее смещение по таблице открытых файлов, поделив смещение на размер блока, смещение внутри блока – остаток от деления.
Индексная таблица.
Пр-р:
Размер логического блока 1024
Тек позиция 90000
9000-1024*8=808 – смещение внутри 9-ого блока
350000 – очевидно, не прямая адресация
10=1054002565 байт
1=256Кб=262144Б
272384 б.
350000-272304=77616
каждый блок прямой адресации – 1024
77161/1024=75
т.е. 76 блок адресации
76616-75*1024=816