Cтраница 2
Функции передачи данных через последовательный интерфейс позволяют одновременно управлять двумя интерфейсами такого типа. При этом с их помощью для каждого порта создается свой кольцевой буфер для чтения и записи данных, осуществляются прием и выдача управляющих сигналов, опрос состояния коммуникационных регистров. Эти функции работают непосредственно с оборудованием и не используют BIOS, а также других вызовов операционной системы. [16]
Каждому устройству в системе на этапе генерации отводится 32-словный блок описания устройства, куда на этапе генерации и модификации системных параметров заносится информация об устройстве, включающая адрес первого регистра устройства, тип интерфейса между терминалом и процессором ( адаптер дистанционной связи или мультиплексор), видеотерминал или устройст-ва с твердой копией, признак использования модема, параметры линии, если используется мультиплексор. В процессе работы монитора в блок описания устройства записывается адрес кольцевого буфера, указатели ввода-вывода из кольцевого буфера, счетчики принятых и выведенных знаков, координаты вывода знака и другая информация. [17]
Каждому устройству в системе на этапе генерации отводится 32-словный блок описания устройства, куда на этапе генерации и модификации системных параметров заносится информация об устройстве, включающая адрес первого регистра устройства, тип интерфейса между терминалом и процессором ( адаптер дистанционной связи или мультиплексор), видеотерминал или устройст-ва с твердой копией, признак использования модема, параметры линии, если используется мультиплексор. В процессе работы монитора в блок описания устройства записывается адрес кольцевого буфера, указатели ввода-вывода из кольцевого буфера, счетчики принятых и выведенных знаков, координаты вывода знака и другая информация. [18]
С другой стороны, важно эффективно использовать пространство. Необходимость экономить пространство памяти часто противоречит естественному желанию сделать буфер больше, для того чтобы иметь возможность обрабатывать большие массивы данных. Одним из недостатков кольцевого буфера является его фиксированный размер. В более эффективных буферных системах пространство занимается и освобождается динамически в соответствии с необходимостью. [19]
Микропроцессор Intel 8080 через мультиплексированный 8-разрядный аналого-цифровой преобразователь производит последовательное считывание информации с четырех каналов ввода и ее хранение IB 32 байт ОЗУ, выполняющего функции кольцевого буфера. После необходимой задержки с помощью микропроцессора информация выводится через четыре ЦА-преобразо-вателя. В двух программируемых ПЗУ по 256 байт хранятся 334 байт программы. Частота считывания каждого из четырех вводимых сигналов может быть установлена нажатием соответствующих клавишных переключателей. Для полного заполнения кольцевого буфера результатами 30 720 считываний, независимо от частоты отсчета, осуществляется автоматическая установка задержки. Предположим, например, что считывание сигналов с первого канала ( ЭКГ) производится с частотой 256 отсчетов в 1 с, а со второго а третьего ( формы сигналов дыхания) - с частотой отсчета 128 в 1 с; четвертый канал остается незадействованным. [20]
Он заключается в следующем: когда оверлей подходит близко к концу буфера, он ставится на проверку. Если в течение некоторого испытательного срока происходит вызов подпрограммы, которая находится в данном оверлее, то ему будет дана отсрочка и он не будет выгружен из памяти. Вместо этого он будет переброшен в начало буфера и сможет сделать еще один круг по нему. Если же за это время вызов не поступит, то оверлей при первой же необходимости будет выгружен из памяти. Таким образом, наиболее часто используемые оверлеи хранятся как бы в кольцевом буфере, в то время как малоактивные выходят из буфера без задержек. [21]
Он начинает с того, что считывает содержание самого первого сегмента журнала, чтобы определить, какие i-узлы и файлы находятся в нем. Затем он смотрит в текущий массив i-узлов, проверяя, являются ли i-узлы все еще текущими и используются ли все еще блоки файлов. Если нет, то эта информация отбрасывается, а все еще использующиеся i-узлы и блоки считываются в память, чтобы записать их в следующий сегмент. Исходный сегмент помечается как свободный, поэтому журнал может использовать его для новых данных. Таким образом, чистильщик двигается по журналу, удаляя старые сегменты с диска и помещая всю имеющую ценность информацию в память для перезаписи в следующий сегмент. В результате диск представляет собой большой кольцевой буфер, в котором пишущий поток добавляет новые сегменты с одного конца, а чистящий процесс удаляет старые сегменты с другого. Учет расположения блоков здесь весьма нетривиален, поскольку, когда блок файла записывается в новый сегмент, i-узел файла ( где-то в журнале) должен быть найден, обновлен и помещен в буфер для записи в следующий сегмент. При этом массив i-узлов также должен быть обновлен, чтобы элемент массива указывал на новую копию. Тем не менее администрирование такой системы вполне возможно, а увеличение производительности показывает, что все эти сложности были не напрасны. Приведенные в цитированной выше статье результаты измерений показали, что файловая система с журнальной структурой LFS превосходит систему UNIX при множестве небольших записях на порядок, а при чтении и больших записях обладает сходной или лучшей производительностью. [22]
![]() |
Шесть стадий конвейера в машине picoJava II. [23] |
Если, например, стек операндов состоит из двух слов, то в регистровом файле может находиться до 62 слов локальных переменных. Естественно, при помещении еще одного слова в стек возникает проблема. Происходит так называемый дрибб-линг - это когда одно или несколько слов, находящихся глубо ко в стеке, записываются обратно в память. Точно так же, если несколько слов выталкиваются из стека операндов, в регистровом файле освобождается место, и поэтому некоторые слова, находящиеся глубоко в стеке, могут перезагружаться в регистровый файл. Специальные регистры на микросхеме определяют, насколько полным должен быть регистр, чтобы слова из нижней части стека записывались в память, и насколько пустым он может быть для того, чтобы перезагрузить регистровый файл из памяти. Чтобы легко произвести дрибблинг без копирования, регистровый файл действует как кольцевой буфер с указателями на самое нижнее и на самое верхнее слова. Дрибблинг происходит автоматически всякий раз, когда регистровый файл переполняется или пустеет. [24]