システムソフトウェア、基本ソフトウェア、OS、制御プログラム、カーネル、シェル、デバイスドライバ、ミドルウェア、応用ソフトウェア、ユーティリティプログラム、プラグインソフトウェア、ジョブ管理、タスク管理、データ管理、記憶管理、入出力管理、通信管理、ユーザ管理、運用管理、障害管理、セキュリティ管理、ブートストラップ、BIOS、ブートローダ、起動ドライブ、ネットワークブート、フラッシュブートローダ、UEFI、マルチOS、マルチブート、VM、仮想マシン
ソフトウェアを区分するのには多様な観点がありますが,ハードウェアに密着しているか,それとも人間の利用分野に近いかにより区分すると次のようになります。また,これらの体系も厳密なものではなく,人により解釈も異なりますし,どちらにも属するようなソフトウェアもあります。
ソフトウェア
├ システムソフトウェア
│ ├ 基本ソフトウェア
│ │ │(オペレーティングシステム:OS)
│ │ ├ 制御プログラム(カーネル)
│ │ │ └ デバイスドライバ(周辺機器メーカー提供)
│ │ ├ 言語プロセッサ
│ │ └ ユーティリティプログラム
│ │
│ └ ミドルウェア
│
└ 応用ソフトウェア(アプリケーションプログラム)
├ 共通応用ソフトウェア(いわゆる市販アプリ)
│ └ プラグインソフトウェア
│
└ 個別応用ソフトウェア(通常は自社特有のシステム)
この体系の境界はあいまいな点があります。OSは、汎用コンピュータ時代に確立した概念です。当時はIBMが圧倒的な立場にあり、IBMによる概念やプロトコルが業界標準として受け入れられていたので、比較的明確だったのですが、現在では多数の企業や団体が林立しています。そのため、ユーティリティプログラムと応用ソフトウェアの区分は分からなってきました。OSの分野まで関係しているミドルウェアもあります。
現在の代表的なOSには Windows、MacOS、UNIX、Linux などがあります。汎用コンピュータのOSではMVSやVSE(いずれもIBM)などがあります。
その他、スマートフォン用、組込みシステム用など限定した分野に特化したOSがありますが、ここでは対象外とします。
OSは人間社会での執事や番頭(古い!)のような役割です。主人の指示を一元的に聞いて、いくつかの仕事に分解し、それぞれに適した部下に適切な指示を与えて実行させて監視し、その状況や結果をまとめて主人に報告します。また、主人の意向に適切に応えられるように、部下の訓練や適切な設備や器具、体制の整備などを行います。
すなわち、OSとは利用者とコンピュータとの間にあって、コンピュータシステム全体を統括するソフトウェアです。
OSの目的として、次のようなことがあげられます。
OSには広義と狭義の解釈があります。広義には基本ソフトウエアとしての解釈で、制御プログラム、言語プロセッサ、ユーティリティプログラムを含みます。狭義には制御プログラムのことです。
制御プログラムは、中核な部分でありカーネル(kernel)といいます。
応用ソフトウェアやミドルウェアとOSの間の連絡は、直接カーネルが対応できますが、人間からの指示はGUIやコマンドプロンプトなどで行われるので、それをカーネルに伝えるには通訳(インターフェース)が必要になります。そのインターフェースをするプログラムのことをシェル(shell)といいます。
当初は、Linuxはモノリシックカーネル、Windowsはマイクロカーネルとして開発されましたが、その後、両OSとも、二つの要素を持つようになりました。
共通応用プログラムとは、オフィスツール、Webブラウザ、給与計算パッケージなどのように、不特定の個人や企業を対象にしたプログラムです。市販アプリ(無料のものもある)といわれるものです。
それに対して個別応用ソフトウェアとは、自作か外注かに関係なく、個人や企業が自己利用を前提として作成したプログラムです。
APIとは、応用ソフトウェアなどからOS機能を使うときの呼び出し手順や、記述方法を定めた仕様のことです。
OS機能を呼び出すにはシステムコールがありますが、APIのよりシステムコール以外の機能を利用することができます。
プログラムからOS機能を利用する記述方法を標準化したことで、プログラムの開発が容易になりました。また、APIの仕様が同じならば、同じプログラムを異なるOSでも動作します。
APIは発展して、応用ソフトウェアがそれを利用するためにインターフェースを公開して、他の応用ソフトウェアから使える機能になっています。
WebブラウザやPDFなど広く使われている応用ソフトウェアの機能を追加する小さなプログラムです。単独では動作せず,応用プログラムに組み込むことによって動作します。
プラグインソフトウェアが充実していることが、元ソフトウェアの付加価値を高めます。また、第三者提供のプラグインソフトウェアでは、元ソフトウェアは人気の高い定番ソフトです。
例えば、PDFファイルは、アドビシステムズが開発したファイルフォーマットですが、それを取り扱うAcrobatに豊富なプラグインソフトウェアが提供され普及したため、このファイル仕様がISO規格になりました。
近年は、OSS(オープンソースソフトウェア)が注目されています。ソースコードを公開しているので、アドオンソフトの開発が容易です。むしろ、著名なOSS(Linux Firefoxなど)は、プラグインソフトウェアに支えられて広く使われるようになったともいえます。
プラグインソフトウェアは、元ソフトウェア作成者から提供されるものと第三者が作成提供するものがあります。前者の場合は、元ソフトウェアの拡張版として、バージョンアップなどの際に選択してインストールするのが通常です。後者の場合は、オンラインソフトや雑誌の付録DVDなどで提供されるのが通常です。
第三者提供のプラグインソフトウェアを利用する場合、ウイルスなどの悪意コードが含まれていることがありますので、定番になっているソフトを信頼のあるサイトから入手することが肝要です。
また、あまりにも多くのプラグインソフトウェアをインストールすると、元ソフトウェアの動作が重くなることがあります。状況に応じて削除するなど管理する必要があります。
アプリケーションプログラムをパソコンに導入して使えるようにするソフトウェアです。
OSにある汎用のインストーラでインストールできるアプリケーションプログラムもありますが、そうでない場合は、個別のインストーラがアプリケーションパッケージに付属する実行可能ファイルなどの形で提供されます。
通常は、インストーラを起動すると、ウィザード(wizard)という対話方式の画面が表示され、関係するファイルをコピーするストレージ内の位置、導入するソフトウエアや機能の選択、既存のシステム設定の変更内容などを行います。
なお、インストールしたアプリケーションを削除して、システム設定などをインストール前の状態に戻すソフトウェアをアンインストーラといいます。インストーラと対になって提供されます。
OSと応用ソフトウェアの間で機能し、共通したインタフェース利用方法や統一的なコンピュータ機能の利用を応用ソフトウェアの要求に従って提供するソフトウェアです。
異なる機種や応用ソフトウェアの違いを吸収し、移植性や相互接続性を高めることにより、OSの基本機能を広く共通して使えるようにしたものです。
通信制御やデータベース管理など多様な局面で、OSS(オープンソースソフトウェア)のミドルウェアが提供されています。
PCに接続された周辺装置と,OSやアプリケーションソフトを仲介して,周辺装置を直接に制御・操作するソフトウェアです。
周辺装置は製品ごとに特徴があります。OSは標準的な制御方式を提供しますが、製品ごとの機能をOSに持たせることはできません。それで、OSと周辺機器の間に、それぞれの機器専用の制御ソフトウェア(デバイスドライバ)が必要になります。
デバイスドライバは、一般に周辺機器メーカーから提供され,最初にその機器を接続するときにインストールします。なお、普及している機器については、事前にOSにデバイスドライバが登録されています。OSがもつデバイスマネージャがデバイスドライバの登録/管理をしています。
デバイスドライバは個々の機器に対応しています。同一機種が複数台あるとき、どちらも同じデバイスドライバなのですが、別々にインストールする必要があります。
通常は、機器に一意のシリアルナンバーが割り当てられており、OSは別機器だと認識するので、通常の手続きでインストールできますし、自動的にデバイスドライバをコピーすることもあります。
また、プリンタが機種に関係なく複数台ある場合は、印刷オプションで機器選択画面が表示されます。これはデバイスドライバとOSの連携によるものです。
デバイスドライバは、OSが提供する標準インタフェースであるAPIを介して連携します。OS配下で一種のプラグインソフトウェアとして動作するので、OSの大きなバージョンアップや異なるOSへの移行をしたとき(APIの仕様が変わるとき)は、従来のデバイスドライバでは周辺機器の動作は保証できません。新OSに合致するデバイスドライバをインストールする必要があります。通常は、メーカのWebサイトに対応OSのリストがあり、ダウンロードできます。
逆に、周辺機器メーカーがデバイスドライバのバージョンアップをしても、現OSのAPIに準拠することをメーカーが保証しているのですから、OSを修正する必要はありません。
ファームウェアとは、ハードウェアに内蔵されたROM回路で、ハードウェアを制御するものです。
ハードウェアですから書き換えることはできません。また、電源を切っても出荷時の状態が保持されています。その特徴から、電源を入れたときにすぐ起動する処理に向いています。本章の関係では、BIOSやUEFIがファームウェアです。
カーネルは多様な管理機能をもっています。これらの分類や名称はOSにより異なりますし、なかにはOSとしてはもっていないものもあります。
これらの機能を全てOS自体が実現するのではありません。大部分はそれに特化した多数のプログラムが行い、OSはそれらの基本となる要素機能を提供する位置づけになります。
本節では各管理機能の概要を示し、それらの詳細は「参照」で示す各ページで記述します。
主として、スケジュールに関する分野の管理です。
OSやアプリケーションサービスの利用権に関する管理です。
ネット販売サイトで買い物をすることを例にします。最初にそのサイトにアクセスすると会員登録を促されます。氏名、住所、クレジット番号などの個人情報を入力して登録すると会員番号が知らされます。このような個人情報をまとめたものをプロファイルといいます。次回からは会員番号を入力するだけで取引を開始できます。この会員番号に相当するのがアカウントです。すなわちアカウントとは、インターネット上の様々なサービスを利用するための権利(会員証)のようなもので、アカウント(会員証)にプロファイル(会員詳細台帳)が紐づけられます。
他人にアカウントを使われるとプロファイルを知られてしまいます。そのため、アカウントはそれに対応するパスワードとペアで使われます。
アカウントは利用者を特定するものですが、個人特定にはユーザID(あるいはそれに準ずるメールアドレス)があります。
その違いとして、次のことが挙げられます。
身近な例ではパソコンなどの機器利用権です。
OSユーザとは,OSにログインして,OSの機能を利用できるユーザのことです。パソコンにログインするとは、正確にはパソコンを管理しているOSにログインすることなのです。
何の設定もしなければ、不特定多数の人がOSユーザになれます。公共施設や喫茶店などに設置されているパソコンはそうなっています。しかし、個人や組織が所有するパソコンでは、セキュリティの観点からOSユーザを限定するのが適切であり、通常のパソコンはそのような設定をするようになっています。
ユーザはアカウントで認識されます。ユーザはログイン画面で自分のアカウントとパスワードの入力を求められます。
アカウントは、OSの全機能を使える管理者権限をもつ管理者と、それ以外の一般ユーザに分けられます。個々の管理者や一般ユーザに与えられる権限と関連情報をまとめたものもプロファイルということもあります。
一般ユーザでの限定機能のうち、セキュリティの観点では、ファイル(データファイルやプログラムなど)へのアクセス管理が重要です(ファイル管理やセキュリティ管理と重複します)。
ユーザの権限に応じて、次のような制限を講じます。
・ファイルの存在すら知らせない。
・参照だけ、実行だけを許可
・更新も許可
・生成・削除も許可
「OSユーザ」ではOSあるいは機器へのアクセスでしたが、アカウントの説明でも触れたように、SNSやネット販売システムなど多様なアプリケーションで会員証としてアカウントが利用されています。
Microsoft や Google など多様なアプリケーションサービスをしている場合は、個々のアプリケーションではなく、全体で一つのアカウント設定で利用可能にしているものもあります。
これらのときは、管理者はアプリケーション運用者であり、利用者は一般ユーザの立場になります。
セキュリティ制御とは、システムの機密性、安全性、可用性、およびアカウンタビリティ(説明責任性)を保つための制御です。アクセス制御、暗号化制御、外部からの侵入の防御・検出、ロギング機能、オーディット機能などがあります。これらの制御や機能による記録は、記録を根拠にする説明に利用でき、アカウンタビリティを保ちます。
なお、不正侵入防止システムやや暗号化・認証システムなどセキュリティ管理を具体的に実装するには、ファイアウォールやPKIなどの技術を用いるので、OSが直接に管理するものではありません。しかし、それらのシステムの実装を可能にする基本的な機能はOSが持っていますし、それらのシステムを常駐させたり、必要なときに起動する機能(ジョブ機能やタスク機能)はOSの機能です。
パソコンの電源を入れてから、OSが起動して利用可能になるまでの処理をブートストラップ(bootstrap)またはブートといいます。
「電源投入」→「BIOS(注1)」→「ブートローダ」→「OS」の順序でブートストラップが行われます。
(注1)これまでBIOS(Basic Input Output System)が広く使われていたのですが、最近は、代わりUEFI(Basic Input Output System)によるUEFI・BIOSが主流になっています。ここでは、BIOSによるブートストラップを対象にしますが、このような基本動作はUEFI・BIOSでもほぼ同じです。
パソコンに電源を入れると、マザーボードのコネクタがそれをキャッチして、パソコンの電源ユニットであるATX(Advanced Technology eXtended)電源に信号が送られます。
ATX電源は、パソコンの各部に給電を開始します。それが安定するとクロックが動き出し、CPUが稼働状態になります。
CPUは、すぐにBIOSを実行します。
BIOSのプログラムは、電源が切れても内容が消えない(非揮発性)の半導体メモリROMあるいはフラッシュメモリに記録されたファームウエアで、マザーボードに配置されています。パソコンに電源が入ると、このプログラムが自動的に起動します。
BIOSは、主に次の処理を行います。
接続されている周辺機器(ディスプレイ、キーボード、メモリ、マウス、HDDなど) をチェックして、正常にパソコンが起動できることを確認し初期化します。これをPOST(Power On Self Test)といいます。
最初に確認するのはディスプレイです。これは利用者がOSが起動するまでのパソコンの動作を表示するためです。パソコンにトラブルが起こったとき、OS起動前に特定のキーを押して設定状況を調べるとか、OSをセーフモードで起動するなどに必要です。
ブートローダはソフトウェアで、それを格納しているドライブ(通常はCドライブ)を起動ドライブ(ブートドライブ)といいます(注2)。
パソコンやOSを購入したとき、まず起動用のファイルをUSBメモリなどに作成するよう求められます(あるいはCR-ROMが同梱されている)が、後日OSが移動しないトラブルが発生したときの対策のためです。
各デバイス(ドライブ)の先頭セクタをMBR(Master Boot Record)といいます。起動ドライブにはMBRにブートローダをもっていることが記録されています。
BIOSは、各ドライブを順に調べ、最初にブートローダが見つかったドライブを起動ドライブとします。
確認順序は、一般的には光ディスクやUSBメモリ>HDDの順ですが、この順序はパソコン起動時に変更できます(注3)。
ブートローダは、通常は内蔵HDDのCドライブにあります。あえて後にしている理由は、トラブル発生時にはあらかじめブートローダ(起動用のファイル)を保存しておいた復旧用のUSBメモリなどを起動ドライブにするため、それを先に確認させたいからです。
BIOSは、起動ドライブのMBR(先頭セクタ)をメモリの固定位置にロードし起動します。
ここからは、ブートローダに制御が移ります。
BIOSにより起動されたブートローダは、次の2つのステップにより、OSを起動するための各種処理を実行します。
MBRは1セクタしかないので、すべての処理プログラムを入れることができません。プライマリ部分(Boot Strap Loader)であるだけが格納されており、それからブートローダ本体をメモリに読み込まれます。
ブートローダの主要な内容はIPL(Initial Program Loader)です。これがOSを呼び出します。
OSにはプロセッサーの動作モードの決定、ルートディレクトリの設定、デバイスドライバの読込など多様な処理プログラムからなっていますが、それらが定められた順序にしたがってロードされ実行されます。
主要な処理プログラムが実行された状態が「OSが起動した」ことになります。ディスプレイに初期画面が表示されます。
近年は、BIOSからUEFIへと移行してきました。UEFIとは厳密にはBIOSとOS間のソフトウェアインタフェースを定義したもので、そのBIOSをUEFI・BIOSといいますが、通常はUEFIと略しています。また、UEFIのブートローダをEFI(Extensible Firmware Interface)ブートローダといいます。
現在では多くのパソコンがUEFIを標準にしています。
旧BIOSと比較してUEFIには次のような利点がありますが、上述の基本的な動作に関してはほぼ同じです。また旧BIOSとの互換性があります。
電源を入れてもOSのデスクトップ初期画面が表示されないことがあります。Windows10 を例にします。
原因とチェック事項を列挙しますが、必ずしも網羅していないし最善策でもありません。ディスプレイとの接続は正常だとします。
1台のコンピュータに複数のOSをおき、必要に応じて使い分けることができます。WindowsマシンでLinuxを使うなどです。
アプリケーションのなかには特定のOSだけを想定して作成されたものがあります。そのためだけにパソコンを追加するのは不経済です。複数のOSを1台のパソコンに搭載することにり回避できます。
データファイルは双方のOSからアクセス可能です。ファイル形式が双方のOSでサポートされているならば、一方のOSで作成したデータファイルを他方のOSで使うことができます。操作性の向上にも役立ちます。
1台のPCに、WindowsとLinuxなど複数のOSをインストールしておき、PCを起動するときに、どちらのOSからでも起動できるように設定する仕組みです。OSが2種類のときをデュアルブートともいいます。
マルチブート環境を実現するには、それに対応するブートローダとそれを管理するブートマネージャが必要ですが、現在のOSでは標準装備されています。
既存のOS環境で、他のOSをインストールするときに、ブートマネージャがブートローダに複数のOSが存在することを設定します。
この環境でパソコンの電源をいれると、OSが立ち上がる前に、ブートマネージャが利用できるOSのリストを表示します。それを選択することにより、ブートローダは選択されたOSを起動します。
このような方法ですので、同時に複数のOSを立ち上げることはできません。また、他のOSに切り替えるには再起動が必要です。
また、VHD(Virtual Hard Disk)という仮想ディスク機能により、単一の物理パーティション上にもマルチブート環境を構築できるようになっています。
マルチブートは、手軽に構築でき、処理速度は単独OSのときと同じ速度になりますが、OSを変えるたびに再起動が必要なので、頻繁にOSを変える環境では不適切です。
それに対してVMでは、複数のOSが同時に動作可能な状況になっており、OSの切り替えが容易にできます。一つのパソコン(物理マシン)の中に、複数のOSがそれぞれ仮想的な領域を持つことから仮想マシンといいます。
(注)サーバではWebサーバやデータサーバなど多様な用途のサーバがあります。複数の用途のサーバ機能を1台の物理サーバに搭載したものを仮想サーバといいますが、それも含めて仮想マシンということもあります。
ホストOS(Windows)のなかにゲストOS(Linux)をおき、ホストOSからゲストOSを動かすような環境にしたものです。
ホスト型VMでは、ゲストOSをを動かすにはホストOSの処理も必要になるので処理速度が遅くなります。
パソコンのディスクをパーティションに分割し、ドライブCにはホストOS、ドライブDにはゲストOSをおくことでマルチOS環境になります。このドライブDが仮想マシンです。
パーティション分割、ゲストOSのインストール、ホストOSからのゲストOSの稼働、アプリケーションプログラムやファイルの共有化などを管理するシステムを仮想化ソフトといいます。代表的な仮想化ソフトにVMwareがあります。
ハイパーバイザという仮想化ソフトウェアが複数のゲストOSを切り分けるという方式です。この方式では、ホストOSは存在しません。
ゲストOSの動作にはホストOSではなくハイパーバイザが関与しますが、ハイパーバイザは専用化しているので、ホスト型より高速になります。マルチブート方式より遅いですが、同時に多数のOSが使えます。
このような特徴により、サーバに広く採用されています。VMwareにはこれに相当する製品もあります。