概要
本記事はBerkley Socket の歴史や開発当初の設計に興味を持ち調べた際のメモです。
調べたこと
Berkley SocketはBSD4.2のタイミングでBill Joyにより設計・実装されたようです。Bill Joyが開発に至るまでの経緯は『Unix考古学』で詳しく解説されています。
時はBSD4の時代に遡ります。Bolt Beranek and Newman (BBN) 社のRob GurwitzはBSD4.1向けのTCPの実装を開発し、BBN VAX TCP/IPとして配布しました。この実装は当時「公式のTCP実装」として認識されていましたが、現在のLinuxで動作するSocket機能は含まれておらず、またパフォーマンス面で改善の余地がありました。(同書 P166)
Rob GurwitzのTCP実装が持つパフォーマンス問題を改善するため、BerkleyのBill JoyはBBN BSD TCPの実装を流用しつつ、プロセス間通信の部分についてSocket Interfaceを利用する独自の実装に置き換えました。この機能がBSD4.2に採用され、今に至るまで使用され続けているようです。(同書 P176-177)
BSD4.2時点でのSocket Interfaceの実装の詳細は、以下資料の「6.1. Socket layer」に詳細に記載されています。 4.2BSD Networking Implementation Notes