1988年12月14日に行われた東京大学大型電算機センター会議室でのBill Joyの講演のメモ
Edited 13-SEP-2003 by Kenji Rikitake 力武 健次
(1988年12月14日に紙に書いた私的メモを編集したもの)
From V7 to Phase-3 (メモ原文ではΦ-3)
The evolution of UNIX
7 from AT&T (Sys V rel 3)
7 from BSD (4.3)
Phase-3: restructured UNIX
20年前とは基本的構造は変わっていない
MULTICSから3つのideaしか使っていない
Processes : "GENIE" / Ken Thompson
File System : KT (Ken Thompsonのことと思われる)
Pipes: McIlroy
Shell以上がけっこう複雑になっている
その後の改造
VAX-11/780
virtual memory
keep PDP-11 model
paging is invisible
→ 3BSD 1979
Local Area Networks
Ethernet
TCP/IP
model of sockets
→ 4BSD 1981
Problems
No "tenex" pmap functionality → mmap() ← 載らず
Communications is asynchronous → select() ← まだ不十分
New technologies -> New system facilities -> Larger O/S
Trends
1. Minis -> WSes & Servers ⇒ NFS
2. Library Complexity ⇒ Dynamic Linkage
-> back to MULTICS
Graphics and Windowing -> complicated
5 kinds of graphics
X11 PHIGS PostScript Renderman & what? (image processing)
Current UNIX:
Applications: Communication が不足
Unix Kernel: networking 1M lines
original 200K lines
Graphics: 1M lines
4 Application Styles
main(): App.
sleep(): Traditional Kernel
Networking
Graphics
⇒ The single paradigm:
No Concurrency/Parallel Programming
Too Complex
New Central Concepts
Mach -> ports & RPC -> first bigger -> next smaller
--> HUGE DEFICITS ("first cut taxes" ではだめ)
⇒ UK(英国)みたいに <first cut spending>
Sun's Approach:
Focus on applications: one programming environment
Concurrency / C++ / Shared memory / Fiber optics
⇒ Making UNIX be an application
Status of the nre project:
Nucleus (wnj: assembler (Microcode)) ... 1 sys call
Language (mitchell, powell... ) ... C++++-=
Services (gingell, ...) ... UNIX, networks...
Key will be success of language
C++ ++ -= ⇒ implemented in ANSI C ⇒ SPARC (microcode)
++: concurrency / parameterized types / garbage collection
-=: general complexity (unsafe function ⇒ ANSI C で書け)
Summary:
Phase 3 is RISC for OS
RISC relative to Applications
Not a OS kernel; applications platform!
This is first public talk -> do work, not promote.
-----
Cross examination or Q&A session
UNIXとのコンパチビリティはどうか?
→上位OSで確保する
C++とObjective-Cは?
→どっちも生産性向上のためのツールである
C++を使っている
フォールト・トレラント性はどうするつもりか?
→オブジェクト指向ならば各オブジェクトのコピーは楽である.
これを利用してシャドウ・ディスクを作れる.
多言語での可能性は?
→ほとんどの言語はinterpreterである.
良いinterpreterはむつかしい.
SPARCの命令は今後拡張されるか?
→固定している.整数乗算や64bit長についてでさえ議論が行われているが,
これからどうなるかはもっと若い人にまかせたい.
5000ゲート+レジスタ・ファイルでしかないから,改造は楽である.
いずれにせよ,386みたいにやればインテルに告訴されるだろうが,
SPARCではそんなことはせず広めていきたい.
ハードウェア記述言語が米国の大学では開発されており,
それをつかってSPARCを作れる.それにはスーパーコンピュータが
必要であろう.(逐次探索でやるしかない)
SPARCのコンテキストスイッチングはおそい.
→全部レジスタを変える必要があるかどうかは,統計的な問題である.
言語の複雑さにもよるであろう.
OSと言語との関係は?
→UNIXではCのmain()の世界で生きる.しかしこれだけではgraphicsなどには
対応できる環境がない. C++++-= ではこれらに対応できる環境を提供する.
さらに一つでやりたい.
グラフィクス以外の音声などのメディアは?
→リアルタイムOSに近くしたいと思う.
(レスポンスの時間が予測できるようにしたい)
そのためには非常に速いマシンが必要である.
小手先の対応では対処できない.
DVIは見たか?
→あまり好きではない. orphan technology だと思う.
絵が汚い.ISDN用に絵画を圧縮したいんだと思うが,Appleの方が良く
やっていると思う.みんなやっているから,すぐにできるだろう.
机の中にTVが入るだろう(HDTV)
Securityはどう実現するつもりか?
→ simple .vs. diverse
common .vs. complex
単純なものは弱い.
common ⇒暗号を使う必要がある.
モジュール化して,違う組み合わせで違うシステムでやる必要がある.
Cは堅いが,もろい←強固に書く必要がある.
建物と違い,動かす前にテストできない.
暗号はどうするつもりか?
→ DESはどうしようもない.政治の問題だ.
公開鍵暗号は研究されているが,これを広めようとすれば政治問題になる.
その証拠にまだ第3世界はエニグマ暗号を使っている.
トロイの木馬みたいだけど,銀行のシステムを攻撃してやれば
みんなわかるんじゃないだろうか.
Phase-3 では「きれいな」プログラミングを強要されるだろう.
ガベコレなんかがあると, malloc()なんかは使いにくくなる.
→ 古いプログラマの10%が理解してくれればいいと思う.
プログラムは C++++-= ではエレガントになるのか?
→ 今マニュアルがないので例を示すことはできない.
できるだけ変えずにエレガントにするのは,むつかしいだろう.
コンパイラが答えられないような例があるのは情けない限りである.
SunのHardware仕様書がない.
→ 手には入れられるようにしてある.
Sunのソースコードも提供している.
いくつかのドライバはしょうもないだろうが.
680x0 が× SPARC が○となったのはなぜか
→ 自分でデザインするしかなかった.
半導体業界は協調してくれないので大変だった.
SPARCは hybrid chip の核として使われることを予想している.
わずか20000ゲートでしかない(2μmテクノロジ)
そのうち家具同士で通信することもできるようになるだろう.
Nano Technology
Drexler "Engines of Creation"
大容量記憶装置はどうなるか?
→ Audioを見よ.CDプレーヤーは安い容量はでかい.
いわゆるdiskはRAMになり,CDが主流になる.
そのうち原子構造を利用したものになる.
[以下雑談となり終了]
編者注:
- C++++--= (Cプラスプラスプラスプラスマイナスマイナスイコール) はその後 Java となり実用化された言語の祖先であったと考えて良いだろう.
- 1988年末当時,まだSun-4が登場したばかりであり,UNIXあるいはSunOSもソースコードを見るにはAT&Tのライセンスが必要だった.また,当時は米国国務省の認めない暗号技術の輸出は厳に禁じられていた.
[end of memorandum]