シラバス参照

 
 

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-2021/

参考書

1. Andrew S. Tanenbaum, Maarten Van Steen: "Distributed Systems: Principles And Paradigms", Prentice Hall (2006). ISBN-13: 978-0132392273 https://www.tulips.tsukuba.ac.jp/search/?q=9780132392273
2. Doug Lea: "Concurrent Programming in Java: Design Principles And Patterns", Addison-Wesley, (2009). ISBN-13: 978-0321256171 https://www.tulips.tsukuba.ac.jp/search/?q=9780321256171
3. Marko Boger: "Java in Distributed Systems: Concurrency, Distribution and Persistence", John Wiley & Sons Inc Print (2001). ISBN-13: 978-0471498384 https://www.tulips.tsukuba.ac.jp/search/?q=9780471498384
4. "Coordinated Computing: Tools and Techniques for Distributed Software", Mcgraw-Hill College (1984). https://www.tulips.tsukuba.ac.jp/search/?q=0070224390
5. R.E. フィルマン, D.P. フリードマン: "協調型計 算システム-- 分散型 ソフトウェアの技法と道具立て", マグロウヒルブック (1986). ISBN-13: 978-4895010306 https://www.tulips.tsukuba.ac.jp/search/?q=9784895010306

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

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

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

奇数年度開講。

他の授業科目との関連

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