コンピュータシステムは、ハードウェアとソフトウェアとを組み合わせてユーザが所望する処理を実行する。そして、このハードウェアとソフトウェアを効率よく管理するソフトウェアとして用意されたのがオペレーティングシステム(OS:operating system)である。OSは、第1図にその位置付けを示すように、ハードウェアとソフトウェアとの仲立ち(インタフェース)を行い、コンピュータのシステム管理とユーザに利用しやすいコンピュータシステムを提供する機能を備えている。このOSは基本ソフトウェアと呼ばれることもある。
この問題を解くにあたり最初にOSについて説明する。
1.OSの目的
(1)ハードウェア資源の管理
コンピュータシステムは、第2図にその概略構成を示すように中央処理装置(CPU:central processing unit)と記憶装置および入出力装置などから構成されている。これらの各種装置はコンピュータシステムのハードウェア資源(hardware resource)と呼ばれている。OSは、これらのハードウェア資源を効率よく利用できるように管理する。
(2)コンピュータシステムの安定稼働の確保
コンピュータシステムの安定稼働を確保するための要素として、以下に示す5つを挙げることができる。
- 信頼性(Reliability):故障率が低く正常に処理を実行できること。
- 可用性(Availability):必要なときに使用できること。
- 保守性(Serviceability):障害の発生に対して簡単に復旧できること。
- 保全性(Integrity):データの矛盾などが発生しないこと。
- 機密性(Security):使用が許されていないユーザの使用を許可しないこと。
これら5つの要素の頭文字を取り、一括してRASIS(レイシス)と呼ばれる。OSはこのRASISの向上を図る役割を担っている。
(3)操作・運用支援
OSは、ユーザがコンピュータシステムを操作しやすくなるような操作支援機能を備えている。例えばディスプレイなどに適切なメッセージの表示を行いながら、その結果を適切に表示するなどしてユーザの操作支援を行う。またOSは、GUI(graphical user interface)と呼ばれるディスプレイ上に表示されたアイコンやウインドウなどのグラフィカルな要素を用いて、マウスなどで操作することによって容易にユーザが操作することができる手段なども備えている。さらにOSは、コンピュータシステムの自動連続処理の実行などの運用支援機能も備えている。
2.OSの構成
OSは、制御プログラム、言語プロセッサ、サービスプログラムから構成されている。
(1)制御プログラム(control program)
制御プログラムの主な管理機能としては、次のものがあげられる。
㈰ジョブ管理:
ジョブ(job)はユーザから見たひとかたまりの仕事の単位のことをいい、一つのジョブは複数のプログラムから構成されている。
OSは、ジョブをジョブ制御言語JCL(job control language)を利用して制御する。ジョブ制御言語は、ジョブの実行手順の指示を行い、ジョブ毎にどの処理プログラムとデータファイルを使ってジョブを実行すべきかをCPUに指示するものである。
㈪タスク管理:
タスク(task)はハードウェア資源を使う処理実行の最小単位をいう。ジョブがユーザ側から見たコンピュータの仕事の単位である一方、タスクはコンピュータが管理する仕事全体もしくは中央処理装置が実行しているプログラムのことをいう。
OSは、CPUがタスクの処理に使うことができる時間をタスク管理プログラム(task management program)によって割り当て、コンピュータシステムの効率的な利用を行う。
タスクは、プロセス(process)と呼ばれることもある。
プロセスは、OSの管理の下、第3図に示すように実行状態、実行可能状態および待ち状態の3つの状態を遷移しながら処理される。
(a)実行状態:この状態は、プロセスにCPU使用権が割り当てられ、CPUを使って命令を実行している状態である。通常のコンピュータシステムでは、ある時点に実行状態にあるプロセスは唯一しか存在しない。しかし、複数のCPUを備えるマルチCPUシステムの場合、複数のプロセスが実行可能状態に移ることができる。
(b)実行可能状態:この状態は、プロセスがCPUを使う用意はできているものの、ほかのプロセスがCPUを占有しているために、CPUが割り当てられない状態である。この状態のプロセスは、何も実行せず、CPUタイムが割り当てられるのを待つ。実行可能状態にある複数のプロセスから選択することは、ディスパッチング(dispatching)と呼ばれ、その選択を行うプログラムをディスパッチャ(dispatcher)と呼ぶ。
(c)待ち状態:この状態は、プロセスがある事象(event)の発生を待っている状態である。プロセスは、そのイベント(通常はデータの入力あるいは出力など)が発生するまではCPUを占有する必要がない。入出力動作の開始は、CPUが実行する入出力命令によるが、入出力の動作そのものはCPUを経由しないで直接メモリとデバイスと間で行われる(DMA:Direct Memory Access)ので、CPUを占有する必要がない。
㈫データ管理:
コンピュータシステムには種々の入出力装置が接続されているが、それぞれの入出力装置が取り扱うデータの管理方法は、一般に装置毎に異なっている。OSは、このような入出力装置の違いを意識せず一括して入出力データとして取り扱えるようなデータ管理(data management)機能を備えている。
データ管理は、コンピュータが扱うデータの入出力管理と共に、ファイルの編成方法も管理する。ファイルの編成方法としては順編成、直接編成、索引編成などがある。
これらのデータ管理によって、コンピュータシステムの処理効率を向上させることができる。
㈬記憶管理:
コンピュータのハードウェア資源のうち、記憶装置の管理を行う役割を担っている。ちなみに記憶装置には主記憶装置と補助記憶装置とがあり、一般的に主記憶装置の記憶容量に比べて補助記憶装置の記憶容量が大きい。また主記憶装置には物理アドレス(physical address)といわれる番地が付けられて管理されている。物理アドレスは、主記憶装置上に付けられた実際のアドレスであり、実記憶アドレス(real storage address)といわれる。
ところでOSの記憶管理は、補助記憶装置などに主記憶装置の容量よりも大きな記憶場所を確保して、この記憶場所を主記憶装置の記憶領域の一部と見なし、あたかも記憶装置が大きくなったかのように利用できるような機能を備えている。これを仮想記憶制御(virtual storage supervision)と呼ぶ。仮想記憶システムを用いることで、実際の主記憶装置の容量以上に記憶装置が存在するものとしてコンピュータシステムを動作させることができる。
仮想記憶システムを適用すれば、主記憶装置上の記憶領域の容量が不足した場合、例えば磁気ディスクなどの補助記憶装置上に仮想的にデータの記憶領域を構築して主記憶装置と補助記憶装置とを一つの大きな記憶領域として利用することができる。このためOSは、補助記憶装置内の記憶領域を一定の大きさ(数kバイト程度)のページ(page)に細分して記憶管理する。
㈭運用管理:
OSは、コンピュータシステムの稼働状況の把握、ユーザ管理やセキュリティ管理などを行うべくコンピュータシステムの稼働状況をログ(log)と呼ばれるファイルに記録する。
またOSは、利用者毎にコンピュータシステムの利用できる範囲を設定するユーザ管理や暗証番号やパスワード(password)などを利用したセキュリティ管理も行う。
㈮障害管理:
OSは、コンピュータシステムが安定に運用できるようにシステムを絶えず監視して運用状況の把握をすると共に、その運用状況を記録する。またコンピュータシステムに異常・障害が発生したときOSは、その回復処理なども行う。
㈯入出力管理:
OSは、コンピュータシステムに接続された各種入出力機器の制御も行う。例えば、OSには、優先度の高い入出力装置からの処理要求や、ジョブの優先度に応じた入出力処理を実行・処理する機能が備えられている。
入出力管理は、データを一連のかたまりとして取り扱っている。このような一連のデータのかたまりを論理レコード(logical record)または物理レコード(physical record)と呼んでいる。
㉀通信管理:
ほかのコンピュータシステムとの間で相互にデータのやりとり、あるいはコンピュータに接続されている端末との通信管理を行うための機能が通信管理である。
通信管理は、国際標準化機構OSIが規定したOSI参照モデル(OSI reference model)に準拠している。
(2)言語プロセッサ
アプリケーションプログラムは、例えばFOTRANやC言語などのプログラミング言語で記述されている。この言語はプログラムを作成するプログラマには理解しやすい言語体系をとっているが、コンピュータは、その種の言語のままでは実行することができない。このため、コンピュータが理解できるような言語(機械語)に変換(翻訳)する必要がある。この役目を担うOSの機能が言語プロセッサである。
言語プロセッサがあることによって、コンピュータのプログラマは人間が普段使っている言語(自然言語)に近い表記のプログラム言語を使うことができ、効率的なプログラムの開発、運用、保守が可能となる。
(3)サービスプログラム
サービスプログラム(service program)は、ユーティリティププログラム(utility program)とも呼ばれている。
サービスブログラムには、テキストを編集するエディタ(editor)や、プログラムの不具合を見付けやすくするデバッカ(debugger)などのほか、言語プロセッサで作成された機械語のプログラムを、実行プログラムに変換する連携編集プログラム(linkage editor program)などがある。
3.OSの性能評価
OSの性能を評価する尺度に時間を用いたターンアラウンドタイムとレスポンスタイムとがある。
(1)ターンアラウンドタイム
ターンアラウンドタイム(turn around time)は、コンピュータシステムにジョブの処理を依頼してから、結果が得られるまでの経過時間のことを指す。ちなみに、単位時間当りにコンピュータシステムが処理した仕事量のことはスループット(throughput)と呼ばれている。
(2)レスボンスタイム
レスボンスタイム(response time)は、コンピュータシステムに指示を与えてから応答が返ってくるまでの時間のことである。
4.OSの処理能力向上
OSはターンアラウンドタイムとレスポンスタイムの短縮を行い、処理能力を向上させている。このため、多重プログラミングやジョブの連続処理などを行っている。
(1)多重プログラミング
多重プログラミング(multi programming)は、複数のプログラムを1台の中央処理装置で処理し、ハードウェア資源を有効に活用する手法である。この手法によれば、処理に時間のかかる入出力処理をプログラムが実行している間に、別のプログラムの処理を先に行い中央処理装置にむだな空き時間を作らないようにすることができる。したがって、コンピュータシステムの効率的な処理を実行することができる。
例えば、第4図(a)に示すように処理Aの中に入出力処理を行う命令があったとする。このとき、中央処理装置は入出力の動作が完了するまで、ほかのいっさいの処理を行わない。一方、第4図(b)に示すように入出力処理を実行中の中央処理装置の処理が空いている時間を次の処理Bに割り当てる。入出力処理が完了すると処理Aの実行を再開する。このような多重プログラミングの手法を用いることでCPUの空き時間を作らず、全体の処理時間を短縮することが可能となる。
(2)ジョブの連続処理
ジョブの連続処理は、一つのジョブの処理が終了したら続けて次のジョブの処理が行えるようにジョブの準備作業と後始末を自動的に行い、コンピュータシステムの効率的な処理を行う方法である。
(3)マルチタスキング
マルチタスキング(multi-tasking)は、コンピュータシステムがユーザの指示に基づき、ある処理を実行しているときに別の複数の処理をこまめに自動的に切り換えながら、あたかもそれらの処理を同時に行っているように実行させることをいう。例えば、ユーザがエディタでプログラムや文章を作成中に、バックグラウンドで通信データの処理や、演算処理などを行わせることなどである。したがって、マルチタスクによってコンピュータの利用効率を向上させることができる。
(4)割込み処理
コンピュータシステムでは一連の処理が順序よく行われていくが、緊急を要する処理が必要とされる場合は、現在実行中の処理を割込み(interrupt)によって中断し、割込みを先行処理する。そして割込み処理が完了すると、中継した処理に戻る。
(5)排他制御
排他制御は、コンピュータシステムにおいて、ある資源(リソース)に対して同時にアクセスできないように制御することをいう。例えば、ネットワークで接続された複数のコンピュータが、そのネットワークに接続されている補助記憶装置などに同時にアクセスした場合、あるコンピュータが補助記憶装置内のデータを更新中に別のコンピュータが同じデータに対してアクセスすると不都合を生じることがある。すなわち、一方のコンピュータがデータを更新中に別のコンピュータがデータを読み込むと、一部分のデータが更新されないまま読み出されることになる。このような問題を回避するには排他制御によって誰かがアクセス中はそのデータをロックして、ほかのユーザにはアクセスできないようにする。
(6)スプーリング
CPUの処理速度に比べてプリンタや読取り装置などの周辺装置の処理速度は、一般に大変遅い。この処理速度の遅い機器のためにCPUの使用時間をむだに消費されないようにする機能をスプーリングという。例えば、プリンタはCPUに比べてはるかに処理速度が遅いため、印刷開始から印刷終了までCPUを使用すると、その間CPUは待たされるので、ほかの処理を実行することができない。このためプリンタへのデータをメインメモリや磁気ディスク装置などの記憶装置に一時保存しておき、プリンタの処理進行にあわせて保持したデータを取り出す。
スプーリングの手段を使えばCPUはほかの処理をしながら処理の合間(バックグラウンド)に記憶装置に蓄積された印刷データを取り出してプリンタに送ればよい。
5.OSの種類
(1)シングルユーザOS
コンピュータシステムを同時に一人の利用者(シングルユーザ)だけしか使用することができないOSのことをいう。例えば、パーソナルコンピュータのOSが相当する。
(2)マルチユーザOS
大型計算機などの汎用コンピュータのように同時に複数の利用者(マルチユーザ)が利用することができるOSである。シングルユーザのOSに比べて機能が豊富で、複雑である。
解説を参照しながら解答をまとめると次のようになる。
(1)仮想記憶制御
仮想記憶制御は、コンピュータが保有するメインメモリなどの物理的記憶装置の容量よりも大きなメモリ空間を利用することができる制御方式である。仮想記憶制御では、ハードディスクなどの外部記憶装置を仮想的な論理アドレス空間にマッピングする。そしてコンピュータが実行するうえで必要となるプログラムのコードやデータなどはメインメモリに存在させ、それ以外のコードやデータは仮想的に割り当てたメモリ空間へ移動させる。
仮想記憶制御によれば、コンピュータに存在する物理アドレス空間と論理アドレス空間の変換はOSが司るので、アプリケーションソフトウェアはメインメモリの容量を意識することなく広大なメモリ空間が利用可能である。OSの仮想記憶制御によって、アプリケーションの高機能化や大容量データの取り扱いが可能になる。
(2)マルチタスキング
マルチタスキングは、複数のタスクを並行して実行させることである。
CPUは、ある一瞬をとってみると複数のタスクのうち、一つのタスクしか実行できない。このため複数のタスクを動かすにはタスクを切り換える必要があるが、この切換え時間を短い周期で行えば、コンピュータのユーザから見た場合、あたかも複数のタスクが同時に実行しているように見える。
このマルチタスキングは、OSがタスクを強制的に切り換えるプリエンプティブ・マルチタスクと、OSが強制的に切り換えない疑似マルチタスクの2種類に大別することができる。
(3)排他制御
コンピュータシステムにおいて、ある資源(リソース)に対して同時にアクセスできないように制御することを排他制御という。例えば、複数のコンピュータからアクセス可能な記憶装置が保持するデータにつき、一方のコンピュータがデータを更新中に別のコンピュータがこのデータを読み込むと、一部分のデータが更新されないまま読み出されることになる。このような問題を回避するには排他制御によっていずれかのコンピュータが当該記憶装置にアクセス中は、データをロックして、ほかのユーザにはアクセスできないようにする。
(4)ディスパッチング
ディスパッチングは実行可能状態のタスクから優先順位の高いものを選択してCPUの処理時間を割り当てることである。
コンピュータに与えられたジョブはOSによってタスクに分解されてジョブ制御言語(JCL)によりジョブ・キューに登録される。登録されたジョブは、優先順位に従って実行され、実行結果はまとめてシステムの出力装置から出力される。
(5)スプーリング
CPUの処理速度に比べてプリンタや読取り装置などの周辺装置の処理速度は大変遅い。この処理速度の遅い機器のためにCPUの使用時間をむだに消費されないようにする機能がスプーリングである。例えば、プリンタの処理速度は、CPUの処理速度に比べてはるかに遅いため、印刷開始から印刷終了までCPUを占有してしまうと、その間CPUは、ほかの処理を実行することができない。このためプリンタへのデータをメインメモリや磁気ディスク装置などの記憶装置に一時保存し、プリンタの処理進行にあわせて保持したデータを取り出すスプーリングの手段を使えばよい。
CPUはほかの処理をしながら処理の合間(バックグラウンド)に記憶装置に蓄積された印刷データを取り出してプリンタに送ればよい。