STREAMS - Implementations

Implementations

STREAMS has mostly been used in the System V Unix world; however, other implementations exist:

  • Plan 9 originally used a multi-processor variant of Research Unix's Streams. During the transition to the third edition of Plan 9, Streams were further simplified to simple I/O queues.
  • Mentat wrote an implementation of STREAMS.
    • Novell Netware utilizes Mentat's STREAMS in its TCP/IP stack.
    • This was licensed by Apple Computer for use in Mac OS starting in version 7.5.2, as part of their Open Transport networking system.
      • In OS X, the Classic Environment used the STREAMS architecture, but the native networking architecture uses the Berkeley sockets API and is derived from the BSD networking code.
  • The Linux kernel does not include STREAMS functionality. 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.
    • LiS (Linux STREAMS) adds STREAMS functionality on Linux
    • OpenSS7 offers Fast STREAMS on Linux.
  • FreeBSD has basic support for STREAMS-related system calls, as required by SVR4 binary compatibility layer.
  • The Windows NT kernel offered a full port of STREAMS as the streams.sys binary. NT DDK even had a chapter on STREAMS, going as late as NT4 though in NT4 DDK it was declared obsolete.
    • The original TCP/IP stack for Windows NT 3.1 was implemented atop STREAMS by Spider Systems, and used the streams.sys binary. From NT 3.5 up, TCP/IP was remade completely, by adopting the one from MS LAN Manager for OS/2 1.x.

Read more about this topic:  STREAMS