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

книги из ГПНТБ / Зубов В.С. Математическое обеспечение цифровых вычислительных машин и систем учеб. пособие

.pdf
Скачиваний:
4
Добавлен:
23.10.2023
Размер:
4.93 Mб
Скачать

-2 0 -

произвсшьной, но одинаковой для обеих последовательностей длины, содержащий, как минимум, I элемент. Следовательно,

началом всех последовательностей будет общий элемент, име­ нуемый корнем. Уровнем или ярусом дерева будем именовать подмножество элементов, имеющих одинаковый номер в последо­ вательностях, называемый номером яруса. Последние элементы последовательностей называются листьями дерева. Листья мо­ гут представлять внешние по отношению к дереву структуры данных, т .е . иметь природу, отличную от природы других эле­ ментов дерева, называемых узлами или вершинами. Согласно нашему определению, любой узел , (а также корень) связан с несколькими узлами или листьями, следующими непосредствен­ но за ним в последовательностях и именуемыми его частным подмножеством. В двоичном дереве частные подмножества со­ держат не более, чем 2 элемента. Все элементы, следующие за некоторым узлом, образуют вместе с ним поддерево, корневой точкой которого является этот узел.

Графически дерево изображается направленным графом без пиклов и петель (некоторые структуры данных, например, фра­ зовые языковые структуры, изображаются ориентированным гра­ фом, в котором могут быть циклы и петли). Использование де­ ревьев в реальных структурах предполагает определение неко­ торые процедур, так как в одних случаях узлы дерева пред­ ставляют описания объектов или списки описаний (как элемен­ ты в массиве), а в других случаях последовательности, со­ ставляющие дерево, аналогичны строкам (деревья-"словари’1) .

Структуры данных не подвергаются изменениям внутри ЭВМ лишь при простейшем использовании исходных данных. Для ши­ рокого круга задач обращение к данным по их месту в исход­

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

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

ичасто именуемыми таблицами. информационными массивами ищп

§4 .Структура оперативной памяти ЭВМ; её надстройка

Обычно при рассмотрении задач автоматической обработки данных выделяются следующие типы операций над ними: опера­ ции над числами с плавающей запятой, над числами с фиксиро­ ванной запятой, операции адресной арифметики, операции над векторами, в том числе, и над' логическими, состоящими из битов. Стремление к непосредственной адресации всех указан­ ных единиц данных ведёт к адресации мелких компонент памя­ ти: байтов (байт состоит из 8 битов) или даже двоичных раз­ рядов, и заданию в командах, использующих данные переменной

-2 2 -

ДЛИНЫ, как их длины, так и адреса их начальной компоненты.

Некоторые единицы данных постоянной длины при этом также оказываются состоящими из нескольких компонент, например,

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

свою очередь, векторы более мелких адресуемых единиц.

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

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

При наиболее общем рассмотрении следует,до-ввдимоцу,

различать 3 способа адресации: способы подразумеваемой,

прямой и косвенной адресации (классификация видов адресации в машинно-ориентированных языках более обширна). При под­

разумеваемой адресации местоположение операнда некоторым

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

манда. Такие операнда именуются буквальными или литералами.

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

циальный код

операция,либо специальный символ в адресной части.

В случае

прямой адресации*положение операнда задаётся

-2 3 -

НОМврОМ адресуемого элемента памяти, где операнд размещён.

При косвенной адресации в коде команды указывается адрес

не самого операнда, а элемента, где хранится адрес операнда.

Назовём его К-элементом. Если множество К-элементов имеет

меньшую мощность, чем множество элементов адресуемой памяти,

применение косвенной адресации ведёт к сокращению длины ад­ ресной части команды. При обработке данных, расположенных в

памяти последовательно, одним и тем же блоком команд испо­

льзование косвенной адресация позволяет сохранять неизменной их кодировку. Распространённым случаем является совместное использование прямой и косвенной адресации, когда действите­ льное положение операнда определяется сумюй прямого адреса и содержимого К-элемента. Здесь типичными являются. 2 случая;

а) Относительная базовая адресация. Прямой адрес опреде­ ляет базу - начало (конец) отсчёта адресов, содержимое К-

элемента, именуемого в данном случае индексным регистром или ячейкой, задаёт положение адресуемого им элемента отно­ сительно базы. Неизменность кодировки команд в этом случае ведёт к уменьшению затрат на переадресацию и восстановление исходного состояния программы, выполняемых изменением содер­ жимого К-элемента (или нескольких К-алементов).

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

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

отра для использования согласно случаю "а ". Базовые регистры используются в современных ЭВМ с целью обеспечения перемеща­ емости программ и сокращения длины адресной части команды.

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

ны памяти без переработки адресов в программе. Содержимое

базовых регистров устанавливается операционной системой или загрузчиком вычислительной системы.

Характерным случаем оовместного использования прямой и

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

и адреса, содержащегося внутри неё.

Реальное представление списка, под которым в общем олу-

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

стей, а чаще - единственная последовательность, определяет­ ся способом получения адресов его элементов. Рассмотрим

типичные случаи.

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

Следствием используемого способа задания адресов является возможность прямого обращения к элементам списка типа А по ах номерам и необходимость реорганизации списка при добавле-

-2 5 -

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

жет быть выполнено физическим его устранением, что также требует реорганизации списка, либо символическим способом -

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

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

Б. Список, заданный последовательностью поягмнх адресов,

которая имеет вид списка типа А и именуется оглавлением.

Обычно элемент оглавления содержит адрес первой ячейки из каждой группы ячеек, занятых одним элементом данных. Список типа Б (рис. 2 ) позволяет более гибко использовать память для

в е к т о р а д р е с у е м ы х э л е м е н т о в памяти (элементы данных изображены отрезками)

Рис.2. Пример списка элементов данных, заданного оглавлением (адресные связи показаны стрелками).

-2 6 -

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

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

можно осуществить многоуровневую косвенную адресацию. При этом в простейшем случае образуется список адресов К -эле-

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

именуемый односвязным цепным списком. Каждый из К-элемен-

тов содержит адрес следующего. Замыкает список К-элемент,

содержащий не адрес, а специальный признак конца. Адрес первого К-элемента указывается в специально выделенном эле­ менте памяти, называемом фиксатором начала (подобным обра­ зом можно также фиксировать конец списка). Содержимое К-эле-

мента именуется адресом связи. Адреса связи представляют служебную информацию. При организации о помощью цепного списка структур данных каждый из К-элементов может входить в список типа А, являющийся информационным элементом, ог­ лавлением или списком фиксаторов начал ответвляющихся цеп­ ных списков (тем самым задаётся т .н . собственная информа­ ция). Б этот список может входить сразу несколько К-эле­ ментов, относящихся к различным односвязным ценным спискам.

-2 7 -

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

ковой структурой. Возможны и более сложные случаи.

Г. Многоовязный список типа дерева. В случае, если каж­ дый К-элемент содержит адреса двух других К-элементов, обра­ зуется разветвлённый список, имеющий вид двоичного дерева и называемый дихотомическим цепным списком. Узел древовидного цепного списка является списком, содержащим более одного ад­ реса связи и, возможно, собственную информацию. Содержимым адреса связи (К-элемента) является база адресуемого им узла.

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

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

этот описок.

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

- 2 8 -

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

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

виде списков типа А ( "гнёзд") , связанных в единую последо­ вательность адресами связи.

Ввиду ограниченного объёма настоящего пособия здесь

не рассматривается общая структура памяти ЭВМ.

§

5. Примеры отображения некоторых

абстрактных

 

структур в памяти ЭВМ

'

а)

Магазин. Для реализации магазина

пригодны списки ти­

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

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

Новым содержимым фиксатора становится адрес этого К-элемен-

та. Совместно с новым К-элементом в списке типа А размещает­ ся' либо включаемый элемент данных, либо адрес последнего.

При исключении элемента адрес связи из К-элемеита, указанно­

- 2 9 -

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

альным списком, то адрес исключённого К-элемента должен быть при этом занесён в указанный список. Реализация очереди отли­ чается от реализации магазина лишь в деталях. Для стека при­ годны списки типа А и Б.

б) Массив. Массив может быть уподоблен иерархически упо­ рядоченному множеству, если в его подмножества высшего уров­

ня объединять все элементы с одинаковым первым индексом, а в составляющие их подмножества - элементы с одинаковым вторым

индексом и т.д.(последовательность рассмотрения индексов мо­ жет быть и обратной). Такое представление позволяет отобра­ зить массив на вектор памяти в виде последовательности эле- ■

ментов, имеющей в нашем восприятии сложную структуру: в ней

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

дующего уровня и т .д . Иерархия индексов может.быть задана

произвольно. Если старшинство индексов соответствует величи­

неих номеров в

списке индексов, то

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

бого

элемента

 

некоего массива array ВВ■;

 

(J6)

может быть

получен по формуле: №=

I + Z

(/* 7 “ Дп)*Дт7»

« e B j - I .

( V l 4 n

Г « Л

и г

" * i

 

 

Для ускорения вычисления номера #

значения величин Д 77 и

суммы

 

могут быть

вычислены лишь раз

и занесены в

 

/77=1

 

 

 

 

 

опреде­

память.

Число умножений при вычислении номера места

ляется

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

совме­

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

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