ВУЗ:
Составители:
130
Отметим, что нет необходимости декларировать размер файла в момент
создания и, поэтому, файл может неограниченно расти. Связное выделе-
ние имеет несколько существенных недостатков:
при прямом доступе к файлу для поиска i-го блока нужно осу-
ществить несколько обращений к диску, последовательно считывая бло-
ки от 1 до i – 1, то есть выборка логически смежных записей, которые
занимают физически несмежные секторы, может требовать много вре-
мени;
прямым следствием этого является низкая надежность – нали-
чие дефектного блока в списке приводит к потере информации в оста-
точной части файла и, потенциально, к потере дискового пространства
отведенного под этот файл;
для указателя на следующий блок внутри блока нужно выделить
место размером, традиционно определяемым степенью двойки (многие
программы читают и записывают блоками по степеням двойки), кото-
рый перестает быть таковым, так как указатель отбирает несколько бай-
тов.
В связи с вышеизложенным, метод связного списка обычно не ис-
пользуется в чистом виде.
Распределение связным списком с использованием индекса.
Недостатки предыдущего способа могут быть устранены путем изъятия
указателя из каждого дискового блока и помещения его в индексную
таблицу в памяти, которая называется таблицей размещения файлов
(англ. file allocation table – FAT). Этой схемы придерживаются многие
ОС (MS-DOS, OS/2, MS Windows и др.).
По-прежнему существенно, что запись в директории содержит
только ссылку на первый блок. Далее при помощи таблицы FAT можно
локализовать блоки файла независимо от его размера (значение равно
адресу следующего блока этого файла). В тех строках таблицы, которые
соответствуют последним блокам файлов, обычно записывается некото-
рое граничное значение, например EOF (рис. 40).
Номер
блоков
диска
1
0
2
10
3
11
Начало файла F2
4
0
5
EOF
6
2
Начало файла F1
7
EOF
8
0
9
0
10
7
11
5
Рисунок 40 – Способ выделения памяти с использованием связного списка в
ОП
Страницы
- « первая
- ‹ предыдущая
- …
- 128
- 129
- 130
- 131
- 132
- …
- следующая ›
- последняя »
