【図解】:オペレーティングシステム(OS)とは?基礎からわかりやすく解説

コンピュータシステム

オペレーティングシステム(OS)の基礎を説明します。

オペレーティングシステム(OS)とは

オペレーティングシステム(OS)はパソコン、サーバ、スマートフォンなどの端末を動かすのに必要なソフトウエアです。
その役割や、OSの種類について説明します。

OSの役割と目的

OS(Operating System)は、PCやサーバなどのコンピュータ全体を管理し、ユーザーやアプリケーションが使いやすくするためのソフトウェアです。

また、アプリケーションを起動して、文書を作成したり、動画を見たり、ゲームをしたりするとき、コンピュータの中の部品(CPU、メモリ、周辺機器)を操作しているのがOSです。
詳細は後の章で説明します。

代表的なOSの種類

  • Windows
    世界で最も普及されており、家庭や企業で多く採用
  • macOS
    ザイン・クリエイティブ用途に強い
  • Linux系OS
    オープンソース、無料で利用可能、サーバ用途で広く利用されており、Ubuntu、Red Hat などがある。

カーネルとは?役割を解説

カーネルはOSの中にあり、中核となる存在です。
カーネルはハードウェアとソフトウェアの間を直接制御する重要なプログラムで、アプリケーションはカーネルを通じてハードウェアを利用します。

カーネル

カーネルの役割とは

カーネルは①ハードウエア資源管理、②プロセス管理、③メモリ管理、④ファイル入出力制御などを担当し、システム全体を管理する「心臓部」として機能します。

  • ハードウェア資源(入出力)管理
    CPU・モニタ・キーワードメモリ・ディスク・プリンタなどの周辺機器を制御し、アプリケーションからの命令を機器に伝えます。
  • プロセス管理
    複数のアプリケーションを同時に実行したり、切り替えたりする機能です。CPUの利用時間を管理し、どのプログラムをいつ動かすかを制御します。
    例:ブラウザを開きながら音楽を再生できるのはOSのプロセス管理のおかげ
  • メモリ管理
    メモリの領域を管理し、プログラムが他のプログラムのメモリ領域を侵害しないように保護します。他のアプリの領域を勝手に使えないようにする
  • ファイル管理
    データをハードディスクやSSDにファイルやフォルダ(ディレクトリ)として保存、整理、読み書きする機能です。データの保管場所やアクセス権限を管理します。
カーネルの役割

ユーザモードとカーネルモード

コンピュータのアプリケーションが動くとき、CPUやメモリを勝手に操作されると危険です。
勝手に操作される場合、例えば次のようなことが起きます。

  • 他のアプリケーションのメモリを書き換える
  • デバイスを勝手に操作する

これを防ぐため。OSはアプリケーションが触ってもいい範囲を制限しており、これをユーザモードといいます。

  • ユーザモード
    • ハードウェアに直接アクセスできない
    • 他のプログラムのメモリを勝手に触れない
  • カーネルモード
    • OSの中核(カーネル)が動く場所
    • CPUやメモリの管理、デバイス(ディスク、ネットワークなど)の制御

マイクロカーネルとモノリシックカーネルの違い

カーネルは大きく分けるとマイクロカーネルとモノリシックカーネルの2つがあります。

モノリシックカーネル

プロセス管理・メモリ管理・デバイス管理など、多数の機能をカーネルに持たせることです。

  • メリット
    カーネル内で処理をするため高速
  • デメリット
    1つの不具合が全体に影響する
    構造が複雑

マイクロカーネル

最小限の機能(プロセス管理・メモリ管理など)のみカーネルに持たせることです。

  • メリット
    障害に強い(影響範囲が限定される)
    拡張・保守がしやすい
  • デメリット
    処理が遅くなりやすい(通信が増えるため)

メモリ管理とは

カーネルのメモリ管理は、メモリ割り当て、仮想メモリなどがあります。

メモリ割り当て

アプリケーションなどのプログラムに必要なメモリを割り当て、終了時に解放します。
複数のプログラムが同時に動いても、互いに干渉しないようにします。

メモリ割り当て

仮想メモリ(仮想記憶)とは

コンピュータに搭載されている主記憶装置(メモリ)よりも多いメモリが必要なプログラムを動かす場合、仮想メモリという技術を使います。

仮想メモリは、実際のメモリ容量よりも大きなメモリ空間を使えるように見せる仕組みで、主記憶(RAM)+補助記憶装置(HDD/SSD)を組み合わせて、メモリを大きく見せることができます。

仮想メモリ

ページング方式とは

仮想メモリではページング方式が良く使われます。
これは、実行するプログラムをメモリ格納する際、ページという単位に区切り、これを仮想記憶という領域に格納します。

下の例ではプログラムを実行する際、仮想記憶10ページを使用しています。

仮想記憶とページング

仮想記憶にはページテーブルという表があり、ページ番号に対応する主記憶装置(メモリ)のアドレスを管理しています。

仮想記憶とページング

必要なページが主記憶装置(メモリ)に存在しない場合、ページフォールトという割り込みが発生します。
このとき、主記憶装置に空きがない場合はどれかを補助記憶装置(HDD/SSD)へ退避(ページアウト)させてから、補助記憶装置(HDD/SSD)から必要なページを主記憶装置へ読み(ページイン)ます。


プロセスごとに独立した仮想アドレス空間を提供

仮想記憶はプロセスごとに独立した仮想アドレス空間を提供するので、他のプロセスからメモリを操作されることを防ぎます。
他と被らないように配置するので、プログラム側でメモリ配置を意識しなくてよいというメリットもあります。


スラッシングとは

仮想記憶において、ページイン・ページアウトが過剰に発生し、CPUが実行よりもページ管理に時間を取られて処理効率が著しく低下する現象をスラッシングといいます。

スラッシングは、プロセスを主記憶に収容できない場合に発生します。
多くのメモリを消費するアプリケーションを実行したり、複数のアプリケーションを同時に実行すると起きやすくなります。

プロセス管理とは

プロセス管理とは、OS(カーネル)がプログラムの実行(=プロセス)を効率よく制御する仕組みです。
プロセスとは、実行中のプログラムのことです。
ブラウザ+複数タブといった場合、1アプリケーションで複数プロセスになることもあります。

ジョブとプロセスとタスク(スレッド)の違い

コンピュータの処理はジョブ、プロセス、タスクという言葉で表現されます。

名称説明
ジョブひとまとまり(仕事の単位)
人間寄りの処理単位で、バッチ処理でよく使われる
例:給与計算処理
プロセス実行中のプログラムの単位で1つのアプリケーション
OSが管理する実行主体
例:xx.exe
タスクプロセスの中で実際に処理を実行する最小単位
スレッドプログラムの中で実際に実行される流れ
同時に複数走らせることで並列処理が可能

状態遷移

プロセスの標準的な5つの状態モデルは、「生成、実行可能、実行、待ち、実行可能、終了」です。

  • 生成
    プロセスが作られた直後で、まだ実行準備が完全ではない
  • 実行可能
    CPUが割り当てられればすぐ実行できる状態
    他のプロセスが使っているので待っている
  • 実行
    CPUを使って実際に処理している状態
  • 待ち
    入出力などの完了待ちで停止している状態(ファイル読み込み待ちや、ネットワーク応答待ちなど)
  • 終了
プロセス管理 状態遷移

OSがプロセスに対しCPUの実行権限を割り当てることをディスパッチといいます。
逆にOSから与えられたCPU使用権が時間切れなどになることをプリエンプションといいます。

プロセス切替時の詳細

割込みが発生し、CPUへ割り当てるプロセスを切替する際、その時点のプログラムカウンター※及びメモリの内容をスタック領域に退避して、次に実行するプロセスの命令アドレスをプログラムカウンターに、実行状態をメモリにセットします。

プロセス切り替え詳細

スケジューリング方式

スケジューリングは大きく2つに分かれます。

プリエンプティブ方式

実行中でも強制的に別プロセスへ切替可能な方式で、次のアルゴリズムがあります。

名称説明
ラウンドロビン各プロセスに一定時間(タイムスライス)のCPU使用権時間を割り当てて、プロセスを順番に切り替えます。
一定時間内に終了しないときは待ち行列の最後につなぎます。
ラウンドロビン
タイムスライスが短すぎるとオーバーヘッドが増加し、長すぎると到着順方式(FIFO)に近づくため、最適な設定が重要。
最短残り時間優先
(SRT: Shortest Remaining Time)
より短い処理が来たら即割り込みさせる方式です。

ノンプリエンプティブ方式

実行開始したら終了までCPUを占有する方式です。
この方式は、実行状態としたタスクが自ら待ち状態に遷移するか終了するまで,他のタスクを実行状態とすることができない。
次のアルゴリズムがあります。

名称説明
FCFS(First Come, First Served:先着順)到着した順に処理する最も単純な方式です。
メリットとしては実装が簡単なことです。
最短処理時間順
SJF(Shortest Job First:最短ジョブ優先)
実行時間が最も短いプロセスから先に実行します。
理論上、平均待ち時間が最小になります。
実行時間が長いプロセスは、短いプロセスが発生し続けると待ち続ける可能性がある問題があります。
最短処理時間順(SJF)における飢餓状態

まとめ

  • OSの役割は、ハードウェアとアプリケーションの仲介、コンピュータ資源(CPU・メモリ・入出力)の管理、プログラムの実行環境を提供
  • カーネルの役割は、プロセス管理、メモリ管理、ファイル管理、デバイス管理
  • ユーザーモードはアプリケーションが動作、カーネルモードはOSが動作(特権操作が可能)
  • プロセスの状態は、実行可能、実行、待ち、実行可能がある
  • CPUのスケジュール方式
    • FCFS:先着順
    • SJF:処理時間が短い順
    • ラウンドロビン:一定時間で交代
    • 優先度方式:優先度が高いものから実行
  • 仮想記憶は実際より大きなメモリを使えるように見せる

腕試し(理解テスト)

腕試し(理解テスト)に挑戦する場合はこちらをクリック。

コメント

タイトルとURLをコピーしました