Файл: Левковиц, Д. Структуры информационных массивов оперативных систем.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 19.10.2024

Просмотров: 91

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

пись файла,

 

с о д е р ж а щ а я

этот

ключ,

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

с помощью

адреса

связи,

помещенного

внутри

записи

и связанного,

с

соответствующим ключом так, как это

показано

на

рис. 3-5. Т а к и м образом,

если

ключ

появ­

ляется в 100 записях, то Справочник

содержит

един­

ственный

адрес,

указывающий на

первую

запись,

а, кро­

ме того,

внутри

к а ж д о й записи, содержащей ключ, запи­

сан адрес, у к а з ы в а ю щ и й на следующую

из

99 записей,

расположенных

в З У П Д .

Система

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

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

или

просто

мультисписок *

допускает

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

сколько

в записи

ключей.

 

 

 

 

 

 

 

 

Другой подход к организации списков

в

З У П Д вы­

текает

из

более

традиционных методов

обращения

к ф а й л а м .

Так, один

из

них — метод

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

списка — состоит

в изъятии

всех

адресов

связи

из

запи­

сей файла

и помещении

их

на

выходе

Справочника

в порядке

возрастания

адресов,

т. е. все

записи,

содер­

жащие заданный ключ X, представлены

списком — мо­

нотонной

последовательностью

адресов,

о б р а з у ю щ и х

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

указывается в Справочнике

 

Ключей.

 

 

 

 

 

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

рианты

структуры

файла,

реализация

которых

приведет

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

не

менее

оба списка

могут

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

одну

и ту

ж е

 

структуру

информации, будь то иерархическая или ассоциативная.

Они сходны в том смысле, что используют одни

и те ж е

средства

определения логики

разбиения, а именно адре­

са связи;

в обоих случаях

д л я

получения разбиения

данного

файла необходимо указывать одно и то

ж е ко­

личество

адресов связи;

единственное различие

состоит

в местоположении этих адресов.

 

 

Метод инвертированного списка исключает разбро ­

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

системой

адреса связи из файла

записей и собирает их в собственный файл, промежуточ­

ный между

Справочником

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

файлом .

Однако

эта

модификация

влечет

за

собой существенное

отличие

свойств обеих структур

во

времени отклика на

* Этот тип списковой структуры

сначала назывался

узловым

списком (см. [Л. 9]),

 

 

 

 

95


поиск и обновление, степени трудности 'программирова­ ния, качестве допоисковон статистики, объеме памяти и схеме процессора запроса и рабочих программ. Поэтому, хотя они функционально идентичны, труктурно и опера-

ционно

они различны и, как показано в

правой части

рис. 5-2,

совершенно полярны. П р и этом

оказывается,

что д л я больших файлов мультисписковая система со­ держит некоторые операционные дефекты, которые ме­

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

но в то

ж е

время

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

система

д а е т

некоторую

экономию

в объеме памяти файла и упрощает

 

програм­

мирование.

Поэтому естественно рассмотреть комбина­

цию

обоих

подходов, конструируя

спектр

различных

частично

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

мультисписковых

систем.

Более того, как будет показано в гл. 7, этот спектр вве­

дением

некоторого

программного

параметра

можно

сде­

л а т ь непрерывным.

З а время

формирования

ф а й л а

па­

раметру

можно

присвоить

значение,

устанавливающее

д л я

структуры

ф а й л а

заранее

 

определенную

степень

инверсности,

которая

от одной

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

фай­

л а

к другой

может

произвольно

изменяться.

 

 

 

 

Эта модификация основной концепции мультисписка

называется

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

с управляемой

длиной

спис­

ка.

Т а к а я структура

позволяет

проектировать

образова­

ние

списков

произвольной

максимальной длины, начи­

ная

от

единицы

и

кончая

фактической

длиной

списка.

Если длина к а ж д о г о списка ограничена единицей, полу­ чаем систему с инвертированным списком. Следователь­

но, ранг

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

рис. 5-2,

непрерывно расширяется от чисто мультисписко­

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

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

управляемой

длиной

списка,

равной единице. Поскольку

при переписи

ф а й л а

степень

инверсии введением длины

списка как

параметра про­

г р а м м ы может изменяться, оператор системы может пе­

риодически

менять параметры

системы в

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

с текущей

статистикой файла

и запроса.

Это позволит

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

тики

системы.

 

 

 

 

 

 

 

О д н а к о списковая

структура — не

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

средство разбиения файла . Д р у г и м

средством

может

быть физическое

разбиение

З У П Д на секторы,

имеющие

целью

направить

.поиск

тіо

ключу

на отобранные

сек­

торы

вместо просмотра

индивидуальных

записей.

При

96


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

внутри

сектора

зависит от таких

факторов, как

размер

сектора

(как в

числе записей,

т а к

и в количестве

симво­

лов),

ж е л а е м о й сложности

программирования, тип

З У П Д

и требование оперативного обновления и

харак ­

теристик отклика системы. После описания этого метода

покажем, что

приписывание

записей

сектором

имеет

свои преимущества.

Т а к а я структура

уменьшает число

обращений

к

секторам,

причем группировка

записей

внутри сектора

о т р а ж а е т

их взаимное

р а с п о л о ж е н и е от­

носительно

запроса .

 

 

 

 

 

Н а рис.

5-2

схема

метода

разбиения на

секторы

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

ляется

функцией р а з м е р а сектора. Схема с м а л ы м и секто­

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

записи

(одна запись в секторе) . Схемы с крупными

секторами

расположены ближе либо

к мультисписковой

 

системе,

если сектор внутри имеет

мультисписковую

структуру,

либо к

последовательному

файлу,

если

он

не

имеет

внутренней

списковой

структуры.

С другой

стороны,

если

сектор

имеет

внутреннюю

списковую

 

структу­

ру, по

схеме

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

списка, весь

файл не­

зависимо

от

размера

сектора

т а к ж е

окажется

инвер­

тированным, причем в состоянии многоступенчатой иерархии.

Итак, процесс оперативного поиска состоит из двух

существенно различных этапов:

 

 

 

 

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

и

поиска

разбиения

файла .

 

 

 

 

 

 

, Техника программирования,

р е а л и з у ю щ а я

структуру

файла

на

к а ж д о м этапе,

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

и

оценивает­

ся в

двух

последующих

главах .

В

гл. 6

предлагаются

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

7—88

97


ГЛАВА ШЕСТАЯ

М Е Т О ДЫ Д Е К О Д И Р О В А Н И Я СПРАВОЧНИКОВ

В этой главе рассматривается ряд методов декодирова­ ния: метод дерева усеченных ключевых слов постоянной длины; метод дерева однозначно усеченных ключевых слов переменной длины; метод дерева полных ключевых слов переменной длины и метод рандомизации . Назовем эти методы соответственно методом постоянного дерева, ме­ тодом усеченного переменного дерева, методом перемен­ ного дерева и методом рандомизации .

Н и ж е эти методы будут описаны и дополнены при­ мерами; для к а ж д о г о метода будут получены выражения для времени поиска и объема требуемой памяти. Затем будет проведен сравнительный анализ этих, методов по

сложности

программирования, скорости

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

з а т р а т а м

памяти.

 

Вначале рассмотрим декодирующие

деревья, которые

могут быть упорядоченными и неупорядоченными. Отли­

чие упорядоченного

дерева

от неупорядоченного

состоит

в следующем: если

дерево

имеет N уровней, то

все клю­

чи можно декодировать (с помощью упорядоченного де­ рева) либо на N—1-м уровне, либо на N-ы. Преимуще­ ством упорядоченного дерева является почти постоянное

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

недостатком — бо­

лее сложное программирование . В то

ж е время неупоря­

доченное дерево иногда обеспечивает более высокую ско­

рость декодирования .

 

 

 

 

 

Н а

практике,

однако,

требуемая

словарем

ключей

глубина дерева в большинстве случаев

не

превышает

двух или трех уровней (в

зависимости

от типа

исполь­

зуемого

З У П Д ) .

Поэтому

использование

неупорядочен­

ных деревьев не

приведет

к существенному

сокращению

времени декодирования . П о этой причине здесь рассма­ триваются лишь упорядоченные деревья .

Начнем с дерева ключевых слов постоянной длины, получаемых при усечении ключей полной длины. Деко­ дирование ключей с помощью этого дерева выполняете:"- путем просмотра таблиц .

98


6-1. ДЕРЕВО УСЕЧЕННЫХ КЛЮЧЕВЫХ СЛОВ ПОСТОЯННОЙ д л и н ы

На рис. 6-1 схематично показана часть такого дерева. Последовательности имен представлены в алфавитном

порядке в табл . 6-1. Дерево, изображенное

на

рис. 6-1,

уровень, хранимый

 

 

 

 

 

 

 

В оперативной

памяти

 

 

 

 

 

 

 

Уровни,

 

 

 

 

 

 

 

 

 

хранимые \

 

 

 

 

 

 

 

 

 

6 памяти

 

 

 

 

 

 

 

 

 

на дисках

ВЙВЩ вмщ\ BELLI BELM/BLRCI CRRd/CRRTI cm/

BUHLIOYSOIЕШІ

 

 

 

 

« А

R1JL1

 

 

 

Ulfa

Рис. 6-1. Дерево с усечением ключевых слов постоянной длины.

декодирует имена из таблицы, причем

к а ж д о е

имя со­

кращается

до первых

четырех букв. Д л я простоты пред­

полагается,

что уровни, хранимые в

памяти на

дисках,

 

 

 

 

 

 

 

 

Т а б л и ц а 6-1

 

 

Пример однозначного усечения

имени

 

 

 

 

Однозначно

 

 

 

 

Однозначно

 

 

Однозначно

закодиро­

 

 

Одн 13ЮЧНО

закодиро­

Полное имя

закодиро­

 

ванные

Полнее им я

закодиро­

ванные

ванный

фрагменты

ванный

фрагменты

 

 

фрагмент

для много­

 

 

фрагмент

для много­

 

 

 

уровневого

 

 

 

 

уровневого

 

 

 

 

дерева

 

 

 

 

д е р е Е а

ВАВВЕТ

 

В

 

В

BLACK

 

BL

 

. В

BABSON

 

BABS

 

ВA BS

BLACKWELL

BLACKW

BLACW

BAILEY

 

BAI

 

BAI

CARDER

 

С

С

BAKER

 

.ВАК

 

В

CARTON

 

CART

CART

BELL

 

BE

 

BE

CROZIER

 

CR

С

BELLSON

 

BELLS

B E L L S DUNLAP

 

D

D

BELMAN

 

B E I M

BELM

DYSON

 

DY

DY

 

 

 

 

 

EYERS

j

E

Е

99