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

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

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

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

Добавлен: 19.10.2024

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

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

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

ключей. Поскольку процесс объединения или-группиров­ ки аналогичен традиционным библиотечным з а д а ч а м классификации и каталогизации, его можно представить себе как з а д а ч у автоматической классификации . По­ строенные на основе ее решения классификационные схе­ мы и тезаурус наравне с печатными каталогами могут быть полезны при формулировке запроса . В приложении 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