Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги из ГПНТБ / Левковиц, Д. Структуры информационных массивов оперативных систем

.pdf
Скачиваний:
3
Добавлен:
21.10.2023
Размер:
8.9 Mб
Скачать

ГЛАВА

ВОСЬМАЯ

О Б Н О В Л Е Н И Е И О Б С Л У Ж И В А Н И Е

ОПЕРАТИВНОГО

ФАЙЛА

Оперативное обновление

файлов

в реальном масштабе

времени необходимо в случае, когда обоновленные дан­ ные д о л ж н ы быть использованы через очень короткое время после возникновения. Сравнительные оценки стои­ мости оперативного и пакетного методов обновления за­ висят от оценки стоимостей З У П Д , терминалов и мат­ обеспечения. Поэтому если подсчет стоимости ма­

тобеспечения и

оборудования

не

позволит

провести

надежное сравнение стоимостей,

то способ

обновле­

ния выбирается в зависимости от временных

критериев.

Например, если

оборудование

снабжается матобеспече­

нием и оценивается в строгой зависимости от скорости,

типа емкости памяти

(т. е. классифицируется по

типу

il емкости

оперативной

п а м я т и ) , то сравнение двух

видов

обновлений

по стоимости можно считать надежным .

Трудность стоимостного сравнения возникает, когда пы­

таются выделить

стоимость тех технических средств, ко­

торые

участвуют

в функциях

обновления. Однако те же

З У П Д

и те ж е терминальные

устройства участвуют в реа-

_ лизации других функций, например функций выборки. Стоимость создания и внедрения матобеспечения выше стоимости технических средств и может быть подсчита­ на. В зависимости от типа оборудования единичное об­ новление можно выполнить за время от нескольких де­ сятков до сотен миллисекунд работы процессора. Это время Ср,- является постоянным, независимым от коли­

чества

обновлений. П а к е

т н а я система, однако, имеет не­

большое дополнительное

время СРь,~которое

затрачива­

ется

в

основном на запись файла на магнитную ленту.

Д о

тех

пор,

пока выполнение обновлений лимитируется

операциями

с магнитной лентой, стоимость

обновления

не зависит от размеров пакета. Однако процессу обнов­

ления на ленте всегда предшествует

сортировка

новых

записей при их внесении в файл, а временное

выражение

стоимости этого

процесса

является

функцией

объема

новых записей.

Обозначим

значение

такой

стоимости

CS(b). Тогда мы сможем провести сравнение между еди­

ницами стоимости (на

одно изменение) д л я

оператив­

ного С,- и пакетного обновлений

Сь так:

 

Cr =

- i r +

tfCpr;

(8-1)

160

 

П

Wb Т

^РЬ <-s [Ь>

/о о\

 

Сь —

 

ді

,

{й-2)

где

Сfr и С — постоянные

части,

отнесенные

ко време­

ни

накопления пакета

из N записей, приходящиеся на

долю технических средств

и математического

обеспече­

ния. Очевидно, что эти оценки очень приблизительны. Эта глава будет посвящена технике построения файлов, предназначенных д л я обновления в реальном м а с ш т а б е времени. Оперативные обновления могут быть разделены на пять категорий: 1 ) добавление полной записи; 2) удаление полной записи; 3) стирание ключей; 4) до­

бавление (стирание), модификация неключевых

данных;

5) добавление

ключей.

 

Р а з р а б о т ч и к

структур файлов с оперативными

обнов­

лениями в реальном м а с ш т а б е времени д о л ж е н учиты­ вать д в е особенности этого процесса. П е р в а я — обновле­ ние справочника и (или) исправление списковых ука­ зателей, в который входят ключи. Это свойственно всем вышеназванным категориям, кроме п. 4. Вторая осо­ бенность — это перемещение записи, связанное с увели­ чением ее р а з м е р а при обновлении, и последующее ис­ пользование занимаемого ею пространства. Это харак ­

терно д л я

категорий пп. 4 и

5.

Процедуры обновлений

с учетом

этих двух

особенностей

д л я последовательного

и инвертированного

списков

различны . В н а ч а л е будет

описана методика обновления последовательного списка,

затем

инвертированного и, наконец, секторного. В к а ж ­

дом случае рассматриваются все пять категорий.

 

8-1. ОПЕРАТИВНЫЕ ОБНОВЛЕНИЯ

 

МУЛЬТИСПИСКОВЫХ ФАЙЛОВ

Д а л е е

предположим, что категория обновлений известна

из запроса и что спецификации, имеющиеся в запросе, идентифицируют запись или класс записей, которые дол­ жны быть обновлены. Д л я того чтобы повысить эффек ­ тивность обновлений без использования кольцевой струк­

туры, в запись

вводятся некоторые у п р а в л я ю щ и е

д а н н ы е

(рис. 8 - 1 ) . В

начале записи в фиксированной

позиции

располагается один бит, н а з ы в а е м ы й «битом стирания записей». Значение бита, равное нулю, означает, что за­

пись находится в файле; если

ж е

этот бит

равен

едини­

це, то в процессе поиска запись

д о л ж н а

пропускаться

с переходом к следующему

адресу связи,

т а к

как эта

11—88

161

з а п и сь

логически, хотя

и не физически, удалена из

фай­

ла . К р

о м е того, имеется

бит, связанный с к а ж д о й

парой

ключ/адрес связи поля, называемый «битом удаления ключа», который в положении нуль означает, что ключ

находится

в

записи,

а в

положении

единица

означает,

что ключ

был

удален

из

записи. П а р а

ключ/адрес

связи

не может быть вычеркнута из записи,

потому

что

были

бы нарушены

связи

в списке. В качестве альтернативы

может служить организация связи от предыдущей запи-

 

 

 

Sum

бит

 

 

 

 

 

 

\КпШч/ЯС\Уничт\ключ/ЛС

уничто­

Клшч/.Щ

 

 

 

 

тения

жения

 

 

 

 

 

 

ключа

ключа

 

 

 

Рис. 8-1. Параметры для обновления записи мультисписка.

си списка

к

п о с л е д у ю щ е й ^ П р е д п о л о ж и м ,

что запись,

в которой ключ д о л ж е н быть уничтожен, является

ІѴ за­

писью

списка. Тогда запись ;Ѵ—1

имеет

адрес

связи

к списку N,

а запись N имеет адрес записи

к списку N +

+ 1. Связь через запись может быть

создана

перенесе­

нием

адреса

записи N + 1 в область

адреса

связи

(для

рассматриваемого ключа) записи N1, если

список не

является двунаправленным . Но единственный способ по­

лучить N—1-ю запись — это

просмотреть список сначала,

что неэффективно, когда N

велико. Легче поставить бит

удаления ключа в положение единица и оставить связь

записей N—1 и N+1

через запись N.

В табл . 8-1 иллюстрируется процесс добавления пол­

ной записи в реальном

масштабе времени. Сначала (пер­

вый этап) запись редактируется для ввода в файл . Это означает, что она приводится к основному формату запи­

си, представленному на рис.

3-5,

и

т а к ж е ,

к а к

и

при

организации

файла,

единственной

частью,

которая

не

может

быть вставлена

в

это время,

являются

адреса

связи.

Н а

втором

этапе

ей

присваивается

адрес

ДА

в З У П Д

в соответствии

с

имеющимся

местом. В

систе­

ме, использующей подвижную

головку

З У П Д ,

новым

за­

писям следует присваивать

адреса

в монотонной последо­

вательности

для того, чтобы

при

выборке списка

меха­

низм передвигался на небольшие расстояния в одном на­ правлении. Н а третьем этапе начинается цикл последо-

162

Т а б л и ц а 8-1

Добавление полной, записи

1.Редактирование записи для ввода в файл

2.Присвоение новой записи адреса ЗУПД, ДП

3.Декодирование г'-го ключа по справочнику

4.Передача начального адреса списка ключа і из справочника в поле адреса связи ключа і новой записи

5.Занесение ДА в справочник в качестве нового начального ад­ реса ключа і

6. Увеличение длины списка ключа і в справочнике на единицу

7.Повторение пп. 3—6 для всех ключей новой записи

8.Занесение записи в фаііл по адресу ДА

вателы-юй обработки

ключей внутри

записи.

Ключ :

в записи декодируется

по справочнику.

З а т е м на

четвер­

том этапе начальный адрес списка і-го ключа в спра­

вочнике передается

из

справочника

в поле адресов свя­

зи ключа

в новой

записи. Н а

пятом

этапе адрес

новой

записи Д А

становится

новым

начальным адресом

ключа

і в справочнике. Этим самым новая запись наиболее эф ­ фективно ставится в начало списка и остаток списка со­

храняется независимым от

любых записей. Н а шестом

этапе длина списка ключа

в справочнике увеличивается

на единицу, а на седьмом этапе цикл заканчивается по­

вторением этапов с третьего по шестой д л я всех

ключей

новой записи. Наконец, на восьмом этапе новая

запись

запоминается в

З У П Д по адресу Д А .

 

Н а рис. 8-2

схематически иллюстрируется этот про­

цесс д л я одного ключа. В верхней половине рисунка по­ казана картина до обновления, а в нижней половине—

после обновления. Внизу к а ж д о й секции

показан

выход­

ной уровень

справочника

ключей. Д л я

простоты

иллю­

стрируется обновление одного

ключа,

т. е. одна итерация

цикла этапов с третьего по шестой

(см. табл . 8-1).

К а к

указано

на

седьмом

этапе,

эта

процедура д о л ж н а

повто­

ряться

д л я

к а ж д о г о

ключа

в

новой

записи. Рассмотрим

ключ X, имеющий в своем списке два адреса связи, пер­

вый из

которых указывает

на

запись

по

адресу 105

в no­

i l *

163

ле файла . Адреса на этой д и а г р а м м е располагаются по возрастанию . Так, когда этот ф а й л создавался, первый элемент был введен по адресу 76, а второй вошел в файл по адресу 105. Допустим, что в этот момент предполага­ ется добавить к списку третий адрес связи. Н а четвертом этапе начальный адрес списка 105 в выходном уровне справочника становится адресом связи новой записи, а на

пятом этапе адрес новой записи, который

д о л ж е н

быть

выходной

 

 

 

 

 

 

 

 

 

 

 

 

 

 

уровень

 

'X/W5/2

 

 

 

 

 

 

 

 

 

 

 

справочника

 

 

 

 

 

 

 

 

 

 

 

 

105

 

 

 

 

 

 

 

 

 

 

 

ключей

 

 

 

ОІХ/76

 

 

 

 

 

[ Черед

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

о&новление

 

 

 

 

 

 

! 75

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Выходной

 

 

 

 

 

X/E0L

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

уровень

 

\КлючХШ/3

 

 

 

 

 

 

 

 

 

 

справочника

 

 

 

 

 

 

 

 

 

 

ключей

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

U- п

 

 

 

 

 

 

 

 

После

 

 

 

 

 

 

 

105

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Iпвнавления

 

 

 

 

 

 

 

0W76

 

 

 

 

 

 

 

Увеличение

 

 

 

 

 

76

\Ö.X/E0Ü

 

 

 

 

 

 

 

 

 

 

 

 

 

 

адресов

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 8-2. Обновление ключа.

 

 

 

 

 

 

182, становится новым начальным адресом

списка в спра­

вочнике. Наконец, на шестом этапе длина списка увели­

чивается на единицу. Окончательная картина после об­

новления

показана

в

нижней

половине

д и а г р а м м ы .

 

 

Н а

рис. 8-3

представлены

процедура

и

схематическое

выполнение у д а л е н и я

полной записи. П о л н а я запись

уда­

ляется из ф а й л а в

реальном

м а с ш т а б е

времени

за

один

или д в а

этапа .

Н а

первом этапе

запись

выбирается

и

в бит

у д а л е н и я

записи

заносится

единица. Н а

этом

 

об­

новление

м о ж н о закончить,

т а к

к а к

запись

логически

у д а л е н а

из массива, а все списки, которые

проходят

че­

рез эту запись, остаются нетронутыми. В некоторых слу­

чаях

модифицируется

 

длина

списка.

Если

разработчик

р а с с м а т р и в а е т

это

число к а к

физическую

длину

списка,

т.. е. действительное

количество произвольных

выборок,

которое

требуется

д л я

просмотра

списка,

то

длина

не

164

д о л ж н а быть изменена и обновление заканчивается пер­ вым этапом. Если это число рассматривается как логи­ ческая длина списка, т. е. как количество выбираемых записей, которые могут ответить на запрос, то длина списка к а ж д о г о ключа в записи уменьшается на едини­ цу. Второе определение более приемлемо д л я использо­ вания длины списка в качестве длины просмотра логиче­ ского запроса, в то время как первое более приемлемо

/ Занести бит уничтожения записи 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

Д о

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

Соседние файлы в папке книги из ГПНТБ