Operating System Concepts 8th editionの第一章 Introduction前半のまとめです。この章ではOSのざっくりとした役割、典型的なコンピュータの物理的な構成を軽くおさらいし、その構成の知識を前提としてOSが提供する代表的な機能を紹介しています。最後にオープンソースのOS、つまりLinuxやBSD UNIX, Solarisの話をしています。ところで本章のSummary部分がかなり優秀で、そこを読めば大体の概要が掴めます。こういう教科書のSummaryって「いかがでしたか?」的なあまりまとめとして役に立たないイメージがあったのですがさすが世界中でよく読まれている教科書という感じです。同じ本を持っている方はそちらを参照される方がいいかと思います。
OSのざっくりとした役割
ユーザー視点
PCのような、ある一人がコンピュータを独占することが多いケースでは、OSはその人の作業性や娯楽体験を最大化する役割を持つ。この場合そのOSが複数人同時の使用が可能だったとしても、一人で使うユースケースに最適化された設計がなされている。一方でメインフレームのようなケースでは複数ユーザーが使用するので、リソースをみんなに公平に割当て、最大限活用できるようにすることがOSの役割となる。また、ワークステーションなどではOSはPCとメインフレームの中間的な役割を期待される。
システム視点
システム視点ではOSはユーザーやプログラムのリソース要求に対して、リソースを割り当てるリソース管理者と言える。また、ユーザーのプログラムが好き勝手やったりIOなどのリソースを不適切に使わないようにする制御プログラムとも言える。
OSとは
コンピュータが起動している間ずっと動き続けているプログラムと定義するのが一般的である。そのようなプログラムをカーネルという。カーネルの一部ではないがOSに関連するプログラムとしてシステムプログラムが存在する。それ以外は応用プログラム(いわゆるアプリ)となる。ただし、OSを厳密に定義することは難しい1。
コンピュータの動作
起動時
コンピュータが起動するとROM(Read only memory)もしくはEEPROM(Electrically erasable programmable memory)からブートストラッププログラム(ファームウェア)が読み込まれ、各機器の初期化を行う。ファームウェアはOSをどこから読み込むか知っており、OSをメモリに読み込んで実行する。OSはそれ自身で持っている初期化ルーチンを実行したあと、色々な作業を始める。
割り込み
ハードウェアやソフトウェアによって引き起こされるイベントのこと。割り込みが起こるとハードウェアは割り込みがあったことをCPUに伝える。CPUは今やってることをやめて、割り込み処理を実行する。割り込み要求は割り込み処理の番号を指定する。CPUは割り込みベクタと呼ばれるテーブルの、その番号の位置を参照し、割り込み処理のアドレスを取得、実行する。割り込み処理が終わったら割り込み発生時のプログラム位置に戻って、もとの処理を続行する。続行するためには、割り込み処理の前に現在処理中の位置とレジスタなどのプロセッサ状態を保存し、割り込み処理完了後復活させる事が必要であり、実際そのような機能が実装されている。結果、プログラムは割り込みが起きたことを感知することなく処理を続行できる。
システムコール
ソフトウェアによって割り込みを引き起こすための命令。
記憶域
コンピュータを構成する記憶域は速くて小容量なものと、遅くて大容量なものがあり、それらを組み合わせて使っている。速い記憶域ばかりを使いたいが、全データは乗り切らないので、都度記憶域間でのデータの入れ替えが行われている。また、速度と容量のトレードオフの他に、揮発性か不揮発性かも記憶域を特徴づける。揮発性の記憶域のデータは電源を落とすと消えるが、不揮発性の場合は電源を落としても残る。これら記憶域を速さの順に並べると
- CPUのレジスタ
- CPUのキャッシュ
- メインメモリ
- 電気ディスク2
- 磁気ディスク
- 光学ディスク
- 磁気テープ
となる。
IOの流れ
OSのデバイスドライバが各装置のデバイスコントローラのレジスタに指示を書き込む。デバイスコントローラは指示内容に従った動作を行い、終わったら結果を割り込みによってデバイスドライバに通知する。デバイスドライバは結果を取得後OSに制御を戻す。
例えば大容量データの読み込みで少し読むたびに割り込みが発生し、デバイスドライバが動いてCPUの時間を消費してしまうとCPUの負荷となる。これを回避するためデバイスコントローラはDirect memory access(DMA)3という技術を使用する。これによって指定されたメモリ上の場所にデバイスコントローラが直接値を書き込み、ブロック単位でしか割り込みを発生させないので、少し読むたびCPUが煩わされることはなくなる。
マルチプロセッサ
シングルプロセッサのシステムとマルチプロセッサのシステムがある。マルチプロセッサシステムはバスやメモリ、周辺機器を共有しておりプロセッサが互いに密にやり取りし合う。パラレルシステムやtightly coupled systemともいう。
マルチプロセッサのシステムは、高いスループット、シングルプロセッサを複数用意するより安いこと、信頼性が高いことが特徴として挙げられる4。
マルチプロセッサシステムはどれかのプロセッサが主、他が従となる5非対称なものと、皆が同等なものとがある。
マルチプロセッサになるとメモリ上のデータのアクセス速度がアドレスによって異なるnon-uniform memory access(NUMA)が生じる。
マルチコアとマルチプロセッサの違いは、マルチコアは同じチップにプロセッサが全部載っている場合に限定されるのに対し、マルチプロセッサは別のチップに載っている場合も含む。
クラスタシステム
独立したコンピュータを複数個集めて共同作業させるシステム。例えばLANなどでつなぐ。冗長性を高めて可用性を確保できる。クラスタシステムも対称・非対称がある。非対称の場合は片方をスタンバイさせておき、問題発生時にフェールオーバさせる。対称の場合は両方動いて両方が処理を実行する。
可用性を確保する以外にも並列計算を実行するなどにも使える。
複数のコンピュータが同じ記憶域にアクセスする必要がでることがあるが、その際に適切なロック機構が必要となる。そういう機能をDistributed lock manager(DLM)という。
クラスタシステムの進歩は(当時)著しい。これはStorage area networks(SAN)6によるものが大きい。
コメント