Книга: UNIX: разработка сетевых приложений
Модель мультиплексирования ввода-вывода
Модель мультиплексирования ввода-вывода
В случае мультиплексирования ввода-вывода мы вызываем функцию select
или poll
, и блокирование происходит в одном из этих двух системных вызовов, а не в действительном системном вызове ввода-вывода. На рис. 6.3 обобщается модель мультиплексирования ввода-вывода.
Рис. 6.3. Модель мультиплексирования ввода-вывода
Процесс блокируется в вызове функции select
, ожидая, когда дейтаграммный сокет будет готов для чтения. Когда функция select
возвращает сообщение, что сокет готов для чтения, процесс вызывает функцию recvfrom
, чтобы скопировать дейтаграмму в буфер приложения.
Сравнивая рис. 6.3 и 6.1, мы не найдем в модели мультиплексирования ввода- вывода каких-либо преимуществ, более того, она даже обладает незначительным недостатком, поскольку использование функции select
требует двух системных вызовов вместо одного. Но преимущество использования функции select
, которое мы увидим далее в этой главе, состоит в том, что мы сможем ожидать готовности не одного дескриптора, а нескольких.
ПРИМЕЧАНИЕ
Разновидностью данного способа мультиплексирования является многопоточное программирование с блокируемым вводом-выводом. Отличие состоит в том, что вместо вызова select с блокированием программа использует несколько потоков (по одному на каждый дескриптор), которые могут блокироваться в вызовах типа recvfrom.
- 6.2. Модели ввода-вывода
- Модель асинхронного ввода-вывода
- Сравнение синхронного и асинхронного ввода-вывода
- Включение и отключение синхронного вывода
- 7.4. Модель системы автоматизированного проектирования защиты информации
- 2. Правила вывода Армстронга
- 3. Производные правила вывода
- 5. Продукционная модель знаний
- 1.6 Драйверы и буферы ввода-вывода
- 2.3 Модель мини-драйвера IDE
- 7.1 Общая информационная модель и стандарт WBEM
- Глава 6 BIOS – базовая система ввода-вывода