第 169 回 PTT のお知らせ


日時:1991年 11月 14日 (木) 18:30 から (予定より1日遅くなりましたので御注意ください)

場所:慶應義塾大学理工学部 25-601 教室 (横浜市港北区日吉3-14-1)

東横線日吉駅慶応大学側の出口(東側)を出て,東横線に沿って左(渋谷方向) へ行く. 仲の谷という交差点(仏具屋が目印)を右に(中華料理屋と民家の間の 道)曲がり,2〜3分で理工学部の表札が見えるので,そこの左手の坂を登る. 教室は25棟(ピロティの右の建物)の6階.


話題: Portable ConcurrentSmalltalk の設計と実装

話者: 岡村 英明 (慶応大学大学院理工学研究科計算機科学専攻 所研究室)

内容:

マルチプロセッサや分散システムを用いた並行・分散処理環境でのプログ ラミングが注目を集めている。一方、オブジェクト指向プログラミングは生産 性、保守性、信頼性が高めることが出来るため、プログラミングパラダイムと してこれからの中心的役割を果たしていくだろう。オブジェクト指向プログラ ミング言語は内在的に並行性を持っているが、並行処理環境を考慮して設計さ れた言語(並行オブジェクト指向言語)はそれほど多くない。

ConcurrentSmalltalk(以下、CST)は、オブジェクト指向言語の中でも最も 完成度が高い言語と言われている Smalltalk-80 に並行プログラミングの機能 を加えたものである。ところが、CSTは Smalltalk-80の仮想機械を変更して実 装しているため、実行速度、移植性に問題点があった。Portable ConcurrentSmalltalk(PCST) はこのような問題点を解決するため Smalltalk-80 の Virtural Image 上で設計、実装を行なう。今回の発表では、 CST など代表的な並行オブジェクト指向言語について説明した後、CST の改良 バージョンである PCST の設計と実装について述べ、シンプルな並行プログラ ムのデモを行なう。


食事:今回はありません.


次々回: 1991年 12月 19日 (木) 富士ゼロックス (予定)

葉書の残りは 枚です

差出人、幹事:
113 文京区本郷 7-3-1
東京大学工学部計数工学科  岩崎英哉
03-812-2111  ext. 7411
iwasaki@wadalab.t.u-tokyo.ac.jp

第 169 回 PTTメモ


日時: 1991年11月14日(木) 午後 6:40〜
場所: 慶應義塾大学理工学部 25-601 教室
題目: Portable ConcurrentSmalltalk の設計と実装
話者: 岡村 英明 (慶應義塾大学大学院 理工学研究科 計算機科学専攻)
出席者: 松永 賢次, 久保田 光一, 広津 登志夫, 藤井 寛子, 平山 愛子, 筧 るみ子, 岩井 三剛, 嶋田 貴夫, 斉藤 哲生, 森山 光一, 丸谷 哲也, 板場 雄介, 馬上 博樹, 八戸 滋夫, 田中 学(慶應大学), 岩崎 英哉, 田中 哲朗, 寺田 実(東大), 石畑 清(明治大), 並木 美太郎(農工大), 伊知地 宏, 倉部 淳, 宇久 一輝(富士ゼロックス)
質疑応答:

慶應大学では、並行オブジェクト指向プログラミングシステムの研究が行 なわれてきている。オブジェクト指向プログラミングは、オブジェクトによる データの抽象化とクラス階層による継承機構により、モジュール性、再利用性 に優れている。並行オブジェクト指向プログラミングモデルは、これ以外にオ ブジェクトが潜在的に持つ特徴である独立性、並行性に着目し、オブジェクト を並行に動作させ必要に応じてメッセージのやりとりを行なって全体として計 算を完成させていくという計算モデルである。このモデルにより人間社会で行 なわれている振舞いをシミュレートすることも可能である。並行プログラミン グ言語システムとしては、Smalltalk-80 に並行実行機能を加えた ConcurrentSmalltalk や知識処理機能を加えた Orient84/K などがある。

ConcurrentSmalltalk は独自の Virtual Machine を用いて実現されている ために、移植性が低い、Smalltalk-80 のバージョンアップに対応していない (処理速度、Virtural Image の内容)、拡張性が低い、といった欠点を持って いる。

Portable ConcurrentSmalltalk(以下 PCST)は、これらの問題点を解決する ために Smalltalk-80 の Virtual Image 上で実装を行なっている。PCST は、 ConcurrentSmalltalk の Virtual Machine を Smalltalk-80 上でエミュレー トしたものと言い替えることも出来る。PCST の実装に関して考慮した点をい くつか挙げる。

  1. 並行実行機能
    並行動作するオブジェクトを個々のプロセスに割り当てる。複数のプ ロセスをタイムシェアリングで実行するためスケジューラを作成する。
  2. 並行構文の解釈
    ConcurrentSmalltalk には、非同期送信の構文(「anObject message &」 の構文 )と非同期返答の構文(「↑↑ anReturn」の構文)が新たに導入 されているためこれらを解釈する ConcurrentSmalltalk のコンパイラ を導入する。コンパイラは独自のバイトコードを生成する。これらの バイトコードは Smalltalk-80 の Virtural Machine では実行できな いので unusedBytecode のエラーになる。このエラールーチン内で並 行構文の実行をエミュレートする。
  3. 並行構文のエミュレーション
    非同期送信、非同期返答はメッセージ送信と返答をきっかけにして複 数のオブジェクトを並行実行させる。送信、返答するごとに新たなプ ロセスを生成し、オブジェクトの実行を割り当てる。送信の場合は同 期機構のため CBox オブジェクトと呼ばれる future object も生成する。
  4. アトミックオブジェクト
    ConcurrentSmalltalk ではオブジェクト単位で並行制御を行なってお り、オブジェクト内で同時に1つのみのメッセージの処理を行なう (Smalltalk-80 のオブジェクトと互換性のある非アトミックオブジェ クトもある)。並行制御を行なう部分を Smalltalk-80 オブジェクトの 外部に1つのオブジェクトとして用意し、2つのオブジェクトが外部か ら1つのオブジェクトに見えるようにする。
評価:

実行速度について評価を行なった。並行構文のエミュレートにはオーバー ヘッドがかかるが、高速な Smalltalk-80 の Virtual Machine 上では(Parc Place Smalltalk VI Ver.2.3)、適当な数の並行構文を持ったプログラム(全メッ セージの 1/4 が非同期通信)の実行では、2倍程度の実行速度になった。

終わりに:

Parc Place Smalltalk-80 VI Ver.2.5 になって、コンパイラやバイトコー ドの大幅な変更が行なわれた。Xerox は Virtual Machine の仕様を以前のよ うには公開しない方針に転じてきたようである。このため、本実装の方法で移 植をするのは困難である。バイトコードのエラールーチンも公開されなくなっ たので、並行実行をエミュレートする部分をエラールーチンで行なうのではな く、コンパイラのレベルで既存のバイトコードに展開するといった方法を取ら ざるを得ないだろう。

PCST は、Parc Place Smalltalk-80 VI Ver.2.3 上で稼働している。この Smalltalk-80 が実行可能な全ての計算機で動作可能である。