STREAMS
STREAMSの最新ニュースをまとめて検索!
STREAMSは、UNIX System Vのキャラクタデバイスの実装フレームワークである。
STREAMS は、カーネルやユーザ空間プロセスとデバイスドライバとの全二重双方向のキャラクタI/Oを実装するモジュール性の高いアーキテクチャとして設計された。端末I/Oやネットワークサブシステムの開発によく使われた。System V Release 4 では、全ての端末インタフェースがSTREAMSを使って実装された[1]。
STREAMS は、プロトコルスタックを実装するためのカーネル内の仕組みである。たとえば、TCP/IPでは、TCP や IP がそれぞれSTREAMSモジュールとして実装される。STREAMSモジュールには上位層への双方向接続ポートと下位層への双方向接続ポートを持つ。STREAMSモジュールは基本的には上位層や下位層のことを全く知らなくてもよい構造になっていて、TCPモジュールのルーチンがIPのルーチンを直接コールすることはない。
STREAMS はBSDのソケットAPIと対抗する技術だが、STREAMSを使ったシステムでは常にソケットのインタフェースも提供された。STREAMS はソケットよりも複雑だが、柔軟性も高い。
目次 |
[編集] 歴史
STREAMS はデニス・リッチーが Version 8 Unix に導入したのが最初であり、その時点で端末I/OとTCP/IPプロトコルに使われていた。当時のUNIXの入出力システムコール(open、close、read、write、ioctl)に新たな機能を導入しようとする試みであった。その後、Robert Israel、Gil McGrath、Dave Olander、Her-Daw Che、 Maury Bach らが System V Release 3 に移植し、様々なトランスポート層プロトコル(TCP/IP、ISO Class 4 transport、SNA LU 6.2、RFS で使う AT&T NPACK protocol)を STREAMS で実装できるよう拡張された。この時点で、putmsg、getmsg、poll というシステムコールが追加された。これらはそれぞれ、BSDソケットの send、recv、select システムコールに相当する。その後、STREAMS は端末I/Oやパイプの実装にも使われ、双方向パイプやファイル記述子の受け渡しといった便利な機能が追加された。
ベル研究所によるオリジナルの実装[2]は遅いという悪評があったが、SVR3 やその後の実装では特に性能が悪いという話はない。
SVR3への移植と並行して、AT&T はOSI参照モデルの各層(2層から5層まで)についてのSTREAMSメッセージパッシングの(プロトコルに依存しない)ガイドラインを開発した。しかし、ネットワーク層とトランスポート層の間はプロトコルスタックの実装に依存する部分が大きく、また上位層はカーネルでは実装されないことから、トランスポート層と上位層の間のインタフェースだけが広く採用されることとなった。これが Transport Layer Interface (TLI) である(後に X/Open Transport Interface (XLI) として採用された)。TLI/XLI は BSDソケットとほぼ等価である。
STREAMS は Single UNIX Specification のバージョン1(UNIX95)とバージョン2(UNIX98)では必須とされていたが、バージョン3(UNIX03)ではオプションとなっている。
[編集] 実装
STREAMS は主に System V 系 UNIX で使われたが、他にも以下のような実装が存在する。
- Plan 9 も STREAMS によるネットワーク機能を持っていた。
- アップルコンピュータ社は Mentat 社の実装したSTREAMSのライセンス提供を受け、MacのOS 漢字Talk 7.5.2以降にネットワークシステム Open Transport の一部として導入した。STREAMS アーキテクチャは Mac OS X のクラシック環境に残っている。(ただし、Mac OS XネイティヴのネットワークアーキテクチャはBerkeleyのsocketである。)
- Linux での STREAMS 実装として、LiS [3] や OpenSS7 Fast STREAMS がある[4]。Linuxカーネルでは、開発者らが STREAMS 技術を不適切と見ているため実装されていない。代わりに STREAMS 操作をソケット操作に変換する互換レイヤーが存在する[5]。
[編集] 脚注
- ^ Goodheart, Benny (1994年). The Magic Garden Explained:The Interals of UNIX System V Release 4. Prentice Hall, 51-53, 403-527. ISBN 0-13-098138-9.
- ^ Dennis M. Ritchie. “A Stream Input-Output System”: 1897-1910. AT&T. 2006年5月19日 閲覧。
- ^ LiS: Linux STREAMS, Francisco Ballesteros, Linux Journal, Sat 01 May 1999
- ^ OpenSS7 download page
- ^ Alan Cox, Streams and Linux, Linux Kernel Mailing List, 28 June 1998
[編集] 外部リンク
- The STREAMS framework in Digital UNIX — from the Digital UNIX Network Programmer's Guide
- Sun STREAMS Programming Guide
最終更新 2009年9月16日 (水) 23:41 (日時は個人設定で未設定ならばUTC)。
【STREAMS】変更履歴

