【読書メモ】Modern Operating Systems(MOS)
MOSを読むモチベーション
OSに詳しい人はカッコいいなと思うため。
@1.1
OSの役割
- アプリケーションプログラマ(実際にはアプリケーションプログラム)に、散らかったハードウェアリソースの代わりに、綺麗に抽象化かれたリソースを提供すること
- ハードウェアリソースを管理すること
@1.2.2
”オフライン”の語源??
コンピュータのオペレータの移動時間が無駄なので、以下の処理を導入したよう。
- 溜まったジョブを安価なコンピュータで磁器テープにまとめて書き込む
- 高価なコンピュータで計算をバッチ処理で行い、結果を別の磁気テープにまとめて書き込む
- 安価なコンピュータで結果が書き込まれている磁器テープからプリンタで結果を出力する
上記の手順3にて、高価なコンピュータ(本ではメインのコンピュータとも呼んでいる)以外で処理を行うこと、すなわち安価なコンピュータで処理を行うことを”off line”という言葉を使って説明している。
これはオフラインの語源なのかもしれない。
追記
goo辞典によると、以下の記載がある。
コンピューターの中央処理装置と入出力装置などとが切り離されている状態。また、端末がインターネットなどの通信回線に接続されていないこと。⇔オンライン。
高価なコンピュータを中央処理装置、安価なコンピュータとプリンタを一つの出力装置と考えると、一つ目の状態に当てはまっているので、上記はオフラインの語源なのかもしれない。
ちなみに、goo辞典の出典はデジタル大辞泉(小学館)だった。
@1.2.4
MS DOSの元となるOSの価格
話しによると、MS DOSの元となるDOSを、ビル・ゲイツは75,000ドル
でシアトル・コンピュータ・プロダクツから買い取ったらしい。
ちなみに、DOSを書いたTim Patersonも雇ってしまったらしい...(交渉が上手いんだろうなぁ)。
Mac OS XはUNIXベースのOS
Appleは、カーネギーメロン大学のMachマイクロカーネルから派生したカーネルを採用した。Machマイクロカーネルは元々、BSD UNIXのカーネルを置き換えるために開発されていたものなので、Mac OS XはUNIXベースのOSと言える。
@1.3.1
PSW
PSW(Program Status Word)はCPUの持つレジスタの1つ。CPUの状態を持つ(←英語版Wikipwdiaによると、プログラムカウンターの兼ねると書いてあった)。このレジスタは、条件命令の結果やCPU priority(←よく分からなかったので翻訳できなかった)、CPUのモード(ユーザモード or カーネルモード)、その他のcontrol bitを保持する。
プログラムからPSWを使うときは、全て読み込むことはよくあるが、全てを書き換えることはあまりないらしい(つまり、PSWの一部のフィールドのみを書き換える)
CPUのモード
カーネルモード
CPUは命令セットにあるすべての命令を実行できる。
普通はOSは常にカーネルモードで実行される。一部の組み込み分野で使われるOSはOSの機能の一部がユーザモードで実行されることもある。
ユーザモード
I/Oやメモリ保護関連の命令は直接実行できない。もちろんPSWを変更することでCPUのモードを変えようという試みも実行できないようになっている。
ユーザプログラムはユーザモードで実行される。ユーザプログラムがカーネルモードでしか実行できない命令を実行したい場合は、システムコールを使う。システムコールはカーネルにトラップされる。トラップ命令はCPUのモードをユーザモードからカーネルモードに変更し、OSを呼び起こす。
疑問(未解決)
システムコールはカーネルにトラップされる、とあるがカーネルは常に、または定期的にCPUの使用権を与えれれているのか?そうではないと、システムコールをトラップできない気がする。
疑問(未解決)
Program Status Word(PSW)の英語版Wikipediaによると、PSWはプログラムカウンタの機能も持っているらしい。単体のプログラムカウンタとPSWのプログラムカウンタの用途の違いは何のかが知りたい。
英語版Wikipediaから引用
The program status word (PSW) is a register that performs the function of a status register and program counter, and sometimes more.
@1.3.2
キャッシュライン
キャッシュメモリのデータを管理する単位。単にラインとも呼ぶ。通常は64Byte。