はじめに
OSの知識を整理したかったのでこちらの記事を書きました。内容としては初心者向けの内容になります。
OSとは
Operating System(オペレーティングシステム)の略。
広義の意味でのOS、狭義の意味でのOSがある。
広義のOSは、基本ソフトウェア一般を指す。基本ソフトウェアの制御プログラム、言語処理プログラム、サービスプログラムの全てを含む。
Windows、Mac OS、Linuxなどがこれらにあたる。これらのOSは、それぞれ異なる特徴や機能を持っているが、共通しているのは、ハードウェアとアプリケーションの間に立って、スムーズなコンピュータの動作を支える役割を果たしている。
一方、狭義のOSは、Kernelとも呼ばれ、基本ソフトウェアの中の制御プログラムに相当する部分のことを指す。つまり、コンピュータのハードウェアを制御する最も重要なプログラムであるカーネルだけを指します。狭義のOSには、デバイスドライバ、ファイルシステム、プロセス管理、メモリ管理などの機能が含まれる。
ソフトウェアとは
ソフトウェアは大きく以下3つに分けることができる。
基本ソフトウェア
基本ソフトウェアは、OSやデバイスドライバ、仮想マシンなど、コンピュータシステム全体を制御するためのソフトウェア。ユーザーが直接操作することはできず、裏で動いているもの。(後ほど詳しく書きます)
応用ソフトウェア
応用ソフトウェアは、ユーザーが直接操作するためのソフトウェアで、ユーザーが行いたいタスクを実現するためのプログラム。例えば、Webブラウザ、ワープロソフト、ゲームなどが挙げられる。
ミドルウェア
ミドルウェアは、基本ソフトウェアと応用ソフトウェアの間にあるソフトウェアで、データベースシステム、Webアプリケーションサーバー、フレームワーク、ライブラリなどが挙げられる。ミドルウェアは、アプリケーションソフトウェアがシステムリソースを効率的に利用できるように、また基本ソフトウェアが応用ソフトウェアに必要な機能を提供できるように役立っている。
基本ソフトウェア
基本ソフトウェアには制御プログラム、言語処理プログラム、サービスプログラムの3つに分けることができる。
制御プログラム
制御プログラムには、以下のような種類がある。
カーネル
OSの中核となるプログラムで、ハードウェアの制御や、プロセス・ファイル・メモリ管理などの機能を提供する。
カーネルは、OSの一部であり、直接操作することはできない。
カーネルには、メモリ管理やプロセス管理などに機能を限定したマイクロカーネルと、多くの機能を網羅したモノリシックカーネルがある。
ジョブ管理、タスク管理、記憶管理、データ(ファイル)管理などの管理を行う。
言語処理プログラム(言語プロセッサ)
C言語やJavaなどのプログラミング言語で書かれたプログラムを、コンピュータが理解できる機械語に翻訳するプログラム。
コンパイラ
プログラマーが作成したソースコードを、実行可能なバイナリコードに変換するプログラム。コンパイルによって生成されたバイナリコードは、プログラマーが直接実行することができる。
インタプリタ
プログラマーが作成したソースコードを、逐次的に解釈して実行するプログラム。インタプリタは、実行するためのバイナリコードを生成せず、ソースコードをそのまま解釈して実行する。
アセンブラ
プログラミング言語で書かれたソースコード(プログラム)をコンピュータが理解できる機械語に変換しながら同時に少しずつ実行していく。
サービスプログラム
コンピュータの機能を補う、補助的なプログラムのことで、ユーティリティとも呼ばれる。
ファイル圧縮などが該当する。