Cтраница 1
![]() |
Возможные состояния заполненности очереди. [1] |
Алгоритм циклического буфера представляет другой подход к реализации очереди. При этом структура данных рассматривается в виде цилиндрической поверхности, на которой, как на магнитном диске, элемент с наименьшим адресом следует за элементом с наибольшим. [2]
Размещение циклического буфера может вызывать появление дополнительных промежутков вследствие выравнивания - буфера. Компоновщик выравнивает секцию, основываясь на размере наибольшего входящего в нее циклического буфера. [3]
![]() |
Возможные состояния заполненности очереди. [4] |
На рис. 5.10 и 5.11 показаны блок-схемы и текст программ для работы с очередями по алгоритму циклического буфера. [5]
Если указана одна из директив выравнивания в файле конфигурации памяти или опция автоматического выравнивания буферов, тогда циклические буфера извлекаются из секций и размещаются в памяти процессора перед остальными перемещаемыми блоками. При этом компоновщик перемещает код и данные так, чтобы заполнить образовавшиеся промежутки. Компоновщик сортирует буфера по размеру, помещая первым в памяти наибольший буфер. Автоматическое выравнивание работает только с перемещаемыми буферами. Буфер, определенный внутри перемещаемого оверлея, не может быть автоматически выровнен. [6]
![]() |
Поддержка разрядности доступа для вычислений адреса и обновления регистров.| Выравнивание адреса памяти. [7] |
Эти типы арифметики обеспечивают простоту создания структур данных в памяти для очереди FIFO, линий задержки, циклических буферов, стеков и буферов с реверсивными битами для БПФ. [8]
Команды циклического сдвига работают со своими операндами и с битом С так, как если бы они вместе образовывали 17-разрядный циклический буфер. При циклическом сдвиге влево MSB сдвигается в бит С, бит С сдвигается в LSB, а все остальные сдвигаются на одну позицию влево. При циклическом сдвиге вправо выполняются обратные действия. Вместе эти операции позволяют анализировать - модифицировать отдельные биты. [9]
Драйвер телетайпа терминала позволяет использовать его в качестве обычного терминала системы с разделением времени. Циклический буфер дает возможность получать данные по телефонным линиям связи со скоростью 2400 бод, а печатать их на телетайпе со скоростью ПО бод. При продолжительных сеансах работы с терминалом невысокая скорость и шум телетайпа могут стать раздражающими факторами. Для преодоления этих трудностей был написан эмулятор алфавитно-цифрового дислея, клавиатурой которого является клавиатура телетайпа, а экраном-экран графического дисплея. [10]
Драйвер телетайпа терминала позволяет использовать его в качестве обычного терминала системы с разделением времени. Циклический буфер дает возможность получать данные по телефонным линиям связи со скоростью 2400 бод, а печатать их на телетайпе со скоростью 110 бод. При продолжительных сеансах работы с терминалом невысокая скорость и шум телетайпа могут стать раздражающими факторами. Для преодоления этих трудностей был написан эмулятор алфавитно-цифрового дислея, клавиатурой которого является клавиатура телетайпа, а экраном - экран графического дисплея. [11]
Этот модуль реализует небольшой циклический буфер, который можно использовать для координации действий поставщика и потребителя. Вход deposit ( положить) обычно используется поставщиком для сохранения в буфере литеры. Потребитель вызывает withdraw ( изъять) для извлечения литеры из буфера. И тот и другой могут опросить переменную cnt, чтобы узнать число имеющихся в данный момент в буфере литер. [12]
Размещение циклического буфера может вызывать появление дополнительных промежутков вследствие выравнивания - буфера. Компоновщик выравнивает секцию, основываясь на размере наибольшего входящего в нее циклического буфера. [13]
При использовании больших блоков двойная буферизация может также применяться, но резервирование буферов для двух больших блоков приведет к большим расходам оперативной памяти. Один способ решения этой проблемы заключается в использовании ( для каждого потока) циклического буфера передачи, размерами слегка превосходящего размеры дискового блока, из которого информация передается на дисплей или в сеть. Когда количество полезной информации в буфере снижается до некой пороговой величины, с диска считывается следующий большой блок, его содержимое копируется в буфер передачи, а большой буфер блока возвращается в общий пул. Размер циклического буфера передачи должен быть выбран так, чтобы при достижении данными пороговой отметки в нем было достаточно места для другого полного дискового блока. Прямое чтение с диска в циклический буфер передачи невозможно, так как данные в нем располагаются как бы по кругу. Таким образом, копирование данных и использование оперативной памяти представляют собой компромиссный вариант. [14]
![]() |
Косвенная регистровая адресация.| Линейная модификация адресов. [15] |