Асинхронный ввод-вывод: различия между версиями

[непроверенная версия][отпатрулированная версия]
Содержимое удалено Содержимое добавлено
викификация, стилевые правки
Нет описания правки
Строка 8:
В качестве альтернативы, можно инициировать операцию ввода/вывода, а затем выполнять обработку, которая не требует завершения операции ввода/вывода. Такой подход называется [[Асинхронность|асинхронный]] ввод/вывод. Любая задача, которая зависит от завершения ввода/вывода, (в том числе как использование значений ввода, так и критических операций, которые подтверждают, что операция вывода была завершена) по-прежнему вынуждена ожидать завершения операции ввода/вывода, и, таким образом, прежнему быть заблокированной, но другая обработка, которая не имеет зависимости от операции ввода/вывода может быть продолжена.
 
Многие функции операционной системы позволяют реализовать асинхронный ввод/вывод на различных уровнях. В самом деле, один из главных функций всех, кроме самых элементарных [[операционные системы|операционных систем]], позволяют выполнить по крайней мере некоторую форму базового асинхронного ввода/вывода, хотя это может быть не особенно очевидно для оператора или программиста. В простейшем программном решении, статус аппаратного устройства [[Пулинг|опрашивается]]<ref>{{Cite web|url = https://msdn.microsoft.com/ru-RU/ru/library/bb399543.aspx|title = Организация пулов соединений|author = MSDN|publisher = MSDN}}</ref> в промежутки времени, достаточном для того, чтобы обнаружить готово ли устройство к следующей операции. (Например операционная система [[CP/M]] была построена таким образом. Семантика её [[системный вызов|системного вызова]] не требует какого-либо более сложного строения ввода/вывода, чем этот, хотя большинство реализаций являются более сложными, и тем самым более эффективными.) [[Прямой доступ к памяти]] (DMA) может значительно повысить эффективность систем с [[Пулинг|опросом]] в основе, и аппаратные [[Прерывание|прерывания]] могут устранить необходимость [[Пулинг|опроса]] полностью. [[Многозадачность|Многозадачные]] операционные системы могут использовать функциональные возможности, предоставляемые аппаратными прерываниями, при этом скрывая сложность обработки прерываний от пользователя. [[Буферизация]] была одной из первых форм многозадачности предназначенная для использования асинхронного ввода/вывода. Наконец, при появлении [[Поток (информатика)|многопоточностьмногопоточности]] и явныйявных [[API]] асинхронного ввода/выводвывода в пользовательских процессах, пользователь может использовать асинхронный ввод/вывод, с учетом возникающей при этом дополнительной сложности программного обеспечения.
 
Асинхронный ввод/вывод используется для улучшения пропускной способности и уменьшения задержки и/или времени реагирования.