русс | укр

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

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

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

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


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

Поточно-ориентированные.


Дата добавления: 2013-12-23; просмотров: 1614; Нарушение авторских прав


Блочно-ориентированные

Некоторые методы буферизации, поддерживаемые операционными системами для повышения производительности (рис. 11.5).

Прочитать байты из буфера.

Записать байты в буфер

Нас интересуют общие требования синхронизации процессов.

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

Аналогичным образом при выполнении ввода высший уровень должен быть способен начать выборку данных из буфера, как только они там появятся.

Важно также, чтобы доступ процессов к буферам был синхронизирован.

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

 

Рис.11.4. Методы буферизации операций ввода-вывода

При рассмотрении различных методов буферизации важно учитывать, что существуют устройства ввода-вывода двух типов:

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

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



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

Простейшим типом поддержки со стороны операционной системы является одинарный буфер.

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

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

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

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

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



<== предыдущая лекция | следующая лекция ==>
Буферы и синхронизация | Основные понятия.


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


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

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

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


 


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

 
 

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

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