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

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

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

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

7-6. АВТОНОМНАЯ ГЕНЕРАЦИЯ ФАЙЛОВ СО СПИСКОВОЙ СТРУКТУРОЙ

В гл. '8 будут описаны

методы

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

обновле­

ния

файлов,

хотя, как

указывалось в г л . 3,

не

всякая

система требует оперативного обновления (обычно

в та­

ких

системах

данные обновления

формируются

в

паке­

т ы ) .

В этих

системах,

а т а к ж е в

оперативно

обновляю­

щихся системах обычно имеется возможность генери­ ровать и обновлять файл автономно, что экономически целесообразно. Интересно указать, что т а к а я процедура может быть доведена до конца без обращения к произ­ вольной выборке из З У П Д , поскольку она в основном состоит из сортировок. Процесс начинается со считыва­ ния ф а й л а записей с магнитной ленты. К а ж д а я запись имеет ключи, некоторым образом отделенные от других данных в записи. В целях дальнейшего изложения будем рассматривать в записи три различающиеся части: но­ мер д л я доступа, ключи и все остальные неключевые данные, включая классификаторы . В этом случае, как

показано на рис.

7-7, файл со списковой структурой

мо­

ж е т

генерироваться серией сортировок. В верхнем левом

углу

д и а г р а м м ы

показан входной файл, с о д е р ж а щ и й

за­

писи формата, подобного тому, который ранее был пока­ зан на рис. 3-5, с тремя различающимися частями. Адрес

связи, который на рис. 3-5 присутствует

при

к а ж д о й

па­

ре И м я ключа/Значение — единственная

компонента

за­

писи, которая не содержится в этом входном

файле . При­

своение адреса является

одной

из функций

программы .

П о д к а ж д ы м символом

ленты

(рис. 7-7)

перечисляются

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

ровки файла . К а к видно из рисунка, входной файл пред­ полагается упорядоченным по номеру д л я доступа ( Н Д ) , который рассматривается как основной ключ ф а й л а в си­ стеме. С другой стороны, система может быть упорядо­ чена и по любому другому единичному ключу. В блока / каждой входной записи последовательно присваиваются

;

Присво­

 

 

 

 

Сортиров-

N

 

ение

 

ГенерироВошив

 

дисковых\

 

троен

 

 

на по

W

W ^ )

адресов

 

ключ/ДЯ/НДО

ключ/ДЯ

V _ é

^

НД*

НД

 

 

ключ/ДД/НД

Ключ/ДД/НД

Ключи

ДЙ

 

 

Неключевые данные Ключи

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

Конструирова­

 

 

 

 

 

Файл со

ние справочни­

 

 

 

 

 

ка ключей с

 

 

 

 

щтавка

списковой

начальными

 

Сорти­

 

структурой

адресами

 

О

ЯС и

 

 

 

списков (НДС)

 

ровка

 

создание

 

 

 

и длинами. О

поНД

 

ленты

 

 

 

списнав(ДС).

 

 

 

 

файла

 

ДЯ

 

Образование

КЛЮЧ/ДЯІНЛ КЛЮЧ/ДЯ/НД

 

 

всех адресов

ЙС

 

 

 

 

 

M

 

связи (ДС)

 

 

 

 

Ключи/ДС

 

 

 

 

 

 

 

 

 

НД

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

 

 

 

 

Ключи

 

 

 

Ключ/НДС/дс

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

 

 

 

^Подчеркнутые данные указывают на ключ сортирооки

Рис. 7-7. Построение мультиспискового файла.

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

адресов связи. Входные записи р а з м е щ а ю т с я

на дорож ­

ках диска. В конце каждой дорожки д о л ж н о

быть

оста­

новлено некоторое резервное пространство на тот

слу­

чай, если файл д о л ж е н регулярно обновляться. Это

про­

странство позволяет оперативно расширять записи без

перемещения и

без переадресации данных

этой записи,

т а к как адрес

любой заданной логической

записи есть

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

151

волов в таблице - оглавлении . Таким образом, нужная за­ пись становится доступной в результате серии последо­ вательных индексаций. Обычно в конце дорожки остав­ л я ю т 10%-ную резервную область. Кроме того, в мультисписковых системах при занесении записи стараются избегать ее расщепления на разные дорожки, за исклю­ чением того случая, когда запись требует более одной д о р о ж к и памяти для своего размещения . Поэтому, если

запись

короче, чем одна д о р о ж к а ,

но ие может полно­

стью поместиться на оставшейся части, ее помещают

на

новой

д о р о ж к е . Адрес логической

записи, состоящий

из

номера модуля (физического номера дорожки) и отно­

сительного

адреса, на этой д и а г р а м м е мнемонически

обо­

значается

через Д А . После присвоения адресов на

выхо­

де блока 1 формируется некоторая лента, упорядоченная

по Н Д и Д А . Кроме того, на этой ленте записаны

ключи

(без

неключевых д а н н ы х ) . По данным этой ленты

в бло­

ке 2

генерируются тройки ключ/адрес/номер д л я

досту­

па, а в блоке 3 они сортируются по адресам внутри клю­

ча. П о л у ч а е м а я

лента затем входит в блок 4, где строит­

ся

справочник

ключей.

Первый адрес, появляющийся

в

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

ся

начальным

адресом

списка (НАС) д л я этого ключа

в справочнике ключей. Число повторений ключа в под­

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

есть

длина

списка ( Д С ) .

Спра­

вочник генерируется

как

лента,

с о д е р ж а щ а я

тройки:

к л ю ч / Н А С / Д С , упорядоченные по ключам . Эта лента по­

следовательно обрабатывается одним из методов, опи­

санных в гл. 4,

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

декодера .

Если

мульти­

список

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

длиной

ограничен

максимальной

длиной

списка,

равной

N, то первые Дозаписей внутри дан­

ной

ключевой

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

станут

первым

списком, следующие N

записей

внутри

той

ж е

ключевой

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

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

в справоч­

ник, а длины списков д л я

к а ж д о г о подсписка

равны

N,

за исключением последнего

списка, длина которого

мо­

ж е т быть меньше, чем N. Если у п р а в л я ю щ и е

параметры

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

ганизован по типу

секторного мультисписка, то, посколь­

ку

тройки

внутри

ключевой последовательности имеют

при

себе

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

152

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

на списка в этом случае может

быть, конечно, различной

для к а ж д о г о

секторного подсписка.

 

К а ж д ы й

адрес

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

подпо­

следовательности,

следующий

за начальным

адресом

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

стве 'второго поля к тройке К л ю ч / Д А / Н Д

в виде

второй

выходной ленты блока 4, т. е. адрес связи

является

адре­

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

ществляется в блоке 6, а адрес

связи заключается в трой­

ку

ключ/значение/адрес связи

соответствующей

записи.

С

помощью этого относительно

простого процесса

могут

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

В принципе структура инвертированного списка мо­ жет быть генерирована по схеме рис. 7-7, если прирав­

нять длину

списка единице. Однако модифицированная

форма

этой

процедуры

более

эффективна .

Н а

рис.

7-8 показана

схема

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

для инвертированной списковой системы. Вход в эту схе­

му тот ж е

и содержит номер

д л я доступа,

ключи

и не­

ключевые

данные . В блоке /

к а ж д о й записи

файла

при­

сваиваются дисковые адреса. В этом блоке можно полу­

чить

выходной

файл со списковой структурой, поскольку

адрес

связи

в

поле

файла

отсутствует.

Следовательно,

заносимая

на

ленту

запись

содержит

дисковые

адреса

( Д А ) , номера

д л я доступа

( Н Д ) ,

ключи и

неключевые

данные . Наличие ключей в записи

необязательно, потому

что, как было

сказано ранее, полная расшифровка

буле­

вых выражений, составленных из

ключей,

производится

в справочнике ключей. Поэтому ключи потребуются в са­

мой записи только тогда, когда желательно

выполнить

некоторые другие вычисления, зависящие от

значения

ключей, или при выводе необходимо напечатать

значения

ключей. Дисковый адрес в файле необходимо

присвоить

для того, чтобы программа,

которая

р а з м е щ а е т

файл

с выходной ленты на диске,

могла бы

правильно

разме-

153

стить записи на д о р о ж к а х

и оставить неооходимую

ре­

зервную зону. В качестве

одного из способов адресации

м о ж н о у к а з а т ь следующий:

индексные номера, помещае­

мые перед сериями записей,

у к а з ы в а ю т номера записей

на одной и той ж е дорожке .

При этом гарантируется,

что

вконце дорожки будет зарезервировано необходимое

свободное место. Б л о к /

создает, кроме того, лепту с про­

 

файл

 

ЛЯ

 

 

 

 

 

с инвертированной

 

M

 

 

 

 

 

списковой

 

Ключи (необязательно)

 

 

структурой

 

 

 

 

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

 

 

 

Присвоение

 

Генериро-

 

X

Сорти-

.^—ч

ной

дисковых

 

 

 

ваниепар*(

)*• ровна

- н

/ * ®

адресов

 

^ФайлI

 

ключ/ДА

^ — з

ключ/Дй

4 — з

M

(ДЙ)

 

 

 

 

 

 

 

Ж

 

ключ/Aft

ключ/Дй

ключи

ключи

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

Построение

 

СправочХ

ключ Я

 

 

 

справочника

 

 

ЛЯ

 

 

 

ключей

 

ник

)

 

ДЙ

 

 

 

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

 

\ключей /

 

ключ В

 

 

 

списка

 

 

 

 

ЛЯ

 

 

 

 

 

 

 

 

Дй

 

 

Рис. 7-8.

Построение файла

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

струк­

 

 

 

турой.

 

 

 

 

 

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

ботки. Так ж е , как и в случае мультисписковой

конст­

рукции, в блоке 2 формируется лента с

парами

ключ/адрес. В блоке 3 эта лента сортируется по адресам внутри ключевой последовательности, в результате чего

получается размеченная

выходная лента. И з

этой

ленты

в блоке 4 формируется

справочник

ключей

инвертиро­

ванного списка. Все адреса, которые

появляются

в дан­

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

таблицы у к а з а н а

в выходной ленте блока 4.

Декодер

может быть любого

типа из описанных в гл. 6,

однако

на выходе он должен адресовать список адресов пере­ менной длины. Вид списка показан на рис. 7-9. Н а этом

154

рисунке справочник д л я наглядности изображен в виде дерева. При декодировании ключ X дает адрес А2, но которому содержится полное значение ключа. Если де­ кодер неоднозначного типа, например такой, как .«фик­

сированное

дерево» или рандомизированный, и если

ключ X по

адресу А2 не соответствует ключу

X запроса,

то в дополнение к полному значению ключа,

нотребовал-

Справочник

(Выход

справочника)

Инверти­

рованные )• списки

переменной

длины

Рис. 7-9. Дерево справочника и инвертированные списки.

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

чае у к а з ы в а л а бы на

другой

список

адресов, т а к ж е со­

д е р ж а щ и й в качестве

первого

слова

полный ключ. Если

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

роткому списку. В конце списка

адресов

д о л ж

н а быть

оставлена резервная зона таким

образом,

чтобы

при до-

155

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

к данному списку можно было без пе­

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

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

щий адрес. Если

резервное

поле исчерпано,

как

показа­

но на рис. 7-9

д л я

ключа Y, то последний элемент

в запи­

си содержит

адрес

связи

к другой записи

переменной

длины, где список продолжается . Когда файл восстанав­

ливается,

ключевые списки

снова собираются вместе

в единые

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

длины.

Процедура получения таких инвертированных спи­ сков в соответствии с логикой запроса была описана вы­

ше. Списки А , В и

С на рис. 7-6 соответствуют инверти­

рованным

спискам

на рис. 7-9.

 

7-7. ВРЕМЯ ВЫБОРКИ ИЗ ФАЙЛА

Время обработки

запроса в файле есть функция спо­

соба его

организации, характеристик З У П Д и количе­

ства записей, выбираемых из файла . Поэтому для под­

счета общего времени требуется определить

некоторые

параметры,

связанные

с файлом,

запросом и З У П Д . Не­

которые

из

этих

параметров,

например,

 

параметры

З У П Д , могут быть

взяты из характеристик

машины. Па­

раметры

организаций

файла определяются

статистикой

его

генерирования. Д л я других

параметров

можно ука­

зать

лишь

первое

приближение,

которое

по

желанию

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

В табл . 7-3 содержится список этих параметров и их

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

следую­

щие: общее число различных ключей (т. е. пары

 

имя/зна­

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

стеме Nr, среднее

количество ключей на запись Ni,; сред­

няя длина списка тогда приближенно вычисляется

как

N^Nh/V;

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

 

Cf, сред­

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

расчле­

ненных

системах

і ? 0 и среднее

количество

секторов

на

ключ Ck-

 

 

 

 

 

 

 

 

Все

п а р а м е т р ы

запроса

относятся к запросу,

состоя­

щему из одночлена. Если

запрос состоит из суммы про­

изведений, время

д о л ж н о

быть

умножено на количество

слагаемых . Среднее число термов (отрицаемых

и неотри-

цаемых

ключей)

в

слагаемом

запроса — Ni,

а

количест­

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

термов — Np.

Д л и н а самого

короткого

списка

ключей,

из

числа

составляющих

запрос, —

L s ,

15&

 

 

Т а б л и ц а 7-3

 

Параметры обработки

файла

Об ізначение

Определение

Тип параметра

V

Nr Nu

L

Cf

Rc

c f c

Nt

Np

L s

P a

A

Tr

Rt

R

Количество

различимых ключеіі Относятся к файлу

в словаре

записей

в системе

Количество

Количество

ключей

на запись

(среднее)

 

 

Средняя длина списка

(NrNh)/V

Количество символов на запись

влогическом файле (среднее) Количество записей на сектор

(среднее)

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

Количество

термов

в

слагае­

Относятся

к

за­

мом запросе

(среднее)

 

 

просу

 

 

Количество

неотрицаемых тер­

 

 

 

мов в слагаемом

запроса

(сред­

 

 

 

нее)

самого

короткого списка

 

 

 

Длина

 

 

 

в запросе

(средняя)

 

 

 

 

 

 

Отношение

числа запросов к L s

 

 

 

(среднее)

 

 

 

 

 

 

 

 

 

 

Отношение

числа

запрашивае­

 

 

 

мых секторов

к С\

(среднее)

 

 

 

Количество

адресов

записей

Относятся

к

уст­

файла на физическую

запись

ройству

 

 

Время

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

обраще­

 

 

 

ния ЗУПД

(среднее)

 

 

 

 

 

 

Скорость

передачи

данных из

 

 

 

ЗУПД (байт,

сек)

 

 

(сек)

 

 

 

Время оборота

ЗУПД

 

 

 

среднеее отношение числа к L s — р, а среднее отношение числа секторов, где расположен запрос, к среднему чис­ лу секторов на ключ (Си)—а.

З У П Д характеризуется следующими параметрами : количество адресов, которое можно запоминать в фи­

зической

записи ЗУПД

А. Среднее

время

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

доступа,

исключая

задержк и

и

время

считывания

с ЗУПД

ТТ, скорость

передачи

данных

из ЗУПД

RT

(байт/сек)

и врем я оборота З У П Д

R.

 

 

Времена поиска дл я структур мультисписковых фай­ лов, инвертированных файлов и файлов с последователь­ ным расположением секторов представлены в табл . 7-4.

157

 

 

 

Время поиска

списка

Т а б л и ц а 7-4

 

 

 

 

 

 

Процедуры

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

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

Секторно-последова-

список

 

тельный

список

 

 

 

 

 

Декодирова­

 

 

NrTn

 

 

 

 

ние по спра­

 

 

 

 

 

 

 

 

вочнику

 

 

 

 

 

 

 

 

Пересечение

 

г і

1

 

 

 

 

 

 

 

 

 

 

 

списка

(сек­

 

 

 

 

 

 

 

 

тора)

 

 

XNt(Tr+

 

1,5/?)

XNV(T,.

+ \,SR)

Поиск

и пе­

L,(Tr+

1.5Я)

PL5(Tr

+

\,5R)

 

 

 

ренос

записи

 

 

 

 

 

 

 

 

списка

(сек­

 

 

 

 

 

 

 

 

тора)

 

 

 

 

 

 

 

 

Д е й с т в и т е л ь н ое время

доступа

к записи

складыва­

ется

из времени

установки подвижной

головки

З У П Д

(Г,.),

времени ожидания

(R/2)

и

времени

считывания

дорожки (R) в предположении, что физическая запись занимает одну дорожку . Если физическая запись любой другой длины, то величина R интерпретируется как вре­ мя считывания записи и соответственно изменяется. Дл я З У П Д с фиксированной головкой 7Ѵ=0. Мультисписковый файл декодирует, например, с помощью /г-уровнево- го дерева все неотрицаемые ключи в терме запроса . Ин­ вертированный список декодирует все термы, а при структуре последовательных секторов декодируются только неотрицаемые термы. В мультисписковых систе­ мах пересечение списков до начала поиска файла не рас-

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

В

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

списковых

системах

нужно

просмотреть

LI А физических записей

(см. рис. 7-6)

для

к а ж д о г о

из Nt

ключей. Аналогично при

системе

по­

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

секторов д о л ж н ы

просматриваться

на

пересечение

CiJA

 

физических

записей

для

к а ж д о г о

из

Np

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

ключей. МуЛьтипоисковая система дол­

ж н а

просматривать к а ж д у ю

запись

самого

короткого

списка

Ls в файле, в то время

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

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

158

Т а к им образом, время поиска файла (исключая спра­ вочное декодирование) равно:

TML=Ls(Tr+\,5R);

 

 

(7-1)

TIL=(Nt[L/A}

+ pLs)

(7Ѵ+1.5Я);

(7-2)

Tes = Np [Си/А]

(Tr

+ 1,5R) +

aCk

(TT + M i - ) .

(7-3)

П о д с т а в л я я (7-1)

в

(7-2), получаем

соотношение

вре­

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

ными

системами

 

 

 

 

 

 

 

 

 

 

 

 

 

(7-4)

Поэтому поиск в

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

списке быстрее,

чем в

мультисписке,

если

 

 

 

 

 

 

 

/ 1

Nt

Г 1

1

 

(7-5)

 

Р < 1

- 7 7

Т

 

 

Это

неравенство

показывает,

что

чем

больше число

списков, подвергающихся пересечению Nu тем больше

физических записей приходится

на средний список

 

(LIA),

и чем меньше самый короткий

список

(Ls),

тем

вероят­

ней, что время выборки дл я

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

окажется

меньше, чем это время для инвертированного

 

списка.

Обычно неравенство (7-5) выполняется,

т а к как

у ж е

при

/Ѵ/>2

р очень мало. Например,

если Nt

= 3,

Л ='500,

L =

= 300

и L ä = 2 0 , то правая

часть

неравенства (7-5) равна

0,85.

Иначе говоря, чтобы

поиск

пересечений

инвертиро­

ванных списков заменить на просмотр самого короткого списка, плотность совпадений для последнего при конъ­ юнкции трех термов д о л ж н а превысить 85%. Можн о ожидать, что для трех термо-р будет в диапазоне 0,1— 0,25.

Следует предупредить читателя об осторожности при интерпретации и использовании этих формул. В некото­

рых системах могут быть использованы два

(или более)

типов

З У П Д . Например , дл я хранения

справочника

мо­

жет использоваться дисковая память, а ЗУ

на

магнит­

ных

полосках — для

хранения файлов,

а

возможно

и

инвертированных списков. В таких случаях

параметры

З У П Д , используемые

в формулах, д о л ж н ы быть

соответ­

ственно изменены.

 

 

 

 

 

159

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