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

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

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

Он т а к ж е содержит идентификатор

запроса

ID,

дей­

ствие, условие, функции обработки, выходное

устрой­

ство и выходной формат. Мультиобрабатывающая

 

Ис­

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

Программа

присваивает

к а ж д о м у

запросу

Область

Управления

Запросом

в реальном

масштабе

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

р а з м е щ а ю т с я

пара­

метры запроса

и списковые адреса.

 

 

 

 

 

В

оперативных

системах

часто

желательно

 

иметь

хотя

бы

минимальную

возможность

вести диалог,

в х о ­

де которого Исполнительная

Программа

передает

через

программы ввода-вывода Т е р м и н а л у

 

пользователя от

Декодирующего

Справочника

допоисковую

статистику.

К а к

выше указывалось,

некоторые

формы

организации

файла приспособлены лучше других для получения ка­

чественной

допоисковой

статистики.

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

если система

может вести

такой диалог,

некоторые ви­

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

тистики, продолжать ли

поиск в файле, модифицировать

ли запрос

или закончить

его. По

получении ответа

Ис­

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

Программа

Поиска

может принять

соот­

ветствующее решение. В первом случае она вводит но­ вую процедуру в исполнительную схему и в соответствии

со

стратегией просмотра ф а й л а

выполняет с

З У П Д

операцию произвольного чтения (или занесение)

записи,

после чего передает управление

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

файла

со

специфической привязкой к

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

QEA.

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

системы

поиска файла

от

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

Области

Управления

Запросом

QEA

в о з в р а щ а ю т с я

через

Испол­

нительную

Программу

Поиска к программе

вывода, где

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

в З У П Д с высокой скоростью

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

90

ка вместо программы вывода передает ответ в промежу­

точный

файл

(Fe на рис. 1-3).

Программы

Помимо

Оперативной

Исполнительной

(блок

1.2 на

рис. 1-3)

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

основных

субисполнительных программных компонентов. Ими

являются

(1)

Интерпретатор Запроса,

(2)

Исполнитель­

ная

Программа

Поиска,

(3)

Декодирующий

 

Справоч­

ник

Ключей,

(4)

Подсистема

Поиска

файла

и (5)

Программа

В-В. В

оставшейся

части

книги

рассматри ­

ваются в

основном

Декодирующий

Справочник

 

Ключей

и Подсистема

Поиска

Файла

как

имеющие

 

непосред­

ственное

отношение

к

методам

организации

файла .

Различные структуры файла влияют иа схему работы Исполнительной П р о г р а м м ы Поиска в режиме мульти-

работ

(Multitask),

поэтому

ее

работа т а к ж е

будет

вкратце рассмотрена.

 

 

 

 

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

рассмат­

ривать как двухступенчатый процесс. Первый

ш а г

сос­

тоит

в трансляции

ключей

с

помощью

Справочника

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

файла. Н а рис. 5-2 представлена

классификационная

диаг­

рамма

существующих методов

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

этих

двух

функций. В левой части

д и а г р а м м ы изображено

дерево с обозначениями различных методов организации

Декодирующего

Справочника

Ключей. Методы

эти

раз­

биваются на два класса, одни из них

относятся к

т а к

называемым методам

рандомизированного,

или

смешан­

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

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

согласно

дереву

или

справочной

таблице.

Рандомизиро ­

ванный

метод

имеет

несколько вариантов,

которые

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

функциональные

отличия. Первое из них заключается

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

Ключей

Постоянной

и

Переменной

длины. Н а естественном

языке полный

ключ

обычно

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

91

неоднозначности. Ключи Фиксированной Длины обычно допустимы, и тогда этот подход, вообще говоря, пред­ почтительней, потому что при этом программы декоди­ рования легче пишутся и быстрее в выполнении. К а к указано на рис. 5-2, существуют два общих метода при­ ведения полной длины ключа к фиксированной длине.

Первый из

них

состоит

ь выборке

из

ключа

фиксирован-

 

 

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

 

 

 

 

 

Поиск сайла

 

 

 

 

 

 

 

 

 

 

Управление

 

 

ключей по справочнику

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

— длиной

 

 

 

 

 

 

 

 

 

 

 

 

 

 

списка

 

 

Рандомизированный] Декодирование

 

 

 

Частичная

 

процесс

 

 

согласно

 

 

 

 

инверсия

 

 

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

дереву

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

список

 

 

 

 

 

 

 

 

 

 

^/У/і

Разбцени.8

 

 

 

 

 

 

 

 

 

 

 

•'//,{ по сектора-м

 

 

КЛЮЧ

 

 

 

 

Ключ

 

 

 

 

 

 

 

 

{риксированнои

 

переменной

 

 

 

 

 

 

 

 

 

длины

 

 

 

 

длины

 

 

 

 

 

 

 

 

Представ­

Рандомизи­

Полное

Однозначная

 

 

 

 

ленный

 

значение

выборка

 

 

 

 

выборкой

рованный

ключа

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 5-2. Двухступенчатый процесс выборки.

 

 

ыого набора символов или битов. Частным случаем та­

кого

преобразования,

используемого

во

многих

систе­

мах,

является

простое

усечение

ключа

до

заданного

числа символов. При втором способе

ключ

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

некоторой

 

рандомизированной

 

обработке,

 

переводящей

его

в

область,

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

фиксированным

числом

битов.

При

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

ключей , переменной

длины

т а к ж е

существуют д в а

подхода.

При

первом

из них

используется полное

значение

ключа.

Другой

 

состоит

у в том,

чтобы

найти

для

каждого

ключа

 

однозначную

^ выборку (или преобразование), сохраняющую от ключе­

вого

слова ту минимальную

часть, которая

необходима

д л я

того,

чтобы отличить его от всех

других

ключей си­

стемы. В

терминах объема

памяти

последний способ

92

Может окаааться фактически таким

же

экономичным,

как метод

ключей

фиксированной

длины,

обеспечивая

в то ж е время совершенно однозначное

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

Однако, как мы увидим ниже, метод

этот

достаточно

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

дерева, так

и для его

обновления и,

возможно,

обладает какими-

либо другими нежелательными свойствами.

 

Цель создания

методов

классификации состоит в том,

чтобы на

к а ж д о м

уровне

предоставить

проектировщику

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

личий в

свойствах декодеров.

Эти свойства будут рас­

смотрены

в гл. 6. Здесь ж е в

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

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

зированный подход предъявляет

меньшие

требования

к З У П Д

(иногда вовсе никаких), чем дерево. С другой

стороны,

дерево

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

свойством

в области

ключа,

необходимым

при выполнении опера­

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

дами в большинстве случаев сопоставимы.

На втором уровне

метод дерева ветвится на вариан-'

ты работы с ключами

фиксированной и переменной дли­

ны; издержки следует

отнести исключительно за счет

неоднозначности декодирования . Первым из них может

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

требую­

щую последующего просмотра полного значения

ключа

либо с помощью

другого субсправочника

(что сводится

к расходованию

дополнительной

п а м я т и ) ,

либо

за счет

времени поиска

в файле записей

(что снижает

эффек­

тивность) .

 

 

 

 

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

нию программирования

и выдвигает дополнительные

требования к

памяти

З У П Д .

Б о л ь ш а я

часть

про­

ектировщиков

предпочитает схему

с

ключами фиксиро­

ванной длины

из-за ее

простоты

и

еще

потому,

что

издержки в виде дополнительной памяти и потери эф ­

фективности

не

существенны.

 

 

Н а третьем

уровне

принятия решения

в

варианте

с ключами

переменной

длины возникает

з а д а ч а

выбора

93

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

памяти, но

сложней

дл я

программирования .

Кроме

того, если

необходим

поиск

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

значения

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

мощью

усечения

такую возможность

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

в то в р е м я как любые

другие

методы

выборки

или

рандомизация ключа ее не содержат .

 

 

 

 

Второй ша г оперативного процесса

поиска,

как это

указано в правой части рис. 5-2, состоит

в поиске

файла.

В а ж н е й ш е й характеристикой организации файла для

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

поиска

является

процесс,

описанный

в гл. 1 и 3

как

логическое разбиение.

Пусть

каждая

запись

ф а й л а

записана

в З У П Д

один

раз, и

при

этом

требуется получить доступ к этой записи с помощью лю­

бого

из ее ключей. Одновременно мы хотели

бы

полу­

чить

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

а щ и м

этот

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

кструктуре данных внутри записей?

Вконце 50-х и начале 60-х годов дл я внутренних операций с магазинными списками (в оперативной па­ мяти) были созданы методы программирования, наз­

ванные

списковыми

структурами

[Л. 7]. Эти методы опи­

саны

в

литературе

как

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

(threaded

list [Л. 8]), узловые

списки [Л. 9] и

последова­

тельные

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

(Multilist [Л. 10]). С

появлением

З У П Д

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

загрузки

и поиска

списковых

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

дов. Н а и б о л е е

общей среди этих структур является по­

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

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

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

тема Prywes и Gray; эти методы

мы будем в дальнейшем

называть или последовательными списками, или мульти­ списками без каких-либо то ни было дальнейших ссы­

лок.

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

каждый

ключ

единственным

адресом З У П Д ,

полученным

на вы­

ходе

Декодирующего

Справочника

Ключей; этим адре­

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

94

пись файла,

 

с о д е р ж а щ а я

этот

ключ,

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

с помощью

адреса

связи,

помещенного

внутри

записи

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

с

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

показано

на

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

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