オペレーティングシステムとは?
パソコンはCPUやメモリ、HDDなどのハードウエアだけを揃えても動きません。
パソコンを動かすにはソフトウエアが必要です。その基本的なソフトウエアがOS(オペレーティングシステム)です。
windows 10、Androidなどがオペレーティングシステムです。
オペレーティングシステムはパソコンをキチンと動かすためのシステムです。ネットブラウザや表計算ソフトウエアのように人が作業するためのソフトウエアではありません。
分かりやすく生き物で考えてみます。
生き物は心臓や肺、血液等のハードウエアを用意しても動きません。「体を生かす」ためにはそれらを連携して動かす仕組みが必要です。これは脳幹と呼ばれる脳の部分が臓器などを連携させて呼吸や血液循環、代謝などの生命維持機能を動かしています。この脳幹の機能がパソコンでいうOSにあたると考えるとイメージしやすいでしょう。
OSの役割とは?
オペレーティングシステムはCPUやメモリ、HDDなどのハードウエアの挙動を制御し、連携させています。
よくあるブラウザやWordなどのアプリケーションはOS上で動いています。
パソコン上では複数のプログラムが動いています。OSはこれらのプログラムが滞りなく、きちんと動くように制御しています。
例えば
- CPUの計算はどんな順番でやらせるか?
- 各プログラムが使用するメモリ容量はどのくらい割り振るか?(計算問題や結果を保存するのにメモリを使うため)
- 計算結果などを画面に表示させる
などがあります。
特にオペレーティングシステムの中枢となる部分を「カーネル」と呼びます。ユーザーのマウスなどの入力を受けたアプリケーションからの入出力を受け取り、それをハードウエアに処理させる機能があります。OSの中核となるプログラムであるため、パソコンの電源ON後、最初に起動されるプログラムの一つです。
OSの機能
OSの機能はPCの裏方業務です。
代表的なOSは
- Windows
- Mac OS
- Linux
があります。これらのOSをそれぞれ使ったことがあるとOSの違いから機能の違いが分かるかもしれません。
- GUI(グラフィカルインターフェース):ユーザー視点では最もわかりやすい部分です。いわゆるデスクトップ画面といわれる部分です。GUIがあることでマウスを使ってアイコンなどをクリックすることで視覚的にPCを操作することができます。CUIは画像などの視覚的な情報はなく、コマンドを打ち込んでパソコンを動かすユーザーインターフェースです。
- ネットワーク:TCP/IPなどを使ってインターネット接続を提供します
- ファイル管理:データをHDDから読み取ったり、書き込んだりする機能です。ファイルアクセスの権限を設定したり、更新日付などファイルステータスの管理なども行います。
- CPU管理・プロセス管理:効率的なCPUの動かし方を提供します。複数のプログラムが同時に動かせるのはこの機能のおかげです。
- メモリ管理:一つのプログラムがメモリの全容量を占有することがないように管理します。PCを動かすのに絶対必要なプログラム用にメモリを確保したりするので、たくさんプログラムを起動してもPCが停止しません。
その他にもたくさんの機能から構成されています。
OSの構成
オペレーティングシステムというだけあって、OSは一つのプログラムからできているわけではありません。
複数の要素となるプログラムからできた巨大で複雑なプログラムです。
OSというシステムソフトウエアにはカーネルと呼ばれるメモリやCPU管理を担う中核のプログラムとデーモン、シェル、GUI、デバイスドライバ、ブートローダーなど様々なソフトウエアから構成されています。
カーネル
カーネルはOSの中核となるソフトウエアです。OSの司令塔のような存在でハードウエアを管理やソフトウエアによるハードウエアの利用を管理します。つまり各種アプリケーションはカーネルを通してハードウエアリソース(CPUやメモリ)を利用しているのです。
具体的には
- メモリ管理:アプリケーションが利用するメモリの割り当て
- プロセス管理:各アプリから来たCPUへの命令単位であるプロセスをどういった順番優先度で実行し、完了するか?などを管理
- ファイルシステムの管理:データの読み書きを管理
などを行っています。
参考 【初心者向け】Linuxカーネルって一体なんだ? - Qiita取得できませんでした
参考 カーネル - WikipediaWikipedia - 最近の更新
システムコール
システムコールはアプリケーションがカーネルの機能を使うときに利用されるものです。
カーネルはOSの中核となる機能をもっているため、アプリケーションがファイルを読み書きしたり、CPUで演算、メモリの利用など様々な機能を利用する際にはカーネルの機能を使う必要があります。
ファイルオープンや作成に関わるシステムコールであるopen, openat, creatやアプリケーションの実行単位であるプロセスを終了させるexitなどがあります。
このようにシステムコールは基本的なOSの機能に関わるため、理解すると基本的なOSの機能を理解するのにつながります。
シェル
シェルはOSの機能の一つでOSの機能をユーザーが利用するためのユーザーインターフェースのことです。
ユーザーインターフェースとはCUIやGUIがあります。LinuxではCUIがよく使われています。
シェルはユーザーからの入力(コマンド)を受け付けてOS(カーネル等)を操作することから、システムとユーザーの橋渡しであり、OSの外側を包み込むようなイメージがもたれることから殻の意味のシェルという名前がついています。
Linuxでは「Bash」がデフォルトのシェルとして使われています。
ブートローダー
ブートローダーはブート(起動)に関わる機能です。
OSの中核であるカーネルなどはハードディスク上に存在して、実行するにはメモリに読み込ませる必要があります。ブートローダーは起動してすぐのハードディスクドライブにあるカーネル等をメモリに読み込ませる役割があります。
多くのLINUXではブートローダーはGRUB2が採用されています。
マザーボードのファームウェアであるBIOSが起動後にディスク先頭領域MBRにあるブートローダファイルboot.imgを読み込むところから始まります。
GUI環境
Linuxではブートローダーがカーネルを読み込んだ後、ユーザープロセスの大元であるsystemdが開始されます。これが、GUI環境のプロセスを開始します。
[…] ネットde カガク|オペレーティングシステムとは?簡単に […]