Everything about Streams totally explained
In
computer networking,
STREAMS is the native framework in
Unix System V for implementing
character devices.
STREAMS was designed as a modular architecture for implementing full-duplex, bidirectional character I/O between kernel or user space processes and device drivers. Its most frequent uses have been in developing terminal I/O 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 that 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.
History
STREAMS was first introduced in
Eighth Edition Research Unix by
Dennis Ritchie, where it was used for the terminal
I/O subsystem and the
TCP/IP protocol. This version heroically attempted to fit the new functionality under the existing device I/O system calls (
open,
close,
read,
write, and
ioctl), which limited its application to terminal I/O and protocols providing pipe-like I/O semantics. It was ported to System V Release 3 by Robert Israel, Gil McGrath, Dave Olander, Her-Daw Che, and Maury Bach as part of a wider framework intended to support a variety of transport protocols, including TCP/IP, ISO Class 4 transport, SNA LU 6.2, and the AT&T NPACK protocol (used in
RFS). This port added the
putmsg,
getmsg, and
poll system calls, which are nearly equivalent to the
send,
recv, and
select calls from Berkeley sockets. In subsequent releases, STREAMS was used for the terminal I/O framework and pipes, providing useful new functionality like bi-directional pipes and
file descriptor passing. A port for
Unicos was also produced.
While the original
Bell Labs research implementation was criticized for slowness, the System V.3 and later third-party implementations didn't suffer from serious speed issues.
Concurrent with the System V.3 port,
AT&T developed protocol-independent STREAMS message passing guidelines for the link, network, transport, and
session layers of the
OSI model (layers 2-5). Due to the typically close implementation coupling of the network and transport protocols in a given
protocol stack, and the typical practice of implementing layers 5-7 outside of the
kernel, only the link and
transport layer interfaces have been widely adopted in practice. In conjunction with the transport message passing model, the
Transport Layer Interface (later adopted as the
X/Open Transport Interface) was defined to provide a transport protocol-independent API for application development. The TLI/XTI API is roughly equivalent to BSD sockets, and most systems now provide a sockets emulation for use with the TCP/IP protocol stack (either on top of the TLI/XTI API or as an alternative API on top of the underlying STREAMS transport message passing model).
STREAMS was required for conformance with the
Single UNIX Specification versions 1 (UNIX 95) and 2 (UNIX 98), but has been marked as optional in version 3 (UNIX 03).
Implementations
STREAMS has mostly been used in the System V Unix world; however, other implementations exist:
- Plan 9 also features STREAMS networking.
- Apple Computer licensed the Mentat implementation of STREAMS for use on the Mac OS starting in version 7.5.2, as part of their Open Transport networking system. The STREAMS architecture remains in the Classic environment on the PowerPC version of Mac OS X, but the native networking architecture is essentially Berkeley sockets.
- Linux has STREAMS in the form of LiS and more recently as OpenSS7 Fast STREAMS . STREAMS functionality isn't included with the Linux kernel; the kernel developers consider it technically inadequate, and the compatibility layers in Linux for other operating systems convert STREAMS operations into sockets as early as possible .
- It is rumored that an early port of TCP/IP for Windows NT by Lachman Associates included a full implementation of the System V.3 STREAMS model.
- Novell Netware also utilizes STREAMS in its TCP/IP stack, licensed the Mentat.
Further Information
Get more info on 'Streams'.
|
External Link Exchanges
Do you know how hard it is to get a link from a large encyclopaedia? Well we're different and will prove it. To get a link from us just add the following HTML to your site on a relevant page:
<a href="http://streams.totallyexplained.com">STREAMS Totally Explained</a>
Then simply click through this link from your web page. Our crawlers will verify your link, extract the title of your web page and instantly add a link back to it. If you like you can remove the words Totally Explained and embed the link in article text.
As long as your link remains in place, we'll keep our link to you right here. Please play fair - our crawlers are watching. Your site must be closely related to this one's topic. Any kind of spamming, dubious practises or removing the link will result in your link from us being dropped and, potentially, your whole site being banned. |