Cтраница 2
При обращении CPU к основной памяти производится сравнение битов 11 - 19 исполнительного адреса с элементами двух строк в индексном массиве для буферной колонки, задаваемой битами 20 - 26 исполнительного адреса. При совпадении адресов строки и полублока полублок передается CPU из буферной памяти, и при этом нет необходимости обращаться к основной памяти. [16]
Для многих приложений никогда не возникает необходимость физического перемещения данных в соответствии с порядком размещения соответствующих индексов, и можно получить к ним доступ в нужном порядке, используя индексные массивы. Если в силу некоторых причин такой подход не устраивает, возникнет необходимость решить обычную проблему из области классического программирования: каким образом сделать так, чтобы записи файла, подвергаемого индексной сортировке, заняли свои места в соответствующем порядке. [17]
Подобным образом BCU учитывает содержимое индексного массива во время выполнения процессором операций засылки в основную память, при этом производится запись в буферную память только в том случае, если адрес строки и указатель полублока, в который делается запись, совпадают с одним из двух элементов в индексном массиве для данной колонки. [18]
Индексно-последовательный способ применяют в тех случаях, когда информацию последовательно располагают в блоках. Причем есть индексный массив, в котором указывают значение самого высокого ключа в блоке. Подобная организация позволяет установить местоположение блока с искомой записью без просмотра большого числа индексов. [19]
Отметим, что для элементов, имеющих общие узлы, в индексных массивах номера степеней свободы, принадлежащие общим узлам, равны. В дальнейшем индексными массивами будем пользоваться при записи уравнений равновесия узлов. [20]
Отметим, что для элементов, имеющих общие узлы, в индексных массивах глобальной нумерации номера степеней свободы, принадлежащие общин узлам, равны. В дальнейшем индексными массивами будем пользоваться при записи уравнений равновесия узлов. [21]
Способ произвольного обращения с помощью индексов предполагает непосредственное нахождение записи на диске по ее ключу. При этом создают один индексный массив, в котором можно по ключу отыскать номер дорожки и порядковый номер на дорожке искомой записи. Но при такой организации индексные массивы достигают значительной величины, что приводит к дополнительным расходам дорогостоящего носителя информации. Кроме того, при большом числе ступеней индексных массивов время поиска одной записи может стать значительным. [22]
При разработке реализации применяется в точности такой же подход, который использовался при индексной сортировке в разделе 6.8. Мы манипулируем индексами и перегружаем операцию operatoK таким образом, что сравнения адресуются к элементам массива индексов клиентской программы. С этой целью добавляется второй индексный массив, обеспечивающий отслеживание положения ключей в очереди по приоритетам. [23]
![]() |
Связь между основной памятью, буферной памятью и индексным. [24] |
Индексный массив также содержит две строки по 128 колонок, что точно соответствует блокам буферной памяти. На рис. 7.5 показана структура кода элемента индексного массива. Поле адреса в строке содержит адрес блока данных в основной памяти, который занимает соответствующую позицию в буфере. Левый старший бит указателя полублока связан со старшим, полублоком, а правый бит указателя полублока соответствует младшему полублоку. Бит контроля ( Ж указывает правильность работы соответствующих позиций в буфере и индексном массиве. [25]
Программа 6.11 представляет собой пример сортировки по указателю, к рассмотрению которой в обобщенном виде мы сейчас перейдем. Другой простой подход к проблеме сортировки без ( непосредственных) перемещений элементов заключается в построении индексного массива, причем доступ к ключам элементов осуществляется только для того, чтобы выполнить операцию сравнения. Чтобы получить эффект сортировки, используется второй массив, массив а индексов элементов. [26]
Под индексным массивом понимают массив, состоящий из записей малого объема, каждой из которых соответствует запись большого объема в основном массиве. [27]
Способ произвольного обращения с помощью индексов предполагает непосредственное нахождение записи на диске по ее ключу. При этом создают один индексный массив, в котором можно по ключу отыскать номер дорожки и порядковый номер на дорожке искомой записи. Но при такой организации индексные массивы достигают значительной величины, что приводит к дополнительным расходам дорогостоящего носителя информации. Кроме того, при большом числе ступеней индексных массивов время поиска одной записи может стать значительным. [28]
Чтобы сортировать данные несколькими способами, создайте несколько индексных массивов иуправляйте ими по отдельности. При вставке и удалении записи необходимо отдельно обновлять каждый индексный массив. [29]
Для массива с двойной последовательной организацией, при которой каждая запись имеет два ключа, процесс обновления может быть осуществлен следующим образом. Если главный массив организован по одному из ключей, а индексный - по другому, то текущие данные с ключами, совпадающими с ключами главного массива, после проверки и сортировки обрабатываются непосредственно с главным массивом. Текущие данные, имеющие ключи, совпадающие с ключами массива индексов, обрабатываются с индексным массивом. [30]