常時追加・更新中
新しいものが上
お知らせなど随時掲載しますので, ちょくちょく「再読み込み」してください
(投稿日: 2025/11/07) 11/12 (水) の回の講義の代わりとなるオンデマンド教材>
os09_vm
をやってください(投稿日: 2025/11/05) お知らせ 諸事情により,
(投稿日: 2025/11/04) 11/05 予定
os08_addros09_vm(投稿日: 2025/10/29) 今日の授業の最後に, 江利口くんより「スライド並行処理と同期 p42 にあるリンク先のページは “Legacy …” となっている (今はどうなっている?)」という質問がありました. スライドを更新し忘れ + (過去に一度見たはずの内容を) 忘れていたもので, 補足, 訂正させていただきます. 要約としては同じものが名前と引数を(ややこしく)変えて提供されているというものです.
変更点の全体的要約
__sync_xxx ->
__atomic_xxx と代わっている(ただし xxx
の部分も代わっている場合があり, 名前から対応を想像する)memorder
(メモリオーダー) という引数を取ることになっている.後者の意味を説明しだすと並列処理,
コンピュータアーキテクチャに関する長〜い話になってしまうのです割愛しますが,
* 手っ取り早く使うためには, よくわからなければ memorder
引数に __ATOMIC_SEQ_CST を与えておけば無難. *
一体何なのかをざっくりと,
一言で言うとこれらの操作前後の他のメモリアクセスがどう振る舞ってほしいかを制御します.
興味がある人はまずは 新しいAPIページ の説明を読み,
よくわからなければWikipedia を読んだり, 「共有メモリ
一貫性モデル」でググったり, ChatGPTさんに解説をお願いしたり,
田浦に聞いたりしてください.
compare&swap については引数も結構代わっており__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個目の引数の渡し方がこう代わったことは謎.
os06_cond_var.sosos07_atomicos08_addros04_sched.sosos05_mutex.sosos06_cond_var.sosos02_processos03_threados04_sched.sosos00_introos01_install_linuxos02_processすでに自宅などでパソコンを使っている人は多いと思います. Windows, Mac OSという製品名はほとんどの人が聞いたことがあるでしょう. これらはみなオペレーティングシステムの実例です. サーバ用にはLinuxというOSが圧倒的に普及していますし, スマホ用のOSであるAndroidもLinuxが元になって作られています.
OSはコンピュータを動かすにあたって,最も基本的なソフトウェアです. OSの厳密な「定義」は難しく,左のような言い方でごまかすのが普通です.OS が何か?という問いに対する短い答えを追い求める代わりに,OSのないコン ピュータとそうでないコンピュータの(その上の応用ソフトウェアを作る人の 立場から見た)違いについて簡単に触れるのが有益かと思います.
卒業論文,またはその後の研究において,オペレーティングシステムその ものや,ネットワーキング(インターネット),プログラミング言語,セキュ リティ,並列・分散計算など,その他あらゆる,コンピュータの基盤に関わる 研究をしたいと思っている人は,迷わずオペレーティングシステムを学ぶべき です.オペレーティングシステムを学ぶことは,大雑把に言って,コンピュー タソフトウェアが根本的なところで「どう動くか」を学ぶことと同じです.
私はコンピュータのシステムそのものの勉強がしたいのではなく,コンピュー タを使った情報処理(自然言語,画像,音声,etc.)ができればそれで満足だ, 細かいOSの機能などはどうでもよい,という人もいることでしょう.そのよう な人にも,単位を取る以上の動機付けをあたえるとすると以下のようになるで しょう.
OSを学ぶ気になったでしょうか?
Silberschatz et al. Operating System Concepts Ninth Edition (ISBN 0471694665). 大部な名著です.名著ですがちと高すぎます…
Silberschatz et al. Applied Operating System Concepts (Windows Xp Update) (ISBN 0471263141). 内容的にはほぼ,Operating System Conceptsと同一ですが,Windows XPなどに関するCase Studyが充実しています.
D.M. Dhamdhere Operating Systems (ISBN-10: 0070611947, ISBN-13: 978-0070611948). 基礎的な内容から,マルチプロセッサ,分散システムまで充実した内容.
Andrew S. Tanenbaum Modern Operating Systems (ISBN 0136386776). 古典的な話と,分散システムの話を広くカバーしている
Andrew S. Tanenbaum and Albert S. Woodhull [Operating Systems: Design and Implementation, second edition] (http://www.amazon.co.jp/exec/obidos/tg/detail/glance/-/english-books/0136386776/0136386776/249-9962019-8008335) (ISBN 0135881870). Minixという小さなOSを,ソースコードを掲載しながら細部まで説明している.
前川守 オペレーティングシステム (ISBN 4000103466). 日本語の大部な教科
野口健一郎 オペレーティングシステム (ISBN 4274132501). 薄めの要点解説的な教科書.
以下は,いわゆる一般的なOSの教科書ではありませんが,興味を持つ人もいるでしょう.
Gary Nutt. Kernel Projects for Linux (ISBN 0201612437). 邦訳: 実習Linuxカーネル 理論と実習 カーネルを効率的に理解するための実習書 (ISBN 4894714566). ここにある数々のプログラミング課題がすべてできれば,授業に出る必要はない.
Beck et al. Linux Kernel Programming (ISBN 0201719754). Linuxカーネルについての詳細な解説.
Uresh Vahalia UNIX Internals The New Frontiers (ISBN 0-13-101908-2). UNIXについての詳細な解説.
Jim Mauro and Richard Mc Dougall Solaris Internals Core Kernel Architecture (ISBN 0-13-022496-0). Solaris (UNIXの一種)についての詳細な解説
Remy Card, Eric Dumas, and Franck Mevel The Linux Kernel Book (ISBN 0471981419) Linuxについての詳細な解説
W. Richard Stevens Advanced Programming in the UNIX Environment (ISBN 0-201-56317-7). UNIXの,内部ではなくシステムコール(API)を解説.システムプログラマとしての腕を上げたい人向き