русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Одинарный буфер


Дата добавления: 2014-11-28; просмотров: 1187; Нарушение авторских прав


 

Простейшим типом поддержки со стороны операционной системы является одинарный буфер (рис. 11.6,6). В тот момент, когда пользовательский процесс выполняет запрос ввода-вывода, операционная система назначает ему буфер в системной части основной памяти.

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

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



Рис. 11.6, Схемы буферизации ввода-вывода (ввод)

 

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

В книге [KNUT97] приводится грубое, но очень показательное сравнение процессов при использовании одинарной буферизации и при ее отсутствии. Предположим, что Т — это время, необходимое для ввода одного блока, а С — для вычислений, выполняющихся между запросами на ввод данных. Без буфе­ризации общее время выполнения, приходящееся на один блок, будет равно Т + С. При использовании одинарной буферизации время выполнения равно mах[С, Т] + М, где М — время, необходимое для перемещения данных из системного буфера в пользовательскую память. В большинстве случаев это время значительно меньше времени работы без буферизации.

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

В случае построчного ввода-вывода буфер может быть использован для хра­нения одной строки. Пользовательский процесс приостанавливается на время ввода, ожидая поступления целой строки. При операции вывода пользователь­ский процесс может разместить строку в буфере и продолжить работу. Необхо­димость приостановления этого процесса возникает только в том случае, если требуется вывод второй строки, в то время как первая еще не покинула буфер. При побайтовом вводе-выводе, взаимодействие операционной системы и пользо­вательского процесса следует модели производителя/потребителя, рассмотренной в главе 5, "Параллельные вычисления: взаимоисключения и многозадачность".

 



<== предыдущая лекция | следующая лекция ==>
БУФЕРИЗАЦИЯ ОПЕРАЦИЙ ВВОДА-ВЫВОДА | Двойной буфер


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.