東京大学「オペレーティングシステム」講義案内
田浦健次朗

1 What’s new

変更点の全体的要約

  1. 関数名としては __sync_xxx -> __atomic_xxx と代わっている(ただし xxx の部分も代わっている場合があり, 名前から対応を想像する)
  2. 引数が増えており, とくに多くの関数が memorder (メモリオーダー) という引数を取ることになっている.

後者の意味を説明しだすと並列処理, コンピュータアーキテクチャに関する長〜い話になってしまうのです割愛しますが, * 手っ取り早く使うためには, よくわからなければ memorder 引数に __ATOMIC_SEQ_CST を与えておけば無難. * 一体何なのかをざっくりと, 一言で言うとこれらの操作前後の他のメモリアクセスがどう振る舞ってほしいかを制御します. 興味がある人はまずは 新しいAPIページ の説明を読み, よくわからなければWikipedia を読んだり, 「共有メモリ 一貫性モデル」でググったり, ChatGPTさんに解説をお願いしたり, 田浦に聞いたりしてください.

__sync_bool_compare_and_swap(p, r, s)

と同じ動作をさせたければ

__atomic_compare_and_exchange_n(p, &r, s, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)

または

__atomic_compare_and_exchange(p, &r, &s, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)

でよさげ(どういうわけか, rを値そのものではなく値へのアドレスで与えることになっているという謎仕様. _n ありなしと2つのバージョンがありその違いは s を値で渡すか値へのアドレスで渡すかの違いだけという, これまた謎仕様. 後ろの3つの引数は説明は省略するものの本質的な拡張の意味があるが, 2, 3個目の引数の渡し方がこう代わったことは謎.

2 スライド

  1. イントロ
  2. プロセス
  3. スレッド
  4. スケジューリング
  5. 並行処理と同期
  6. メモリ管理 (仮想記憶)
  7. ファイルシステム
  8. ファイルディスクリプタと擬似ファイル
  9. シグナル
  10. ユーザレベル仮想記憶 API とその応用

3 オペレーティングシステム(OS)とは

4 なぜオペレーティングシステムを学ぶのか?

OSを学ぶ気になったでしょうか?

5 講義の進め方

6 評価 (2020年度)について

7 教科書・参考書

8 講義項目(予定)