Файл: Левковиц, Д. Структуры информационных массивов оперативных систем.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 19.10.2024
Просмотров: 71
Скачиваний: 0
д о л ж н а быть изменена и обновление заканчивается пер вым этапом. Если это число рассматривается как логи ческая длина списка, т. е. как количество выбираемых записей, которые могут ответить на запрос, то длина списка к а ж д о г о ключа в записи уменьшается на едини цу. Второе определение более приемлемо д л я использо вания длины списка в качестве длины просмотра логиче ского запроса, в то время как первое более приемлемо
/ Занести бит уничтожения записи 2 Декодировать каждый ключ в записи и уменьшить
длину списка на единицу
Справочник
С
Рис. 8-3. Уничтожение полной записи.
д л я подсчета различных допоисковых статистик. Систе му можно организовать так, чтобы анализировать пока затели о количестве битов удаления и периодически в со ответствии с количеством таких битов файл преобразо вывался бы и удаленные записи исключались бы из си стемы.
Н а рис. 8-4 иллюстрируется удаление отдельных клю
чей внутри записи. Это |
т а к ж е |
одноили |
двухэтапный |
|||||
процесс. |
С н а ч а л а |
запись |
обнаруживается |
и |
заносится |
|||
в оперативную память . В бит |
удаления данного |
ключа |
||||||
должна быть записана |
единица. Н а рисунке показан спи |
|||||||
сок, который вначале с о д е р ж а л |
четыре записи |
с |
ключом |
|||||
X. Третья |
запись |
была |
удалена |
при занесении |
единицы |
|||
в бит удаления ключа. |
Поисковой системе |
будет |
доступ |
на к а ж д а я запись по очереди кроме третьей, в которой будет проанализирован бит удаления ключа, запись про
пущена и после этого будут |
произведены |
выборка |
и об |
||
работка четвертой записи. |
|
Д л и н а списка |
может |
быть |
|
уменьшена или сохранена |
в |
зависимости |
от |
использова- |
165
ния ее как у к а з а т е л я физической или логической |
длины |
||||
списка. |
|
|
|
|
|
В табл . 8-2 |
описаны добавление |
(удаление) |
и |
моди |
|
ф и к а ц и я |
неключевых данных. Н а первом этапе |
требуется |
|||
считать |
запись |
из З У П Д в память |
и изменить |
ее. Если |
/ Занести Sum уничтожения |
ключа |
|
||
Z Декодировать |
ключ по |
справочнику |
и |
|
соответственные |
длины |
списков на |
1 |
КлючХ/200/3
уменьшить
Справочник
~R5 |
Х/85] |
|
|
|
/85 |
|
оШоШі |
Рис. 8-4. Уничтожение ключей. |
|
измененная запись стала короче, то вся д о р о ж к а (или |
физическая запись) может быть переформирована и за
писана снова в З У П Д . В этом случае будет |
увеличена |
|
резервная область в конце дорожки . Если ж е |
запись |
уве- |
Т а б л и ц а |
8-2 |
Добавление/уничтожение/модификация неключевых данных
1.Считывание записи из ЗУПД в память. Изменение записи
2.Если запись укоротилась, то переформировать дорожку и запи сать ее в ЗУПД
3.Если запись удлинилась и
а) |
переформированная |
дорожка |
не переполняется, |
то занести |
||
|
ее |
в ЗУПД |
|
|
|
|
б) |
переформированная |
дорожка |
переполняется, |
то, |
уничтожив |
|
|
полную запись, добавить новую в соответствии с правилами |
|||||
|
добавления |
|
|
|
|
|
личивается в размерах, то |
н у ж н о различать |
два воз |
||||
можных |
случая. |
|
|
|
|
|
1. Если переформированная д о р о ж к а , |
включающая |
|||||
большую |
запись, не |
переполняется, она |
записывается |
|||
в З У П Д . |
|
|
|
|
||
166 |
|
|
|
|
|
|
2. Если переформированная д о р о ж к а превышает ее физическую длину, то полная запись уничтожается со гласно процедуре - удаления, описанной на рис. 8-3, а пол ная измененная запись добавляется к файлу в соответст вии с процедурой, описанной в табл . 8-1. Это означает, что запись будет появляться в файле д в а ж д ы — один раз в своей немодифицированной форме и другой раз в изме ненной форме, но в первом случае бит удаления записи
Случай(А) |
|
|
|
|
|
|
Резерв |
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
||
ДорожкаХ—> |
Kl |
яг |
|
/?.з |
\ |
К</ |
W/M |
IГ |
Д о |
1 |
||
|
\° |
I \модшрикациу\ |
||||||||||
|
|
• |
|
|
I Г |
Лрсле. |
] |
|||||
ДорожкаX—*• |
К |
|
0 |
КЗ/модифи |
|
|
||||||
|
цированная) |
|
m |
I [модификации} |
||||||||
Случай (В) |
|
|
|
|
|
|
|
|
|Г |
|
|
|
ДорожкаХ—»• |
КІ |
Я2 |
0 |
КЗ |
I « |
|
|
До |
1 |
|||
ш |
ш |
I [модификации] |
||||||||||
|
||||||||||||
Дорожка/—* |
m |
KZ |
11 |
КЗ |
|
|
|
|
|
|
|
|
|
|
/ |
КѴ^Шмодифи\- |
|
|
|
|
После |
|
|||
|
|
|
|
|
нодиірикации |
|
||||||
Дорожка Y- |
|
|
|
|
|
|
|
|||||
|
цироВанная) |
|
|
|
|
|
|
|||||
Рис. |
8-5. |
Модификация |
неключевых |
данных. |
|
будет равен единице, так что поисковая программа будет пропускать эту запись при любом просмотре списка. К а к указывалось выше, те записи, для которых бит удаления
записи равен |
единице, у д а л я ю т с я из |
ф а й л а во время пе |
||||
риодического |
преобразования |
файлов . |
|
|||
|
На рис. 8-5 иллюстрируется изменение неключевых |
|||||
данных. В к а ж д о м |
из двух случаев показано, что |
дорож |
||||
ка |
содержит |
по |
четыре записи, обозначенных |
Ri—Ri- |
||
В первом случае запись R3 увеличивается в размерах, но |
||||||
не |
переполняет |
начальную |
длину |
дорожки, |
поэтому |
единственное различие м е ж д у состояниями дорожки до и после изменения состоит в том, что запись R3 стала боль
ше, |
а |
резервная |
область — меньше. Во |
втором случае |
||
предполагается, |
что запись R3 изменена таким |
образом, |
||||
что |
переформированная д о р о ж к а превысит |
ее |
физиче |
|||
скую длину, поэтому бит удаления записи R3 |
становится |
|||||
равным |
единице |
на начальной д о р о ж к е |
X, |
а запись Rz |
167
вновь добавляется к а к |
совершенно |
новая запись на дру |
|||
гую д о р о ж к у У в конце |
файла . Здесь предполагается, что |
||||
она |
становится |
второй |
логической |
записью |
на дорож |
ке |
У. |
|
|
|
|
|
Этот метод |
может |
быть легко |
з а п р о г р а м м и р о в а н и |
|
I хорош тем, что |
оставляет записи |
физически |
нетронуты |
ми. При этом увеличивается эффективность поиска, хотя
остаются области неиспользуемых |
пространств в памяти . |
||
В этой главе т а к ж е будет описана |
методика |
использова |
|
ния этих пространств. Имеется, |
однако, и другой способ |
||
размещения полной записи при |
подобных |
обновлениях. |
Он состоит в формировании дополнительной записи, ко торая логически продолжает увеличиваемую запись по произвольным адресам, обычно в резервной области.
Т а б л и ц а 8-3
Добавление ключей
1.Считывание записи из ЗУПД по адресу ДА в память и добав ление ключей
2.Декодирование ключа /' по справочнику
3.Передача начального адреса списка ключа і из справочника в поле адреса связи ключа в модифицированной записи
4.Адрес ДА становится новым начальным адресом ключа і по справочнику
5. Уведичение длины списка ключа і в справочнике на единицу
6.Повторение пп. 2—5 для всех добавляемых ключей
7.Запомнить модифицированную запись в соответствии с проце дурой изменения неклгачевых данных
В табл . |
8-3 описывается процесс добавления |
ключей |
||
в запись в |
реальном м а с ш т а б е времени. П е р в ы й |
этап — |
||
чтение |
записи из З У П Д в оперативную |
память и |
добав |
|
ление |
необходимых ключей к записи. |
Второй — декоди |
рование по справочнику 1-го ключа, который был добав лен к записи. Третий — передача начального адреса і-го ключа из справочника в область адреса связи ключа в из меняемой записи. Четвертый — помещение адреса новой записи в качестве начального адреса t-го ключа в спра-
168
вочнике. Наконец, длина списка і-го |
ключа |
увеличивает |
ся на единицу. Этапы со второго по |
пятый |
повторяются |
для всех ключей, которые были добавлены к записи. Сле дует признать, что эта процедура идентична процедуре, описанной в табл . 8-1 д л я добавления полной записи, где всякий ключ представляет собой новый ключ, добавляе мый к записи, поэтому рис. 8-2 является т а к ж е иллю страцией и этого процесса. После того как соответствую
щие изменения справочника были сделаны |
в |
соответст |
вии с этапами с первого по пятый запись |
д о л ж н а быть |
|
вновь помещена в файл З У П Д . Однако после |
добавле |
|
ния новых данных к записи переформированная |
д о р о ж к а |
|
может снова переполниться, поэтому т а к а я |
ж е |
процеду |
ра, которая применялась к модификации |
неключевых |
|
данных на втором и третьем этапах табл . |
8-2, д о л ж н а |
быть применена к восстанавливаемым данным . Это озна чает, что запись может быть удалена и помещена в ф а й л
на другую д о р о ж к у |
в зависимости от количества добав |
||
ляемых ключей и |
количества резервного пространства, |
||
имеющегося |
в конце дорожки . |
|
|
8-2. ОПЕРАТИВНОЕ ОБНОВЛЕНИЕ СПИСКОВ |
|||
С ИНВЕРТИРОВАННОЙ СТРУКТУРОЙ |
|||
В т а б л . 8-4 |
иллюстрируется процедура |
добавления пол |
|
ной записи |
в систему инвертированных |
списков. К а к и |
в случае мультисписков, на первом этапе запись редакти-
Т а б л и ц а 8-4 Добавление полной записи (инвертированный список)
1.Редактирование записи для входа в файл
2.Присвоение адреса ДА к новой записи
3.Декодирование і-го ключа по справочнику инвертированного списка переменной длины
4.Добавление ДА в список. Если резервная область^ исчерпана, добавить дополнительный блок записи и вставить адрес связи в качестве последнего слова предыдущей записи
5.Увеличение длины списка на единицу
6. Повторение пп. 3—5 для всех ключей новой записи
7. Запоминание новой записи в ЗУПД по адресу ДА
169