シラバス参照

 
 

0AL5434   並行システム

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

授業概要

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

備考

西暦奇数年度開講。
対面

授業方法

講義

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

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

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

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

キーワード

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

授業計画

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

第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検索の結果、 生成AIの出力を含めてはならない。受講生はレポートを授業の理解を確認するために使う。受講生は授業内容を理解すれば、簡単にレポートを作成できる。レ ポートの回答に一般的には正解であることを含めても、この授業の回答としては不正解となることがある。

個々のシラバスに生成AIに関する 記述を求めることは過剰反応だと思われる。講師が個々の授業のシラバスに生成AIに関する利用方法を書いても、受講生がそれに応じた対応をするとは思えな い。生成AIの出現で、学生は何のために大学に来ているかが問われている。生成AIでも回答できるようなことをなぜ人間が行ったり、生成AIの出力を人間 がチェックするのはつまらない。レポート採点者に対して生成AIの出力をチェックさせるのは、失礼である。この授業の内容が受講生の知的好奇心を満たすこ とを期待する。

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

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

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

参考書

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

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

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

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

奇数年度開講。

他の授業科目との関連

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