русс | укр

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

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

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

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


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

БУФЕРИЗАЦИЯ ОПЕРАЦИЙ ВВОДА-ВЫВОДА


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


 

Предположим, что пользовательскому процессу необходимо выполнить счи­тывание блоков данных длиной по 512 байт по одному с магнитной ленты. Дан­ные будут считаны в область внутри адресного пространства пользовательского процесса с виртуальным адресом от 1000 до 1511. Наиболее простой путь реше­ния этой задачи — выполнение команды ввода-вывода (что-то наподобие Read_Block [1000, tape]) и ожидание того момента, когда данные станут дос­тупными. Ожидание может быть либо активным, т.е. будет происходить непре­рывное тестирование состояния устройства, либо, что более практично, процесс будет приостановлен до прерывания.

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



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

Чтобы уменьшить накладные расходы и увеличить эффективность, иногда удобно выполнить чтение данных заранее, до реального запроса (а запись дан­ных — немного позже реального запроса). Эта методика известна как буфериза­ция. В данном разделе мы рассмотрим некоторые схемы буферизации, поддер­живаемые операционными системами для повышения производительности.

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

 



<== предыдущая лекция | следующая лекция ==>
Логическая структура функций ввода-вывода | Одинарный буфер


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


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

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

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


 


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

 
 

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

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