русс | укр

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

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

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

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


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

Синхронный и асинхронный ввод-вывод


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


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

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

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




144_____________ Глава 5. Управление вводом-выводом в операционных системах

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

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

Аппаратуру ввода-вывода можно рассматривать как совокупность аппаратных процессоров, которые способны работать параллельно друг другу, а также парал­лельно центральному процессору (процессорам). На таких «процессорах» выпол­няются так называемые внешние процессы. Например, для печатающего устрой­ства (внешнее устройство вывода данных) внешний процесс может представлять собой совокупность операций, обеспечивающих перевод печатающей головки, про­движение бумаги на одну позицию, смену цвета чернил или печать каких-то сим­волов. Внешние процессы, используя аппаратуру ввода-вывода, взаимодействуют как между собой, так и с обычными «программными» процессами, выполняющи­мися на центральном процессоре. Важным при этом является обстоятельство, что скорости выполнения внешних процессов будут существенно (порой на порядок или больше) отличаться от скорости выполнения обычных {внутренних) процес­сов. Для своей нормальной работы внешние и внутренние процессы обязательно должны синхронизироваться. Для сглаживания эффекта значительного несоответ­ствия скоростей между внутренними и внешними процессами используют упомя­нутую выше буферизацию. Таким образом, можно говорить о системе параллель­ных взаимодействующих процессов (см. главу 7).

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


Организация внешней памяти на магнитных дисках___________________________ 145

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



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


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


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

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

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


 


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

 
 

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

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