OSとはオペティーングシステム(Operating System)のことでソフトウェアの種類の一つですが、パソコンすべてのハードウェアとソフトウエアを管理し、利用者が利用しやすいようにサービスしてくれるソフトウェアです。
機器の基本的な管理や制御のための機能、多くのソフトウェアが共通して利用する基本的な機能などを実装しています。
初期のコンピュータには、プログラム自体がコンピュータのハードウェアをすべて制御していましたので、OSはありませんでした。
現在は、メモリなどの記憶装置の管理、ハードディスクなどの補助記憶装置の管理、マルチタスクなどのプロセス管理、更にはGUI(Graphical User Interface)などのインタフェース、TCP/IPなどのネットワークなど、パソコンからスーパーコンピュータ、スマートフォンやゲーム機などを含む各種の組み込みシステムで、使用されています。
目次
OSの種類
現在パソコンで使用されているOSでは、Windows、macOS、Linuxが有名です。
スマホのiOS、Androidも、同じくOSになります。
あらゆるOSの始祖はUNIXで、現在のOSはUNIXで発明・実証された設計を参考にしています。
そのUNIXをベースにして改良されたOS、BSDが開発され、様々なOSの基盤となりました。
現在でもFreeBSD、NetBSD、OpenBSDなどが使用されています。
Windows
Microsoft社が開発・販売する、一般向けOSのシェアのほとんどを占める、大きな知名度を持つOSですが、OSの始祖UNIX系OSとは全く異なる構造です。
1995年、Windows 3.1の後継として発売されたWindows95は、インターネットが一般に広まりはじめた時期に、一般家庭にも急速な普及を見せた画期的なOSで、パソコンを爆発的に普及させる原動力となりました。
Windows95、Internet Explorerのチーフアーキテクトを務めたのは、日本人の中島聡氏です。
macOS
Appleが開発・販売するBSD系UNIXをベースに開発されたOSのです。
Windowsとは異なり、同じくApple製のMacのみにしかこのOSは使用できないため、パソコン含めハードウェアの選択は限られてきます。
一方ソフトウェアは、UNIXベースのOSですので、BSD、Linuxなど他のUnix系OSで開発されたソフトウェアを、使うことができます。
Linux
Linuxは、カーネルとしてのLinux(Linuxカーネル)を指す場合と、Linuxカーネルをカーネルとして用いたOSを指す場合があります。
OSとしてのLinuxは、Unix系のOS の1つとされています。
スーパーコンピュータ、メインフレーム、サーバ、パソコン、携帯電話、テレビなど家電、カーナビ、ゲーム機など幅広く使用されています。
AnodoroidはLinuxカーネルの上に構築されています。
Linuxの特徴は、フリーかつオープンソースで、ソースコードは無償で入手でき、非営利・営利に関わらず誰でも自由に使用・修正・頒布できます。
Linuxは、世界中の開発者の知識を取り入れることによって、あらゆる方面に利用できる幅広い機能と柔軟性の獲得と、数多くのユーザの協力によって問題を修正していくことで、高い信頼性を獲得しています。
OSの役割
OSの主な目的は、ハードウェアの抽象化、リソースの管理、そしてコンピュータ利用効率の向上です。
ハードウェアの抽象化
パソコンごとに、製造元が異なります。
実現する機能は同じでも、組み込まれているハードウェアの詳細な仕様は異なり、差があります。
仕様の異なるハードウェアを、統一的で共通の要素抽象化された利用方法を提供することで、アプリケーションソフトの開発が容易になります。
リソースの管理
OSは、複数のアプリケーションソフトを同時に利用する際に、互いに独立して動作できるように管理しています。
複数のプログラムから、同じ要求が起き競合した場合は、待たせる、エラーを返すなど、適切に対処します。
コンピュータの利用効率の向上
複数の処理を同時に実行する際、メモリなどの割り当ての順番、処理の割り当て時間などを工夫することで、全体の時間あたりに処理できるデータ量を向上させることが出来ます。
一般の使用上は、あまり感じることはありませんが、大量の処理が必要な場合では重要です。
OSの主な機能
OSにはさまざまな機能がありますが、OSの主な機能は下記になります。
APIとABI
OSの第1の目的は、アプリケーションソフトを動作させることです。
そのためのインタフェースが、APIと呼ばれるアプリケーションプログラミングインタフェース (Application Programming Interface)と、ABIと呼ばれるアプリケーションバイナリインタフェース (Application Binary Interface) です。
カーネル
パソコンは複数のアプリケーションソフトを使用し、どのアプリケーションソフトもCPU、メモリ他様々なハードウェアを使用します。
OSは、アプリケーションソフトの代わりにハードウェアを操作をしていますが、複数のアプリケーションソフトに対して、一つしかないハードウェアを調整して動作させているのがOSのカーネルです。
その他プロセス管理、空間管理、時間管理、割り込み処理、ファイルシステム、ネットワークなどの役割も担っているOSの中核となるソフトウェアになります。
カーネルの主な役割は以下になります。
- プログラムの実行
- 割り込み処理
- CPUモードの設定
- メモリ管理
- 仮想記憶
- マルチタスク
- デバイスシステムとファイルシステム
プログラムの実行
OSは、アプリケーションソフトとパソコンのハードウェア間の、インタフェースを提供し、OSのに組み込まれた規則に従うことで、アプリケーションソフトはハードウェアとやりとりできます。
アプリケーションソフトを動作させる時は、OSのカーネルがプロセスを生成します。
カーネルのプロセスの生成は、メモリの割り当て、マルチタスクの優先度の割り当て、プログラムのメモリへのロードなどが行われ、アプリケーションプログラムを使うことができるようになります。
割り込み処理
割り込みはハードウェアが発生させる場合もあるし、実行中のプログラムが発生させる場合もあります。
ハードウェアから割り込みが発生した場合は、OSのカーネルがどう対応するか決定します。
ハードウェア割り込みには優先順位があり、通常デバイスドライバと呼ばれるソフトウェアで処理されます。
デバイスドライバはOSのカーネルの一部という場合と、別のプログラムという場合と、混在する場合があり、デバイスドライバは割り込みによって得た情報を動作中のプログラムに中継します。
実行中のプログラムが割り込みを発生させる場合は、OSのカーネルに対して割り込みを発生させ、カーネルは必要な処理を行います。
CPUモードの設定
CPUには複数の運用モードがありますが、少なくともスーパーバイザモードとユーザーモードの2つが存在します。
スーパーバイザモードはOSのカーネルが使用するモードで、ハードウェアに無制限にアクセスでき、メモリの読み書きの方法を制御したり、グラフィックスカードなどのデバイスとやりとりなどができます。
ユーザーモードはカーネル以外のほぼ全てが使用します。
アプリケーションはユーザーモードで動作し、ハードウェアとのやりとりはカーネルを通します。
コンピュータが起動した際は、自動的にスーパーバイザモードで動作し、OSがCPUをユーザーモードに設定できます。
また、ユーザーモードではプログラムが使用できるCPUの命令は制限されています。
プログラムでユーザーモードを抜け出すには、割り込みを発生させ、OSのカーネルに制御を戻す必要があり、ハードウェアやメモリへのアクセスは、OSが制御できるようにしています。
メモリ管理
メモリは高速な順に下記の階層構造になっていてます。
- レジスタ
最も高速なCPUそのものに内蔵され、計算中のデータや計算結果データを一時的に保持します。 - キャッシュメモリ
CPUとメインメモリの間にある(CPU内部に搭載していることが多い)データやプログラムを記憶します。 - RAM
一般的にメモリと言われているメインメモリがこのランダムアクセスメモリ(Random access memory)です。 - ディスク装置
ハードディスクなどになります。
OSはこのようなメモリを管理するもので、利用可能な部分、割り当てと解放、メインメモリが不足した時にハードディスクに移し見かけ上メインメモリを使用しているように見せかけるスワップなどを制御します。
全システムのメモリ管理は、OSのカーネルが行い、メモリの誤使用を防止しています。
仮想記憶
退避させることにRAMを、他のプログラムのために空けることができ、これをスワップと呼んでいます。
これによって限られたメモリを複数のプログラムで使用可能にでき、メモリの内容を必要に応じて退避させたり復帰させたりできます。
仮想記憶によって、実際に搭載しているよりも多くのRAMを使用しているかのように使用することができます。
マルチタスク
複数のタスク(プロセス)を切り替えて実行できるシステムのことを、マルチタスクといいます。
OSは複数のプロセスを実行するためにプロセス管理を行っています。
一般的なパソコンでは、マルチタスクは高速にプロセスからプロセスへ切り替えを行うことで実現されています。
またOSはのカーネルにはスケジューラと呼ばれるソフトウェアが含まれ、実行すべきプロセスの順序と一度に実行する期間を決定しています。
ディスクアクセスとファイルシステム
パソコンはファイルという形でハードディスクなどにデータを格納します。
このファイルをディスクに格納する方式をファイルシステムと呼んでいます。
ファイルシステムによってファイルに名前と属性が付与され、ディレクトリ、またはフォルダと呼ばれる構造を使って、ファイルを階層構造内に格納できます。
ハードディスクなどの補助記憶装置には、ハードウェアとのやり取りをするデバイスドライバを通してアクセスします。
ネットワーク
通常OSはTCP/IPプロトコルをサポートしています。
ネットワーク機能により、異なるOS間でネットワークを形成し、ファイル、プリンター、スキャナーなどのリソースを共有でき、遠隔にあるパソコンをあたかも自身に直接接続されているかのように透過的に利用できます。
セキュリティ
OSのセキュリティ機能は、ユーザーがリソースへの何らかのアクセスを行う際に前もって認証し、そのユーザーのアクセスレベルを決定し、アクセスを制限することです。
ユーザインタフェース
主なユーザインタフェースは、古くからあるキャラクタユーザインタフェース(コマンドラインインタフェース)と視覚的なグラフィカルユーザインタフェースに大別されます。
キャラクタユーザインタフェース
画面上に文字だけを表示するのみのユーザーインターフェースです。
グラフィカルユーザインターフェース(GUI)
主なユーザインタフェースは、古くからあるキャラクタユーザインタフェース(コマンドラインインタフェース)と視覚的なグラフィカルユーザインタフェースに大別されます。
キャラクタユーザインタフェース
画面上に文字だけを表示するのみのユーザーインターフェースです。
グラフィカルユーザインターフェース(GUI)
プログラムは画面上にグラフィカルに結果を表示し、ファイルやフォルダ(ディレクトリ)やアプリケーションはアイコンなどの形で表示されます。
OSは通常にGUIを持っています。
Windows、Mac OSは、カーネルとGUIが密接に関係しています。
Linux、FreeBSD、OpenSolarisのOSでは、ユーザインタフェースはモジュール化されていて、任意のGUIをインストールしたり、新たなGUIを作成したりできます。
Windowsでは新たなバージョンが登場するたびにGUIを変更してきました。
Macでは、Mac OS Xになって完全に刷新され、AquaベースのGUIになりました。
LinuxではGUIを提供するデスクトップ環境がいくつか存在し、代表的なものではGNOMEとKDEがあります。