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

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

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

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

Добавлен: 19.10.2024

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

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

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

где INT является целым числом, a R— дробным остат­ ком. Затем обозначим:

 

 

 

I N T _ M = I N T ;

 

 

 

 

 

 

I N T + [X]

=

I N T + 1 ,

если

 

ЯфО,

 

 

INT,

 

если

R =

0.

 

 

 

 

 

 

 

Если объем доступного на д о р о ж к е пространства

ра­

вен

Ci—Сг, то для

постоянного

дерева

 

 

 

 

/га =

I N T .

Г

с - * ~

с '

С I

1

 

(6-1)

 

 

 

 

С, +

С 0

+

 

 

 

а для переменного

дерева

 

 

 

 

 

 

 

 

 

/л =

I N T .

Ct

— Cr —

NdCn

 

(6-2)

 

С , +

C a

+

C t

 

 

 

 

 

 

 

 

 

 

Так как на нижнем уровне любого дерева должны

иметься все ключи словаря Nu, исключая остаток,

ча­

стично заполняющий одну д о р о ж к у

на

следующем,

бо­

лее

высоком уровне [например,

ВАВВ

на

д о р о ж к е

Too

(рис. 6-1)], то количество дорожек, требуемых для со­ хранения низшего уровня я-уровневого дерева, равно:

 

tftn

= I N T _ [ ^ - ] . •

 

(6-3)

К а ж д а я д о р о ж к а

следующего

(более

высокого)

п1-го уровня

дерева

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

m д о р о ж к а м уров­

ня п или количеству фрагментов ключей,

равному

тг.

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

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

из Nu

ключей

тре­

буется WT+[Nh/m2] дорожек на уровне п1. Все пред­ шествующие уровни, включая первый, должн ы также равняться INT+, а для хранения каждого последующего (более высокого) уровня требуется \/т дорожек, исполь­ зуемых д л я хранения предыдущего уровня. Поэтому при­

водимые ниже формулы дают возможность

рассчитать

количество дорожек, требуемое д л я

хранения каждого

уровня дерева в З У П Д :

 

 

tftn=INT_

 

 

 

il—

(6-4)

i = l.

1;

 

 

(6-5)

Md = CiNi.

 

(6-6)

118


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

Mc = Nu_(Ci + Ca);

Md = C t i

N t i .

:

о

I

f

( 6 _ 7 )

I

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

хранения ключей

З У П Д

(т. е. можно хранить ключи

в выходном уровне д е р е в а ) . В этом

случае

формула (7)

читается следующим

образом:

 

 

 

 

 

Ntt(C,

+

Ca)-\

 

 

A f l a

 

 

N

1

>

(6-7а)

 

= I N T +

 

 

 

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

значения

Nu

в

формуле (6-4) для

т > 1 0 и Nh в диапазоне

до

100 000,

можно

увидеть, что

Nti^^Nin

при

і = І ,

 

п—1.

 

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

 

Nt~Nln

= mT_

 

 

 

(6-8)

На

рис. 6-6 иллюстрируется

применение

формулы

(6-4)

к трехуровневому дереву при m = 4 и Nk = 22.

К а ж ­

дая горизонтальная

п р я м а я обозначает

дорожку .

Вер­

тикальные штрихи на этих прямых р а з д е л я ю т

логиче­

ские записи (тройки

фрагментов

ключей),

а косые

штри-

Уровень1

ИровеНьг

Уровень 3 ^

•4 3 2 /

20 1818 17

1В 15 П13

12 11 10 3

8 7 S 5

Рис. 6-6. Пример трехуровневого дерева.

119

 



хи обозначают резервное пространство дорожки . Из при­

веденных формул • на

рис. 6-6

ясно,

что Nt3

есть целая

часть отношения 22/4,

р а в н а я

5; Ntz

равно

отношению

22/42 =22/16, которое равно 2 (берется целая часть плюс единица), a Nu — отношению 22/4 3 = 22/64, равному еди­ нице (берется целая часть плюс единица) . Следуя про­ цедуре создания дерева, показанного на рис. 6-1, необ­ ходимо полностью заполнить пять д о р о ж е к по четыре ключа е а д о р о ж к у (для ключей от 1-го д о 20-по). Объем памяти, требуемый для хранения второго уровня, равен

одной

полной д о р о ж к е

(рис. 6-6). Д л я того чтобы мож­

но

было о б р а щ а т ь с я к

пятой

д о р о ж к е

третьего

уровня,

т.

е. к

дорожке, с о д е р ж а щ е й

ключи

от 17-го до

20-го,

необходимо хранение одной записи на второй дорожке второго уровня. Остальные дв а ключа, 21-й и 22-й, по­ мещаются в две из оставшихся трех записей второй до­ р о ж к и второго уровня. Резервное пространство этой до­ рожки равно, таким образом, н а ч а л ь н о м у резервному пространству плюс одна неиспользованная запись. Дл я того чтобы обеспечить две дорожки второго уровня, тре­

буется только одна

д о р о ж к а

 

первого уровня.

Следова­

тельно, словарь с 22 ключами требует

одну д о р о ж к у для

хранения

первого

уровня

дерева,

две — дл я

второго и

пять — д л я

третьего

уровня

 

(на

к а ж д о й

д о р о ж к е

хра­

нится по четыре

к л ю ч а ) .

 

 

 

 

 

 

 

 

 

 

 

 

Если хранить

первой уровень

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

памяти,

то требуется только две логические записи

типа

фраг­

мент ключа/двойной

адрес

[т. е.

 

 

Mc—2(Cf+Ca)].

 

Рассмотрим наиболее

распространенные

случаи.

1. Трехуровневое

дерево:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

iWft = 20000;

 

 

 

 

 

 

 

 

 

 

m =

100;

 

 

 

 

 

 

 

 

 

yVt3

=

I N T . ? ^

=

200;

 

 

 

 

 

 

Л ^ =

Ш Т +

2

0

ÎOO2

' «- '

 

 

 

 

 

 

 

 

 

 

0

0

0

 

 

 

 

 

 

 

 

д.

 

 

 

20 000

,

 

 

 

 

 

 

 

 

 

Wt = 203.

 

 

 

 

 

 

З а м е т и м , что так как m значительно

больше

10, то

приближение Ni^Nt3=200

 

является

весьма

точным.

120


2.

Двухуровневое

дерево:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Wh = 20 ООО;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

=100;

 

 

 

 

 

 

 

 

 

 

 

 

 

Nu =

\ЫТ_

20 ООО

=

200;

 

 

 

 

 

 

 

 

 

 

 

100

 

 

 

 

 

 

 

 

 

 

 

 

 

л ,

т

м ^

20 000

- =

0

2.

 

 

 

 

 

 

 

 

 

tft1 =

 

I N T +

- r o 5 ï

 

 

 

 

 

 

 

 

6-5-2.

Формулы дл я р а н д о м и з а т о р а

 

 

 

Требуемый дл я декодера с рандомизацией объем

 

памя ­

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

однако дл я

обобщенных рандомизаторов, показанных

на

рис. 6-4 и

6-5, применимы следующие

формулы .

 

 

 

 

 

Д л я рис. 6-4:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Md= - ^ 5 - + Nk

[ c f c + C , + 1 +

 

 

 

 

+ ( ^ r ) c

« + c « ] =

 

( c " + c < + 2 C « +

! > -

 

(6-9)

 

 

 

 

Для рис.

6-5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Md

= N*Ca

 

 

 

 

 

a— 1

{Ca +

Cf)

 

 

 

 

 

 

Cffl

 

 

l

- f d

+

Ca +

2

 

 

(6-10)

 

 

 

 

 

 

 

 

 

При расчете по формуле (6-9)

дл я хранения

уровня

косвенной

адресации

требуется

Nul о,

областей,

к а ж д а я

из которых

содержит

адрес

записи,

хранимой в

З У П Д .

При

словаре ключей

объемом 20 000

слов и

выделении

(при

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

из к а ж д о г о

ключа 10 бит создает­

ся 1024

кода, причем

среднее

количество

избыточных

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

(т. е.

средняя

длина

цепи

а)

 

равно:

20000/1024 ~20 . Таким

образом,

объем памяти (в сим­

волах), требуемый дл я хранения

уровня косвенной

адре­

сации, равен NkCJu.

Д л я к а ж д о г о

 

из Nu

ключей,

полу­

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

чество символов:

дл я

полного

ключа — 6\;

дл я

длины

списка — Са;

дл я

цепного адреса — Са (если

есть

цепь),

и для адреса

ссылки

на выход

декодера — Са.

 

М о ж н о сэкономить

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

ную запись

символ,

у к а з ы в а ю щ и й существование цеп-

121