0AL5434 並行システム

2.0 単位, 1・2 年次, 春AB 金3,4
新城 靖

授業概要

並行システムについて紹介し、並行分散アプリケーションの構築に必要なソフトウェア技術につい て論じる。具体的には、マルチスレッド・プログラミングにおけるモニタと条件変数、遠隔手続き呼出し、グループ通信、分散共有空間、および、トランザク ションについて述べる。また、歴史的に重要な並行プログラミング言語を紹介する。具体的には、Concurrent Pascal、Communicating Sequential Processes、Ada、 並行オブジェクト指向モデル、Actors、Emerald、Scala、 並行論理プログラミング, Guarded Horn Clauses、Argus 等を紹介する。プログラミングを通じて、理解を確認する。具体的には、スレッド、遠隔手続き呼出し、分散共有空間を使った並行プログラムの作成を課題とす る。

備考

01CH303と同一。

授業形態

講義

学位プログラム・コンピテンスとの関係

知の活用力, マネジメント能力, コミュニケーション能力, 研究力, 知識力。

授業の到達目標(学修成果)

並行システムを構築する基本的な手法、および、歴史的に重要な概念を理解する。プログラミングを通じて、理解を確認する。

キーワード

並行・並列・分散システム, マルチスレッド, 同期・通信パタン, 遠隔手続き呼び出し, 分散共有空間, 並行プログラミング言語, トランザクション。

授業計画

並行システム、並列システム、分散システムを構築するためのプログラミングのスタイルとソフトウェア技術について論じる。スレッド、プロセス間通信、および、分散共有空間等を使ったプログラミングを課す。

第1回並行・並列・分散プログラミングとは: 概要、逐次プログラム、並行プログラム、並列プログラム、分散プログラム、並行プログラミング言語、同期、通信、ハードウェア、ポーリング、割り込み   
第2回マルチスレッド・プログラミング(1): ConcurrentPascal、fork-joinモデル、モニタ、mutex、条件変数   
第3回マルチスレッド・プログラミング(2): 一貫性モデル、アドホック同期、スレッド固有データ、コルーチン、デッドロック   
第4回プロセス間通信: 通信プリミティブ、マーシャリング、SocketAPI、クライアントサーバモデル   
第5回遠隔手続き呼び出し: スタブ、SunRPC、障害対策、NFS、XMLWebサービス、JavaRMI、dRuby、MessagePack-RPC   
第6回マルチキャスト: 分散アルゴリズム、マルチキャスト、ISIS、IPマルチキャスト、ニュース・システム   
第7回タプル空間: 並行プログラミングのパラダイム、Linda、タプル空間、JavaSpaces、RubyLinda(Rinda)   
第8回並行プログラミング言語(1): ConcurrentPascal、CommunicatingSequentialProcesses、Ada、分散型プログラミング言語、Emerald、Voyager、Dejay   
第9回並行プログラミング言語(2): 並行オブジェクト指向モデル、Actors、並行論理プログラミング、GuardedHornClauses、Jini   
第10回トランザクション: 直列化可能、楽観的並行性制御、2相ロック、2相コミット、Argus、投機的実行   

履修条件

オペレーティング・システム、ネットワーク通信、並列アーキテクチャに関する基本的な知識を有することが望ましい。

成績評価方法

毎回のクイズ(小テスト)、または、レポートにより評価を行う。基準を満たさなかったレポートは、再提出を求めることがある。

学修時間の割り当て及び授業外における学修方法

授業毎に示す課題についてレポートを作成し、締切までに提出すること。

教材・参考文献・配付資料等

教科書を用いない。講義資料をwebで配布する。

http://www.cs.tsukuba.ac.jp/~yas/cs/csys-2020/

参考書

1. Andrew S. Tanenbaum, Maarten Van Steen,"Distributed Systems: Principles And Paradigms", Prentice Hall (2006). ISBN-13: 978-0132392273
2. Doug Lea,"Java in Distributed Systems: Concurrency, Distribution and Persistence", John Wiley & Sons Inc Print (2001). ISBN-13: 978-0471498384
3. Marko Boger,"Java in Distributed Systems: Concurrency, Distribution and Persistence", John Wiley & Sons Inc Print (2001). ISBN-13: 978-0471498384
4. Robert E. Filman and Daniel P. Friedman,"Coordinated Computing: Tools and Techniques for Distributed Software", Mcgraw-Hill College (1984).

オフィスアワー等(連絡先含む)

金曜6限
3E303 yas@cs.tsukuba.ac.jp http://www.cs.tsukuba.ac.jp/~yas/

その他(受講生にのぞむことや受講上の注意点等)

2020年度開講。2021年度より奇数年度開講。

他の授業科目との関連

ティーチングフェロー(TF)・ティーチングアシスタント(TA)