Файл: Левковиц, Д. Структуры информационных массивов оперативных систем.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 19.10.2024
Просмотров: 68
Скачиваний: 0
руется для занесения в файл в оперативной памяти . За
тем новой |
записи присваивается |
адрес З У П Д ДА . Третий |
|||||
этап — это |
декодирование і-го ключа в справочнике для |
||||||
получения |
доступа к соответствующему |
инвертированно |
|||||
му списку |
переменной длины. Новый адрес д о л ж е н |
быть |
|||||
вставлен в |
список. Если вставка этого адреса |
вызывает |
|||||
переполнение |
отводимого блока |
памяти, как |
показано |
||||
на рис. 7-9 |
на примере первой записи переменной длины |
||||||
д л я ключа |
У, |
то присоединяется |
другой |
блок, |
а |
адрес |
|
связи вставляется в последнее слово |
первого блока для |
||||||
их соединения. П е р в а я запись списка, |
которая |
содержит |
тройку имя ключа/адрес по цепочке/ длина списка, изме
няется, |
увеличивая |
длину |
списка на |
единицу. |
Этапы |
|||
с третьего по |
пятый |
в табл . |
8-4 д о л ж н ы |
быть повторены |
||||
д л я всех |
ключей в новой записи. Наконец, |
новая |
запись |
|||||
запоминается |
в З У П Д по |
адресу ДА . |
|
|
|
|||
|
|
|
|
|
|
|
Т а б л и ц а 8-5 |
|
Удаление |
полной записи |
(инвертированный |
список) |
Метод первый
1.Занести бит уничтожения записи
2.Декодировать каждый ключ в записи и уменьшить длину его списка на единицу (необязательно)
Метод второй
1.Занести бит уничтожения записи
2.Декодировать каждый ключ по справочнику, изменить адреса записи ДА в соответственных инвертированных списках н уменьшить длину списка на единицу
Втабл . 8-5 представлены два метода удаления полной записи. Первый метод идентичен соответствующему ме тоду в мультисписковых системах, но так как процесс
нахождения предыдущих записей по спискам ключей
в инвертированных системах может быть проведен бы |
|
стрее, разработчик может выбрать второй метод, т. е. |
|
логическое и физическое удаление записи из всех ключе |
|
вых списков. Это производится сначала занесением в бит |
|
удаления записи единицы, а затем переадресацией запи |
|
си в к а ж д о м из ключевых |
списков, в которых она появ |
ляется, переформированием |
ключевых списков и занесе |
нием их в З У П Д . Д л и н ы списков уменьшаются на |
едини |
цу, так как эти записи никогда не потребуются |
физиче |
ски. |
|
170
Т а б л и ц а 8-6 Удаление ключей (инвертированный список)
1.Декодировать і-н ключ по справочнику инвертированного списка
переменной длины
2. Изменить адреса ДА в записях, |
в которых і-іл ключ должен |
быть удален из инвертированного |
списка, переформировать до |
рожку и вновь занести запись на |
диск |
3. Повторить пп. 1 и 2 для всех удаляемых из записи ключей
4.Если в файле записей имеются ключи, „достать" запись и уда лить их
В табл . 8-6 представлена процедура обновления д л я удаления ключей, подобная процедуре добавления клю чей, за исключением того, что переменная длина инвер тированного списка, из которого данный ключ д о л ж е н быть вычеркнут, всегда уменьшается и поэтому перефор мированный список может быть записан на ту ж е самую д о р о ж к у З У П Д (см. второй этап процедуры у д а л е н и я ) . Первый и второй этапы повторяются д л я всех ключей,
которые д о л ж н ы быть вычеркнуты из записи. Если |
в за |
писи ф а й л а присутствует ключ, то запись д о л ж н а |
быть |
выбрана и ключ внутри записи уничтожен. З а м е т и м , что наличие бита удаления ключа в системе инвертирован ных списков не требуется, так как связи в области ф а й л а отсутствуют и поэтому удаление ключа из записи не раз рушает непрерывности списка. Адрес записи физически
уничтожается |
в |
инвертированном |
ключевом списке на |
|||
втором |
этапе. |
В |
системах, в которых отсутствуют ключи |
|||
внутри |
ф а й л а |
записей, четвертый |
этап |
не |
обязателен . |
|
Обновление неключевых данных в инвертированных |
||||||
списковых системах идентично такому |
ж е |
обновлению |
в мультисписковых системах, поскольку они не включа ются ни в какие ключевые списки. Мультисписковые и ! инвертированные списковые системы различаются только организацией ключевых списков.
В табл . 8-7 описывается в общих чертах процедура добавления ключей к инвертированной списковой систе
ме. Эта процедура очень похожа на |
процесс добавления |
||||||
новой |
записи, за исключением того, |
что при добавлении |
|||||
новой |
записи |
д о л ж н ы |
быть обновлены |
ключевые списки. |
|||
Единственная |
разница |
состоит |
в том, |
что новые |
ключи |
||
д о л ж н ы быть |
т а к ж е добавлены |
к записи в области |
фай- |
171
Т а б л и ц а 8-7 Давление ключей (инвертированный список)
1. Декодировать і-іі ключ по справочнику инвертированного спи ска переменной длины
2.Вставить в список адрес записи ДА, в которой ключ должен быть добавлен
3.Увеличить длину списка на единицу
4.Повторить пп. J—3 для всех добавляемых ключей
5. Прочесть запись по адресу ДА и добавить к ней новые ключи
6.Вновь занести на диск модифицированную запись в соответст вии с процедурой модификации неключевых данных
ла, если ключи присутствуют внутри записи. Тогда за
пись |
д о л ж н а быть |
вновь внесена |
в память в область фай |
ла в |
соответствии |
с процедурой |
обновления неключевых |
данных, так как добавление новых ключей может увели чить запись до таких размеров, что она не поместится вновь на соответствующей дорожке .
Если объем обновлений значительно больше о б ъ е м а выборки, в качестве одного из способов для инвертиро ванных систем может быть рекомендован следующий способ, который сильно увеличивает эффективность об новления за счет эффективности выборки. Вместо адре сов запоминаются номера записей, добавляемых в инвер
тированные списки, так что, когда файл |
перемещается, |
|
ни один из ключей списка |
не д о л ж е н модифицироваться . |
|
Единственная необходимая |
модификация |
при этом — де |
кодирование номеров новых записей. Однако процесс вы борки становится значительно менее эффективным . Де кодируемый список новых записей после логических пре образований по ключам будет состоять из последова тельности дополняемых номеров, к а ж д ы й из которых за тем д о л ж е н быть преобразован в адрес. Результирующий список адресов, вообще говоря, не будет расположен по порядку. Если необходимо использовать стратегию муль-
тизапроса, как показано в табл . 8-3, |
или если ж е л а т е л ь |
но получить равномерное движение |
головки доступа при |
выборке из запоминающего устройства, то список деко дируемых адресов следует отсортировать.
172
8-3. ОПЕРАТИВНОЕ ОБНОВЛЕНИЕ СЕКТОРОВ
Если указатели ф а й л а в справочнике обозначают секто ра (или по крайне мере списки внутри секторов) в систе мах с секторным разбиением, любое обновление спра вочника требуется только при перемещении записи за
пределы |
сектора. |
В случае, когда новый ключ добавляет |
|
ся в сектор млн ключ убирается из сектора, |
т а к ж е необ |
||
ходимо |
обновлять |
справочник. Обновление |
справочника |
может быть минимизировано резервированием достаточ ного пространства в конце сектора или распределением его по секторам, так чтобы большинство записей, пере мещенных или добавленных в случае расширения, раз мещалось внутри сектора.
8-4. ИСПОЛЬЗОВАНИЕ СВОБОДНОГО МЕСТА ПАМЯТИ
Все процедуры обновления, описанные в этой главе, ис пользующие бит удаления и перемещения записи, остав ляют в блоке полностью или частично неиспользуемое пространство памяти . В случае однонаправленных мультисписковых систем имеется некоторая возможность ис пользования этого пространства, поскольку связи через логически уничтоженную запись остаются нетронутыми. В двунаправленных системах мультисписков и инверти рованных списков все пространство может быть вновь использовано. При этом необходимо, конечно, учитывать, что со временем все з а р а н е е зарезервированное простран ство может быть израсходовано . Имеются два основных способа восстановления этого пространства в качестве резерва . П е р в ы й — во время оперативного обслуживания периодически полностью восстанавливать файл внутри сектора согласно процедурам на рис, 7-7 или 7-8. Это самый легкий способ, если его можно применить. В ос новном эта процедура пригодна д л я системы, в которой обновления не слишком динамичны, а стоимость полного
восстановления ф а й л а |
с |
требуемой 'периодичностью |
не |
|
слишком высока. |
|
|
|
|
Д р у г о й |
метод состоит |
в том, что во время обслужива |
||
ния ф а й л а |
в реальном |
м а с ш т а б е времени собираются |
по |
порядку зоны свободного пространства памяти либо ло
гически, либо физически. П р и |
логическом |
формировании |
|
обычно используется список |
имеющегося |
пространства, |
|
в который заносятся адреса и длины записей для |
к а ж д о |
||
го ил»егощегося блока. М о ж н о |
т а к ж е использовать |
после- |
1 73