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

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

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

руется для занесения в файл в оперативной памяти . За ­

тем новой

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

адрес З У П Д ДА . Третий

этап — это

декодирование і-го ключа в справочнике для

получения

доступа к соответствующему

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

му списку

переменной длины. Новый адрес д о л ж е н

быть

вставлен в

список. Если вставка этого адреса

вызывает

переполнение

отводимого блока

памяти, как

показано

на рис. 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

д о в а т е л ы і ыи список, причем

к а ж д ы й новый олок

ставит­

ся в

начало списка, а когда

нужен блок ж е л а е м о г о раз­

мера,

«искатель пространства» просматривает

список

(один произвольный доступ на блок) до тех пор, пока он не найдет запись соответствующего размера . Недостаток

До упоря дочивания\

после упо рядЬѵиваніт\

логического формиро ­ вания пространства в том, что список полез­

ного

пространства

мо­

ж е т

стать

большим и

потребовать

собствен­

ного

обслуживания,

в

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

В отличие от логиче­ ского способа обслужи ­ вания пространства фи­

Рис. 8-6. Упорядочивание памяти.

зический

способ

обслу­

 

ж и в а н и я

имеет

неко­

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

передает системе пригодные

д л я

использования блоки

по всей памяти. Он включается,

когда устройства или

программы с более высоким

приоритетом не з а г р у ж а ю т

ЭВМ, и это может привести к резкому увеличению сво­

бодной памяти

в

течение

нескольких секунд,

оставляя

ф а й л ы полностью

в рабочем

состоянии. Н а рис. 8-6 ил­

люстрируется

этот

процесс.

В верхней

части

рисунка

и з о б р а ж е н а часть файла с

16 записями .

З а ш т р и х о в а н н ы е

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

тов удаления записей

или ключей. Н и ж н я я часть рисунка

показывает состояние

ф а й л а после упорядочивания памя ­

ти. Выбирается запись 1, проверяются биты удаления и, так как таковых ие было, запись пропускается. Выбира­ ется запись 2, укорачивается и вновь записывается в па­

мять с образованием з а з о р а м е ж д у

записями 2 и 3.

Если

логические записи упакованы в физические записи

(та­

кие

как д о р о ж к и ) , то полная физическая запись

обрабо ­

тана

таким ж е образом,

а излишек

пространства

переда­

ется

следующей записи.

Запись 3

продвигается

вверх,,

запись 4 полностью уничтожается, а запись 5 становится за записью 3 с последовательным накапливанием про­ странства, равным длине записи 5 плюс длина уничто­ женного куска записи 2. К а ж д о е продвижение или уни­ чтожение записи требует обновления всех ключей в спра­ вочнике, относящихся к этой записи. Таким образом, это может быть довольно дорогой процедурой, но она вы­ полняется с низким приоритетом, если только не появля­

ется внезапная необходимость

в пространстве. П р о г р а м ­

ма может закончиться и оставить рабочий файл

после

окончания движения очередной записи. Д л я записи

с 20

ключами и временем декодирования и обновления

спра­

вочника

200 мсек

на один шаг

по файлу потребовалось

бы 4 сек.

Если эта

процедура

д о л ж н а быть продолжена

через все 16 записей, то файл выглядел бы так, как по­ казано на нижней половине рисунка.

Компромиссом м е ж д у физическим и логическим ис­ пользованиями пространства была бы организация по­

стоянного

списка

распределенной

имеющейся

памяти,,

в которой

к а ж д ы й

блок собирался

бы с помощью

проце­

дуры упорядочивания памяти . О б с л у ж и в а н и е этого'спи ­

ска очень простое (имеется

всегда Л' блоков,

относитель­

но небольшое по количеству и переменной д л и н ы ) , а

упо­

рядочивание

памяти локализовано .

 

 

 

 

Следует подчеркнуть, что упорядочивание памяти мо­

ж е т быть выполнено только на двунаправленных

муль­

тисписках

или

инвертированных

списках, потому

что,

когда

запись перемещается,

связи

к

последующим

за­

писям остаются нетронутыми, в то время как

адреса

свя­

зи к

предшествующим записям

д о л ж н ы быть

изменены.

Если

связи

однонаправленные,

адреса

предшествующих

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

не

может

быть вставлен как адрес связи в списке. Эта

трудность

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

мультисписках

с

двунаправленными

175 *

с в я з я ми и в инвертированных списках, так как новый адрес перемещаемой записи просто заменяет бывший адрес в последовательном инвертированном списке. Фак­ тически сама последовательность не изменяется.

8-5. РАСЧЕТ ВРЕМЕНИ ОБНОВЛЕНИЯ

В табл . 8-8—8-10 представлены формулы расчета време­ ни дл я мультисписка, инвертированного списка и систе­ мы последовательных секторов по отношению к пяти оперативным категориям обновления: добавление полной

Т а б л и ц а 8-8 Расчет времени обновления для мультиспискового файла

Процедуры

Декодирование по

справочнику Выборка записи

Обновление справоч­

ника Запоминание обнов­

ленной записи

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

Уничтоже­ ние** полноі! записи

Уничтоже­ ние** ключей

 

"Г-

т»

 

1 3

 

ТА

ТА

 

 

T'A

ТА

ТА

Изменение

Изменение

неключе­

неключе­

вых дан­

вых

дан­

ных (без

ных

(с пе­

перемеще­

ремещени­

ния)

ем)

т3

Тг

ТА

ТА

 

ТА

ТА

Добавление ключей (без перемещения)

ТА

ТА

*

7"д=7"г н-1.5^?. (Добавить

R, если после

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

требуется

конт­

рольное чтение.)

 

 

 

 

 

 

** Предполагается, что длпиы списков справочника—физические,

поэтому,

если

поставлен бит уничтожения ключа или записи, не нужно

обновлять

справочник

 

***

Г3 —время декодирования

трехуровневого

дерева

[см. (6-12)].

(Добавить R,

если после занесения в память требуется контрольное чтение.)

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

тролем, ко

времени

занесения на З У П Д

д о л ж н а быть

добавлена

величина

R, которая не

включает схемного

контроля. В приложении 3

указано,

какое

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

имеет устройство схемного

контроля. Те устройства, ко-

1 76

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Т а б л и ц а

8-9

Расчет

времени

обновления

для инвертированных

списков

 

 

 

 

 

 

 

Изменение

Изменение

 

 

 

 

Добавле­ Уничто­

Уничтоже­

неключе­

Добавление

 

 

ние

пол­

жение

вых

дан­

неключе­

п. ключей

Процедуры

ной за­

полной

ние п

ных

(без

вых

данных

(без

пере­

 

 

писи

записи

ключей

перемеще­

переме­

мещения)

 

 

 

 

 

 

 

ния)

щением)

 

 

 

 

 

 

 

 

 

 

 

 

 

Декодирова­

 

 

т3

 

т3

т,

 

т,

 

т3

ние по спра­

 

 

 

 

 

 

 

 

 

 

 

вочнику

 

 

 

ТА

 

 

 

 

 

 

 

 

Выборка

 

 

 

Тл

ТА

 

 

ТА

ТА

записи

 

вд

 

 

 

 

 

ад

 

 

Обновление

 

 

пТ3

 

 

пТ3

справочника

 

 

 

 

 

 

 

ад

 

 

Обновление

NhTL*

 

 

nTL

 

 

n

ТL,

инвертиро­

 

 

 

 

 

 

 

 

 

 

 

ванного

 

 

 

 

 

 

 

 

 

 

 

 

списка

 

 

 

 

 

 

 

 

 

 

 

 

Запоминание

 

ТА

ТА

 

ТА

ТА

 

 

тА

обновленной

 

 

 

 

 

 

 

 

 

 

 

записи

 

 

 

 

 

 

 

 

 

 

 

 

*

Р"г + 1/2 j—J-J R.) (Добавить

R, если

требуется

контрольное

чтение.)

" Т р е б у е т с я ,

если

используется бит уничтожения. Бит уничтожения тр е б у е т с я

если производилось

упорядочивание

памяти.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Т а б л и ц а

8-10

Расчет времени обновления для секторно-последовательной структуры файла

Процедуры

 

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

Уничтожение полнойзаписи

Уничтожение ключей"л

Изменениене­ ключевых данных(без перемещения)

Изменение*** неключевых данных(с пе­ ремещением)

 

 

 

 

 

 

 

 

 

 

 

 

 

I

 

Декодирование

по

 

Т3

т,

 

т3

справочнику

 

 

 

 

 

 

Выборка

записи

 

 

ТА

ТА

Т А

Т А

Обновление

справоч­

 

 

 

 

 

ника

 

инверти­

 

 

 

 

 

Обновление

 

 

 

 

 

рованных

списков

 

 

 

 

 

Запоминание

 

обнов­

ТА

ТА

ТА

ТА

Т А

ленной

записи

 

 

 

 

 

 

 

* Предполагается, что все ключи записи всегда находятся в секторе.

**Ключи не уничтожаются в секторе.

**Предполагается, что записи перемещаются внутри сектора.

я Добавление(безключей )перемещения

7*3

ТА

ТА

12—88

177

 

торые не имеют устройств схемного контроля,

д о л ж н ы

 

проверяться программным чтением (на следующем по­

 

вороте

диска)

записанных

данных.

 

 

 

 

 

 

 

В к а ж д о й из этих т а б л и ц процедуры

обновления

раз ­

 

биты на четыре последовательных ш а г а : 1)

справочное

 

декодирование;

2) выборка

записи

(для

обновления);

 

3) обновление справочника; 4) запоминание обновленной

 

записи.

 

 

 

 

 

 

 

 

 

 

 

 

 

Предполагается, что все обновления относятся к еди­

 

ничной записи, которая идентифицируется по

ее

номеру.

 

В общем случае для того, чтобы подсчитать

время

д л я

 

многократного декодирования

ключей при

многократной

 

выборке записей, обновлений справочника и восстанов­

 

лений

записи, вводятся соответствующие

 

коэффициенты.

 

В т а б л и ц а х

видна

сравнительная

степень

сложности

I

к а ж д о й системы. Система

последовательных

секторов—

 

наименее с л о ж н а я в предположении, что перемещение

 

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

 

добавление ключей к записям не выводит запись за пре­

 

делы сектора, что обычно наблюдается . Средней по слож-

. ности

является

мультисписковая

система,

а

наиболее

j

сложной — структура

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

списка.

 

 

 

И з

табл . 8-11

видно, какие

соотношения

существуют

 

между временами обновления мультисписка и инверти­

 

рованного списка

д л я

всех

пяти

категорий

обновления.

 

Д о б а в л е н и е

полной записи

 

 

 

 

 

 

 

 

 

 

 

 

TIL=TML

+ NhTL.

 

 

 

 

 

(8-3)

 

Уничтожение

полной записи

 

 

 

 

 

 

 

 

 

 

 

Trz.=

TML

+ Nk(T3...).

 

 

 

 

 

(8-4)

 

Уничтожение

ключей

 

 

 

 

 

 

 

 

 

 

 

 

 

TIL=TML+n(T3+TL).

 

 

 

 

 

 

 

(8-5)

 

М о д и ф и к а ц и я

неключевых данных

(без

перемеще­

 

ния)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

TIL

= TML.

 

 

 

 

 

 

(8-6)

Модификация неключевых данных (с перемещением)

TIL=TML+NhTL.

(8-7)

Д о б а в л е н и е ключей

(8-8)

178

 

 

 

 

 

 

 

 

 

 

 

 

Т а б л и ц а 8-11

 

Сравнительные

данные по обновлению

различных

 

 

 

 

 

структур

файла

 

 

 

 

 

 

 

Тип обновления

Мультисписок

Инвертированный

Секторно-после­

 

список

 

 

довательный

Добавление

полной за­

 

 

 

 

 

 

 

 

 

 

ТА

писи

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Уничтожение

полной

T3

+

ÏTA

 

Т3 +

 

А+

Т3

+

А

записи

 

 

 

 

 

 

+ NH(T3+

 

Т,)

 

 

 

Уничтожение

п клю­

Т3

+

Д

 

7'з +

2 7 Л +

Г3

+

А

чей

 

 

 

 

 

 

 

+ п(Та+

 

TL)

Т3

+

А

Изменение

неключе­

Т3

+ А

 

Т

3

+ 2Т

Д

 

 

 

 

 

 

вых данных

(без пе­

 

 

 

 

 

 

 

 

 

 

 

 

ремещения)

 

 

 

 

 

 

 

 

 

 

 

 

 

Изменение

неключе­

(Л^+ 1)Г 3 +

{NH+\)T3

 

+

Т3

+

А

вых данных) с пере­

+

27-Л

+ 2TA

+

 

NhTL

 

 

 

мещением)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(п+\)Т3

 

+

 

 

 

Добавление

п ключей

(я +

1) 7-,+

 

 

Т3

+

А

 

+ 2ТА+

пТ,

 

 

 

 

+

27 л

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Пример.

 

В табл . 8-12

содержатся типичные

временные

значения

параметров файла, приведенных в

табл . 7-3.

В этом примере предполагается,

что

должн а

быть

ис-

 

 

 

 

 

 

 

 

 

 

 

 

Т а б л и ц а

8-12

 

 

 

Параметры файла, ЗУПД и запроса

 

 

 

 

Параметр

Значение

 

 

Параметр

 

 

Значение

 

V

 

 

10,000

 

 

Ls

 

 

 

 

150

 

 

 

 

50,000

 

 

Р

 

 

 

 

0,1

 

Ï "

 

20

 

 

а

 

 

 

 

 

0,1

 

 

1,000

 

А

(быстрая)

 

 

900

Cj

(быстрая)

3,600

 

А

(медленная)

 

500

Сг

(медленная)

2,000

 

Тг

(быстрая)

 

85

 

млсек

 

R,

 

 

100

 

7V

(медленная)

500

млсек

 

к

 

 

50

 

Rt

(медленная)

50

 

кбайт/сек

 

 

 

4

 

R

(быстрая)

 

25

млсек

 

 

 

 

3

 

R

(медленная)

50

млсек

12*

 

 

 

 

 

 

 

 

 

 

 

 

 

 

179

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