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

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

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

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

Добавлен: 19.10.2024

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

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

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

при

рандомизации

входных

терминов

 

(ключей)

будет

выделяться

б л и ж а й ш е е

целое

число бит

из

[ogzN

в

сто­

рону

увеличения.

 

 

 

 

 

 

 

 

 

 

Н а

рисунке

показан

входной

ключ

(например,

тер­

мин

естественного

я з ы к а ) , обозначенный

как

ключ X.

Этот

ключ

надо

рандомизировать

в

число

х,

л е ж а щ е е

в диапазоне 1N.

О б р а щ а ю т с я

к

 

области

памяти

Обл.

X. Внутри этой области содержится адрес

данных

Ах, соответствующих ключу X (Обл.

1 Обл.

п

могут

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

З У П Д в

зависи­

мости от величины п, наличия места в оперативной

па­

мяти

и

заданной

скорости

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

Д р у г и м и

словами, Ах

является косвенной адресной ссылкой

к

вы­

ходной записи декодера, имеющей переменную длину и

соответствующей ключу X. Внутри этой записи

обла ­

сти Ах) находится заголовок

записи

данных

ключа X,

затем .длина списка ключа X,

а потом

идет нулевое

поле,

у к а з ы в а ю щ е е в данном случае местонахождение

дан ­

ных ключа X внутри рассматриваемой записи.

 

 

Структура данных внутри

этой

записи переменной

длины зависит от структуры файла . Если файл имеет структуру связанного списка, то данные ключа X явля ­

ются адресом связи с первой

записью. Б о л е е того, если

подполе

ключа X

(заголовка)

имеет 'постоянную

длину,

то

выход

декодера

в целом (т. е. все д а н н ы е в

записи

Ах)

можно передвинуть в Обл.

х. В этом случае

уровень

косвенных адресов не нужен .

Тогда, если

выходная

запись в целом содержит w слов, то Обл.

x=wx.

 

Если ф а й л имеет структуру

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

спис­

ка, то д а н н ы е ключа X являются

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

спис­

ком переменной длины, с о д е р ж а щ и м адреса или номера доступа.

К а к показано в верхней части

рисунка, д в а

ключа

Yi

и Yz рандомизируются в одно

и то ж е число у

и

соответ­

ственно

(с помощью

области у) — в область Аѵ,

которая

хранится в

З У П Д .

В области

Ау

содержится

поле

за ­

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

ключа

Уь

длину

списка ключа

Уі (Lvi)

и

адрес

связи

Ау2.

Этот

адрес

указывает,

что в ф а й л е

имеется

д р у г а я

запись

с ключевым

словом

(в данном случае это Yz),

рандоми-

зируемым в то ж е

самое число

(у),

что и ключ

Уі. М о ж ­

но без труда определить, является ли найденная

запись

искомой.

Д л я этого

н а д о сравнить входной

ключ

(Уі

или Yz)

со ссылкой

в начале

поля

заголовка . Если срав-

8—88

113


нения

не произошло,

т. е. был

декодирован ключ У2, то

о б р а щ а ю т с я к записи,

хранимой

в области Аѵ% и сравни­

вают

заданный ключ

с первым

подполем поля заголовка

этой записи (в данном случае содержит ключ У2 ). Затем проверяют длину списка для ключа У2 и адрес связи (равный н у л ю ) . Нулевой адрес связи указывает на от­ сутствие дальнейшего зацепления . Если в некоторый мо­

мент времени добавить в этот файл

другой

ключ, ска­

жем,

ключ

Уз,

который

т а к ж е

будет рандомизирован

в

число

у,

то цепь будет

расширена

на

один элемент,

а

третье

подполе

заголовка Л у 2

будет

содержать

адрес

связи Ауз.

Этот

адрес

будет д а в а т ь

ссылку

на

запись

данных

ключа У3 . П о л е

заголовка записи,

соответствую­

щей

ключу У3, будет иметь вид ключ

У з Д . у 3 / 0 .

 

 

 

Если требуются более простые (по сравнению

с

по­

казанными

в табл . 3-1)

информационные

структуры,

то

обобщенный рандомизатор

(рис. 6-4)

упрощается

и при­

нимает более специализированную форму. Например,

если

записи ф а й л а . содержат

только

по одному

ключу

(т. е.

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

ключа­

ми,

подобная

банковскому

примеру,

рассмотренному

в гл.

1) и если

длины записей

постоянные, то промежу­

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

записи

равен wx. При

этом зацепление ключей т а к ж е

необходимо.

 

Н а

рис. 6-5 показана другая модификация, которую

можно

использовать для

файлов со структурой связного

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

писях файла . Н а

рис.

6-5

показано,

что

записи

файла

хранятся

в областях Ах,

Ау1

и АУ2,

а заголовок,

содер­

ж а щ и й с я

только

в головной

записи списка,

обозначается

звездочкой. В общем случае запись содержит ключи как

со звездочками,

т а к

и без

них. Ключи

со

звездочками

обозначают заголовок ключей списка. Подполе

этого

объединенного

заголовка

справочника

и

поле

ключа

записи следующие:

полный ключ/длина

списка/адрес

связи со следующей записью в файле, с о д е р ж а щ е й дан­ ный ключ/цепной адрес ( 0 , если нет цепи)/рандомизи ­ рованный код (если цепной адрес не равен 0 ) . Рандо -

114


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

вать ключ Ко. Он рандомизируется

в число у

и из него—-

в Ау с помощью

Обл.

у. Проверка

полей всех

ключей со

звездочками не

дает

отождествления ключа

 

К2 первому

ключх ключУ] НлючУг

I і \

Рандомиаироватъ в:

 

 

 

1.

1

 

 

 

ч

 

ч

У

 

 

Обл.1

 

 

Обл.Н

Обл. 2

Обдх

^oL.y

 

---

 

 

 

я,

h.

 

 

 

 

 

 

 

 

Ях- ключи *Ключ

Х/іх/Щ/0/

 

 

 

 

\Данные\

 

 

 

 

 

[записи J

 

 

 

 

 

 

ключи I * Ключ Yj/LyjLRyjHyJy

 

 

 

Данные

S .

• ключи*Ключ

 

 

 

записи_

Д„

 

 

 

Уг

 

 

 

 

 

 

 

Данныё\

 

 

 

 

 

 

[записи J

Рис. 6-5.

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

ключей с помощью метода

 

 

 

рандомизации.

 

подполю. Единственный

способ

определить правильную

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

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

Если они весьма велики,

то ищется другая формула

рандомизации, д а ю щ а я

лучшее распределение кодов.

Из-за больших длин цепей теряется преимущество в ско- 8* 115


рости декодирования . Други м недостатком является не­ возможность автоматического поиска по диапазону (на­ пример, если требуется вести поиск в диапазоне AGE. BTW . 21—30). Это объясняется тем, что к а ж д у ю воз­ можную запись в файле надо знать заране е и декодиро­ вать отдельно от других записей.

6-5. ТРЕБОВАНИЯ ДЕКОДЕРА К ОБЪЕМУ ПАМЯТИ И ВРЕМЕНИ ДОСТУПА

Обычно крупные декодеры обрабатываю т словари клю­ чей объемом от нескольких тысяч до нескольких миллио-

 

 

Т а'б лиifa

6-3

 

Параметры~о5ъемов памяти декодера

 

 

 

Декодер*

 

Символ

Значение

V T

R

 

F T

с ,

Cr

Ci

с а

Сг

Си

c h

а

m

Nd

Л Ѵ

Nt

Ni

Nc

Общее количество символов на до­ рожке

Резервное количество символов на дорожке

Символ/фрагмент ключа

Символ/адрес ЗУПД

Символ/длина списка

Символ/заголовок

Символ/ключ

Длина цепи

Фактор ветвления дерева

Количество фрагментов ключей раз­ личной длины

Количество ключей в словаре

Количество дорожек, требующих для хранения /-го уровня дерева

Количество требуемых дорожек

Требования к памяти на дисках

Требования к оперативной памяти

X

X

 

X

X

 

X

X

X

X

X

X

X

X

X

 

X

 

 

 

X

 

 

X

XX X

X

X

X

X

X

 

X

X

X

X

X

X

X

X

X

* Столбец указывает тип декодера, к которому относятся параметры, FT—і стоянное дерево, VT—переменнее дерево, R—рандомпзатор.

116


HOB слов.

Поэтому можно ожидать,

что д л я

хранения

таблиц требуется в основном память

прямого

 

доступа.

Хранение части таблиц в оперативной

памяти

требуется

лишь при

повышенных требованиях

к времени

ответа.

При этом экономится одно обращение

к З У П Д .

 

Конечно,

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

мяти

экономит приблизительно 1 / я Х І 0 0 % общего

вре­

мени

доступа.

 

Р а с с м а т р и в а е м ы е ниже формулы предназначены

д л я

иллюстрации взаимосвязей м е ж д у объемом словаря, па­

раметрами декодера

(например, глубиной

дерева) и

средней длиной цепи

рандомизатора, а т а к ж е

временем

декодирования и требуемым объемом памяти . Эти фак­ торы с учетом неоднозначности декодирования, возмож ­ ности поиска по диапазону и сложности программирова ­ ния дают возможность разработчику создать декодер, подходящий для его области применения. Список пара ­ метров, входящих в формулы, приведен в табл . 6-3.

6-5-1. Формулы для дерева декодера Для расчета требуемого объема памяти д л я упорядочен­

ного

дерева вначале надо определить количество вет­

вей,

выходящих из к а ж д о й вершины дерева . Этот пара­

метр

называется

фактором

ветвления т.

В соответст­

вии

с принципом

упаковки

максимально

возможного

количества ключей в вершине величина m зависит от общего доступного пространства в максимально возмож ­

ной физической записи,

хранимой

в

З У П Д

(которая

соответствует размеру буфера

оперативной

п а м я т и ) , и

от объема памяти, требуемого

д л я

хранения

декодирую­

щей тройки ключ (фрагмент)/адрес/длина списка.

Д л я

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

физической

записи

требуется одна

д о р о ж к а

(для

любого

другого

блока

па­

мяти читатель

может использовать

в

этих рассуждениях

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

дорожки

понятие

б л о к а ) .

 

 

m,

Md

Необходимо

вычислить

значения

параметров

и M с, а т а к ж е

выразить

их

через

целые числа

Nt

и

Nti.

Д л я округления до целого используются следующие обо­ значения:

рациональное число х можно представить как

117