オペレーティングシステムとは、コンピュータを司る基本的なソフトウエアである. そのようなソフトウエアを基本ソフトウエア(basic software)という. 基本ソフトウエアは,他に言語を司る処理系のコンパイラなどがある.
コンピュータは,基本的なハードウエアとして,
このように,コンピュータに電源を入れた後に,実際に人間がコンピュータ を自在に操作することができるようにするために,ソフトウエア(電源を 入れた直後に起動される)が必要になる.そのソフトウエアが オペレーティングシステムである.この講義では, 簡単なオペレーティングシステムを実際に設計,開発しながらその本質を 説明する.
最近では,Windows95/98, Linux, FreeBSD, Solaris など, いわゆるウインドウシステムを含んだ, 「ビジュアル」なオペレーティングシステムが標準となっているが, ウインドウシステムは,オペレーティングシステムの本質的な機能ではない. そのため,本講義では,その種類を概観するにとどめる.
最初に紹介したように,オペレーティングシステムは,コンピュータのソフトウエア の中で,最もハードウエアに近い位置にあるため,ハードウエアの基本要素を理解する 必要がある.ここ を参照.
オペレーティングシステムは,以下の構成となっている.
色づけされた部分をカーネル(kernel)(日本語では核) といい, OS そのものを指す。最近では,低レベルメモリ管理,プロセス管理, 同期処理程度までを含んだ マイクロカーネル(micro kernel) を 一まとめにし,その他の部分をユーザプログラムと同様のプロセスとして 実現しているOS が主流になりつつある。マイクロカーネルに対して, 従来の色づけした部分を一まとめにした(一枚岩)カーネルを, モノリシックカーネル(monolithic kernel) という。
OS を起動することをブートストラップ(boot strap) という. コンピュータの電源を入れ、 CPU に起動するための信号が流れたとき、最初に実行するプログラムを ブートプログラム(boot program)または、IPL という. このプログラムが、カーネルをメモリに読み込むのではなく,ローダ(loader) というプログラムを読み込む.このローダが OS のカーネルを読み込む。 ブートプログラムは、ROM(Read Only Memory) としてコンピュータ固有の プログラムとして仕組まれている。ローダ以降のプログラムは、各OS 毎に 決めることができるので、このような 2 段階の読み込みが行われる。
ローダが、カーネル読み込んだ後、最初に、カーネルの各層を初期化する。 この初期化プログラムは、上図の各層にわたるので、図では省略した。その後、 プロセスが起動され、OS としての処理が開始される。
オペレーティングシステムは,実際に人間がコンピュータを自在に 操作することができるようにするためのソフトウエアであるが, その中心となる概念は, 並行システム(current system) の概念である. コンピュータは,ディスプレイに文字を表示しながら, キーボードからの入力を受付け,ディスクなどの 2 次記憶にアクセスしなければ ならない.つまり,「同時に」 いくつもの装置(device) を扱わなければならない.
この講義では, Simplified Xinu (Xinu は,ジーニューと読む) を主に説明する. この OS は,児玉が,Xinu (本) をもとに,講義用に書き換えた OS である.Xinu は,「Xinu is not UNIX」 の略で, Cumer により,UNIX よりわかり易く,簡単で,教育に向いているとして, 設計し,開発した OS である.実際,上図のように階層化され,非常に理解し易い 記述となっている.
ユーザは,通常,JCL(Job Control Language) を使って, 自分自身が処理したいジョブを制御するプログラムを作成し,コンピュータに 要求を出す.
バッチ処理の次に考え出された処理方式である.Time Sharing System の略である. 処理の単位を時分割(time slicing,time sharing) に処理する.
現在の多くの OS が採用している処理方式である.処理の単位をプロセス といい,スケジューラ(scheduler) が各プロセスに,時分割に処理を 割り当てる.この方式により,複数のユーザー(multi user) が,(見かけ上)同時に 処理することができるようになった. バッチ処理と違い,複数の要求に対して,同時に処理することができるので, ユーザーは,長く待たされることは少ない.処理要求に応じては, 優先順位をつけるなどして,緊急に処理させたり,処理を遅らせたりすることが できる.