Введение
UNIX System V framework В компьютерных сетях STREAMS - это собственная структура в Unix System V для реализации драйверов устройств символов, сетевых протоколов и межпроцессной связи. В этой структуре поток представляет собой цепочку коррутинов, которые передают сообщения между программой и драйвером устройства (или между парой программ). STREAMS появился в версии 8 Research Unix, как Streams (не заглавная буква). Конструкция STREAMS представляет собой модульную архитектуру для реализации полной дуплексной вводы и вывода между ядром и драйверами устройств. Его наиболее частое использование заключается в разработке подсистем I/O (линейная дисциплина) и сетевых подсистем. В System V Release 4 весь интерфейс терминала был переделан с использованием STREAMS. Важной концепцией в STREAMS является возможность вставлять в драйверы модули пользовательского кода, которые могут изменять функциональность сетевого интерфейса или другого устройства вместе, чтобы сформировать стек. Несколько из этих драйверов можно приковать вместе в цепи.
In computer networking, STREAMS is the native framework in Unix System V for implementing character device drivers, network protocols, and inter process communication. In this framework, a stream is a chain of coroutines that pass messages between a program and a device driver (or between a pair of programs). STREAMS originated in Version 8 Research Unix, as Streams (not capitalized). STREAMS's design is a modular architecture for implementing full duplex I/O between kernel and device drivers. Its most frequent uses have been in developing terminal I/O (line discipline) and networking subsystems. In System V Release 4, the entire terminal interface was reimplemented using STREAMS. An important concept in STREAMS is the ability to push drivers custom code modules which can modify the functionality of a network interface or other device together to form a stack. Several of these drivers can be chained together in order.
История
STREAMS был основан на подсистеме Streams I/O, введенной в исследовательском Unix восьмого издания (V8) Деннисом Ричи, где он использовался для подсистемы I/O терминалов и пакета интернет-протоколов. Эта версия, еще не называемая STREAMS, соответствовала новой функциональности в рамках существующих системных вызовов ввода-вывода устройств (открытие, закрытие, чтение, запись и ioctl), и ее применение было ограничено терминальными вводами-выводами и протоколами, обеспечивающими семантику ввода-вывода. Эта система ввода-вывода была перенесена в System V Release 3 Робертом Израилем, Гилом Макгратом, Дэйвом Оландером, Хер Доу Че и Мори Бахом в рамках более широкой структуры, предназначенной для поддержки различных транспортных протоколов, включая TCP, ISO Class 4 transport, SNA LU 6.2 и протокол AT&T NPACK (используемый в RFS). Впервые он был выпущен с пакетом Network Support Utilities (NSU) UNIX System V Release 3. Этот порт добавил вызовы системы putmsg, getmsg и poll, которые почти эквивалентны по назначению вызовам отправки, восстановления и выбора из сокетов Беркли. Системные вызовы putmsg и getmsg первоначально назывались send и recv. В System V Release 4 STREAMS был расширен и использован для терминальной структуры ввода-вывода и труб, обеспечивая полезные новые функции, такие как двунаправленные трубы и передача файлового дескриптора. Одновременно с портом System V Release 3 AT&T разработала протокольные независимые STREAMS-руководства по передаче сообщений для связки, сети и транспортных уровней модели OSI (слои 2 и 4). Из-за типично тесной связи сетевых и транспортных протоколов в стеке протоколов и типичной практики реализации уровней 5 7 вне ядра, только интерфейсы услуг STREAMS были позже стандартизированы X/Open. В сочетании с моделью передачи транспортных сообщений был определен интерфейс транспортного уровня (позже принятый как X / Open Transport Interface), чтобы обеспечить независимый от транспортного протокола API для разработки приложений. Кроме того, библиотека, поддерживающая уровни сеанса, презентации и приложений, была определена и позже стандартизирована The Open Group. STREAMS был необходим для соответствия версиям Single UNIX Specification 1 (UNIX 95) и 2 (UNIX 98), но в результате отказа разработчиков BSD и Linux предоставить STREAMS, был помечен как необязательный для соответствия POSIX группой Остина в версии 3 (UNIX 03). POSIX.1 2008 с TC1 (IEEE Std 1003.1, 2013 издание) обозначил STREAMS как "обозначенный устаревшим", что означает, что указанная функциональность может быть удалена в будущей версии спецификации. Однако в конкретном определении "устаревшего" также говорится, что строго соответствующие POSIX-приложения "не должны использовать устаревшие функции".