Структура 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