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

[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
мНет описания правки
мНет описания правки
Строка 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]] асинхронного ввода/вывода в пользовательских процессах, пользователь может использовать асинхронный ввод/вывод, с учетом возникающей при этом дополнительной сложности программного обеспечения.
 
Асинхронный ввод/вывод используется для улучшения пропускной способности и уменьшения задержки и/или времени реагирования.