117. TAO
✓ 竹内郁雄先生らによって実装
✓ TAO/ELIS
✓ 今日はELIS復活祭らしい
116/154
GCが止まらない - We want the pauseless GC Powered by Rabbit 0.6.5
118. TAO
✓ TAOはSILENTの機械語
✓ LISPの方言
117/154
GCが止まらない - We want the pauseless GC Powered by Rabbit 0.6.5
119. TAO
Lisp と Prolog と
Smalltalk と C をゴタ混
ぜにしたプログラミング
言語だが見掛けも骨組
みもやっぱり Lisp
[「マルチパラダイム言語 TAO - 竹内 郁雄」より引用]
118/154
GCが止まらない - We want the pauseless GC Powered by Rabbit 0.6.5
120. SILENT
✓ 記号処理計算機
✓ LISPマシン
✓ 軽量プロセス管理
✓ 水平型マイクロプログラムが書け
る
✓ TAO
119/154
GCが止まらない - We want the pauseless GC Powered by Rabbit 0.6.5
121. 軽量プロセス
✓ すべてのプロセスはTAOで動作
✓ アプリケーションもプロセスに載る
120/154
GCが止まらない - We want the pauseless GC Powered by Rabbit 0.6.5
122. GC
✓ アプリケーションのプロセスが使
用するメモリを管理
✓ 計8つのGCプロセス(軽量)が常
に走る
✓ OSレベルでのGC
121/154
GCが止まらない - We want the pauseless GC Powered by Rabbit 0.6.5
123. 8つのGCプロセス
✓ main marker
✓ post marker
✓ 6つの sweeper
✓ データ種別毎
122/154
GCが止まらない - We want the pauseless GC Powered by Rabbit 0.6.5
124. それぞれの役割
✓ main marker
✓ rootのマークをひたすら行うプロセス
✓ post marker
✓ ライトバリアで見つけたオブジェクトの
マークをひたすら行うプロセス
123/154
GCが止まらない - We want the pauseless GC Powered by Rabbit 0.6.5
125. それぞれの役割
✓ sweeper
✓ 上記マークが終わったらスイープ
124/154
GCが止まらない - We want the pauseless GC Powered by Rabbit 0.6.5
126. スケジューリング
✓ GCプロセスのスケジューリングは
OSで管理
✓ 優先度あり
✓ GCを急がなきゃ行けないときは優先度
あげたり
✓ メモリが枯渇した場合は全部止め
る
125/154
GCが止まらない - We want the pauseless GC Powered by Rabbit 0.6.5
127. 重要な点
✓ 非停止であること
✓ ハードリアルタイム(厳格な実時間)を
実現
✓ ※ソフトリアルタイム(まぁまぁ実時間)
ではない
126/154
GCが止まらない - We want the pauseless GC Powered by Rabbit 0.6.5
128. ライトバリア
✓ ハードウェアサポート
✓ マイクロプログラムのサブルーチ
ンで実装
✓ car、cdrへの書き込み時に動作
✓ 非常に高速
127/154
GCが止まらない - We want the pauseless GC Powered by Rabbit 0.6.5
129. 結果
✓ 反応遅延が100マイクロ秒
✓ (ミリ秒じゃない)
✓ GCよる遅れはほとんど感じられな
いということ
128/154
GCが止まらない - We want the pauseless GC Powered by Rabbit 0.6.5
135. 詳細は論文で
✓ Lisp can be "Hard" Real Time
✓ http://www.franz.com/services/
conferences_seminars/jlugm00/
conference/Talk14_takeuchi.pdf
134/154
GCが止まらない - We want the pauseless GC Powered by Rabbit 0.6.5