1. ソフトウェアの分類

ソフトウェアの分類
ソフトウェアの分類
(イラストをクリックするとサムネイルが表示されます)

1 - 1. ソフトウェアって?

ソフトウェアとは, コンピュータのハードウェア(CPUなどの制御装置やディスプレイ
などの入出力装置)に対してこういう操作をしてほしいという命令(プログラム)を
記述したファイルのことです. そしてこのソフトウェアも目的によって分類されます.

1 - 2. アプリケーション(応用ソフトウェア)

ソフトウェアのうち, おそらく最も多く存在するのがこのアプリケーションと呼ばれる
ソフトウェアでしょう. 今このサイトを閲覧するために利用しているブラウザもそうです.
ブラウザだけでなく, Word, Excel, メールソフト, IllustratorやPhotoshopなど特殊用途の
ソフト, ゲームなどもすべてこのアプリケーションソフトウェアに分類されます.

1 - 3. システムソフトウェア

アプリケーションソフト以外のソフトウェアのほとんどはこのシステムソフトウェアに分類
されるかと思います.「システム」という名の通り, アプリケーションに比べてユーザが直接
利用している実感が少なく感じるかもしれません. しかしこのシステムソフトウェアが存在
するおかげで, アプリケーションを快適に利用することができるのです.

基本ソフトウェア

システムソフトウェアは大きく2つの種類に分類されます. その1つが, このサイトのキーワードであるオペレーティングシステム
(OS : Operating System)です. Windows, UNIX(Solaris, FreeBSD, Mac OS Xなど), Linux(CentOS, ubuntu...etc),
iOS, Androidなどはすべてこの基本ソフトウェア(OS)に分類されます.

ミドルウェア

システムソフトウェアのうちもう1つの種類がミドルウェアです. 基本ソフトウェアに比べるとなじみが薄いかもしれませんね.
ミドルウェアの代表的なものにデータベースマネジメントシステム(DBMS : DataBase Manegement System)があげられます.
Oracle, MySQL, SQL Serverといったものは, このミドルウェアに分類されるソフトウェアです.

2. OSの機能

OS(カーネル)の機能
OS(カーネル)の機能
(イラストをクリックするとサムネイルが表示されます)

OSの機能は幅広く, プロセスの制御や, メモリや入出力のデバイス管理, 広くは言語
プロセッサ(コンパイラやインタプリタ)やテキスト編集プログラムもOSが提供する
ことです. しかしながら, OSが果たす役割で最も重要なのは, プロセスの制御や
コンピュータ資源の管理に関するプログラムです. 具体的には, ジョブやプロセス
を管理して, CPUの使用権を効率良く割り当ててマルチタスクキングを可能にしたり,
メモリを管理して必要なプログラムをディスクからロードしたり, ファイルを管理
したり, I / O(入出力デバイス)管理したり...といったことです. これらのプログラム
がOSの最も重要な機能であることからOSのカーネルと呼ばれます.

2 - 1. もしOS(のカーネル)がなかったら...

OSのカーネルの機能を理解するために, もしそれがなかったら...を考えてみます.

マルチタスクができない

もし, OSのカーネルがなければZマルチタスクができないでしょう.
例えば, インターネットを閲覧しながら(ブラウザを利用しながら)Wordを利用して
文書を作成して...といったことをすることができなくなります.

厳密にはOSのカーネルがあっても, 1つのCPUでマルチタスクをすることはできません.
しかし, OSのカーネルがあることで, 効率良く実行すべきプログラムを瞬時に切り替え,
マルチタスクをしているように見せかけることができます.

また, マルチタスクの粒度をもっと細かくした用語にマルチプロセスマルチスレッド
あります. ただし, 本質的には同じようなことなのでこのサイトでは同一として扱います.

ハードウェアの物理的特性まで理解してプログラミング

もし, OSのカーネルがなければ, アプリケーションプログラムを作成する際に個々の
ハードウェアの物理的特性まで理解してコーディングしなければならなくなるでしょう.
カーネルがあるからこそ, プログラマはそのようなことを意識する負担から解放され,
新たに開発するプログラムに資源を集中させることができるのです.

また, プログラムの内容に従って, ハードウェアを動作させるデバイスドライバ
カーネルに含まれる機能です.

2 - 2. まとめ

上記のことを少し抽象度を上げて, OSのカーネルの機能をまとめます.

  • コンピュータ資源(CPUやメモリなど)を最大限活用
  • ハードウェアの物理特性や挙動の隠蔽とソフトウェアとハードウェアの橋渡し(デバイスドライバ)

3. OSのカーネルの機能を利用する

カーネルの機能を利用するためにカーネルを直接操作するのは困難です. そこで, ユーザやアプリケーションがカーネルの提供する機能を
利用するためのインタフェースが必要になります. それが, シェルであり, システムコール(API)であるわけです.


  1. トップページ
  2. カーネルを理解する
  3. シェルを理解する