【図解あり】OS(Operating System)の役割




この記事は約 14分2秒で読み終わります

【図解あり】OS(Operating System)の役割

OS(Operating System)とは、コンピュータ

  • 操作
  • 運用
  • 運転

を司るソフトウェアです。

OS

  • ユーザーアプリケーションプログラムハードウェアの中間に位置
  • ユーザーアプリケーションプログラムに対して標準的なインターフェースを提供
  • ハードウェアなどの各リソースに対して効率的な管理

を行います。

OS

ソフトウェアの種類

ソフトウェア

この記事ではOSの役割について説明していきます。

スポンサーリンク

OSの役割

OSの役割

OSの主な役割として

  • プロセス管理
  • 記憶管理
  • 入出力装置管理
  • ファイル管理
  • APIの提供

があります。

OSの役割

プロセス管理

プロセス(Process:手順、経過)とは、ユーザが与えた仕事(ジョブ : Job)をする為の一連の操作系列を実行する事です。

プロセスタスク(task)とも呼ばれます。

プロセス管理

一般的にプロセスは実行中のプログラムと解釈されます。

タスク(プロセス)の状態

タスク(プロセス)は、生成されてから消滅するまでに3つの状態の間を遷移します。

  1. 実行状態・・・CPUを使用し実行中の状態
  2. 実行可能状態・・・タスク(プロセス)は実行可能だが、他の(優先順位の高い)タスク(プロセス)が実行中のため待機している状態
  3. 待ち状態・・・入出力待ち等によりCPUの使用権を与えられても使用できない待ちの状態

タスク(プロセス)の状態

記憶管理

プログラムCPUが実行する為には、プログラムにある

  • 命令
  • データ

CPUがすぐに取り出せる場所に置いておく必要があり、その場所がメモリ(主記憶装置)になります。

記憶管理

OSCPUは相互に連携してメモリ(主記憶装置)を効率よく管理するために様々な方式を利用しています。

  • 実記憶管理・・・
    明示的にプログラムHDD・SSD(補助記憶装置)への追い出しを行う管理方式
  • 仮想記憶管理・・・
    1. OSプログラムのうちの使用頻度が低い部分を自動的にHDD・SSD(補助記憶装置)に追い出す
      • OSがアクセスしたアドレスをメモリ(主記憶装置)に配置
      • 残りをHDD・SSD(補助記憶装置)に配置

実記憶管理

プログラムCPUが実行するためには、補助記憶装置に格納されているプログラムメモリ(主記憶装置)に読み込む必要があります

実記憶管理

実記憶管理とは、メモリ(主記憶装置)に配置するプログラムを効率的に配置し、メモリ(主記憶装置)を有効に利用する機能を指します。

実記憶管理には、

  • 固定区画方式
  • 可変区画方式
  • スワッピング方式
  • オーバーレイ方式

と、あります。

固定区画方式

メモリ(主記憶装置)の容量を予め一定の大きさの区画に分け、その領域にプログラムを読み込む方法を指します。

プログラムの読み込み後、区画上に残っている空き領域は使用されません。

  • 【単一区画方式】
    メモリ(主記憶装置)1つの区画とし、この区画にプログラムを読み込見ます。

    メモリ(主記憶装置)上には、1つのプログラムしか存在しません。

    単一区画方式

  • 【多重区画方式】
    メモリ(主記憶装置)を一定の大きさの区画に分割し、区画ごとにプログラムを読みこむ方式です。

    この方式では、区画よりも大きなサイズのプログラムを読み込んで実行することは出来ません。

    多重区画方式

可変区画方式

プログラムの大きさに応じて、メモリ(主記憶装置)上の区画の大きさを変えることで、メモリ(主記憶装置)を有効に利用する方式です。

フラグメンテーション(断片化)】
可変区画方式では、プログラムの必要とするサイズがそれぞれ異なるため、様々なプログラムの実行や終了などを繰り返すことで、メモリ(主記憶装置)上の空き領域がさまざまな領域に散在してしまいます。

合計のメモリ(主記憶装置)空き容量が十分な大きさにもかかわらず、プログラムメモリ(主記憶装置)上に読み込めなくなってしまうことがあります。

この状態をフラグメンテーションと呼びます。

フラグメンテーションが起こると

  1. プログラムを読み込めなくなるので
  2. メモリ(主記憶装置)上のプログラムを再配置
  3. メモリ(主記憶装置)の空き領域を集め
  4. 1つの大きな空き領域を作る

このメモリ(主記憶装置)の空き領域の再配置をコンパクション(Compaction : 圧縮)と言います。

可変区画方式

スワッピング方式
  • 複数のプログラムが実行中を想定
  • 実行待ちなどのプログラムHDD・SSD(補助記憶装置)に追い出す

スワッピング方式

オーバーレイ方式
  • 1つのプログラムを分割してHDD・SSD(補助記憶装置)に追い出すことを想定
  • プログラムの一部(セグメント)は管理部として必ず残す

オーバーレイ方式

仮想記憶管理

実記憶管理の説明でも述べましたが、CPUで処理されるプログラムのデータや命令は,メモリ(主記憶装置)に準備され格納されている必要があります。

つまり、メモリ(主記憶装置)の容量が不足すると、プログラムの実行は出来ません。

その問題を解決するのが,仮想記憶管理という仕組みです。

仮想記憶管理により、コンピュータに搭載されているメモリ(主記憶装置)容量よりも大きなメモリ空間が提供され、物理的なメモリ(主記憶装置)の量を超えて

  • プログラムを複数起動
  • 大きなデータファイルを扱える

事が出来ます。

実際の仮想記憶管理は,

  • メモリ(主記憶装置)
  • 補助記憶装置

これらハードウェアから成り立っています。

仮想記憶管理を使うことで、

  • 物理メモリ空間・・・実装されているメモリ(主記憶装置)全体が扱う空間
  • 仮想アドレス空間・・・プログラム(アプリケーション)が扱う

と分離が可能です。

仮想記憶管理

OSが持つ仮想記憶管理機能は、メモリ管理ユニット(Memory Management Unit、MMU)が管理しています。

メモリ管理ユニット(Memory Management Unit、MMU)・・・CPUの要求するメモリアクセスを処理します。

主な機能は、

  • 仮想アドレス物理アドレスに変換する機能(仮想記憶管理機能
  • メモリ保護機能
  • キャッシュ制御機能
  • バス調停機能 等々

が、あります。

特に、この仮想アドレス物理アドレスに変換を行うハードウェアを「動的アドレス変換機構(DAT : Dynamic Address Translation)」と言います。

仮想記憶管理の具体的な仕組みを、アプリケーションAというプログラムの実行を例に取って説明していきます。

前提条件として、物理メモリ空間メモリ(主記憶装置)上ではアプリケーションAというプログラム以外にも複数のプログラムがプロセス中だとします。

  1. アプリケーションAのプロセス実行
  2. アプリケーションAのプロセス実行により物理メモリ空間メモリ(主記憶装置)の容量を使い果たす
  3. OS仮想記憶管理により物理メモリ空間メモリ(主記憶装置)の中で、アプリケーションA
    • CPUに使用されていない部分 ➡️ 補助記憶装置に移動・保存
    • CPUに使用されている部分 ➡️ メモリ(主記憶装置)に保存

    とそれぞれに分割

  4. 物理メモリ空間メモリ(主記憶装置)に未使用領域を確保

仮想記憶管理

上図のように,プログラム(アプリケーション)はブロックに分割されています。

ブロックは,

  • 物理メモリ空間メモリ(主記憶装置)上か
  • 補助記憶装置

にあります。

仮想記憶管理

ブロック

  • 物理メモリ空間メモリ(主記憶装置)上か
  • 補助記憶装置

にあるのかの対応付けを行うのが,変換テーブルです。
変換テーブルには,各ブロックごとに

  • フラグビット・・・
       ・そのブロック

    • 補助記憶装置上にあるのか
    • メモリ(主記憶装置)上にあるのか

    を区別

  • 実際のブロック・アドレス・・・
    • 補助記憶装置上のアドレス
    • メモリ(主記憶装置)上のアドレス(物理アドレス)

    を記録

この変換テーブルによって,仮想アドレス空間ブロックが実際にどこにあるかが分かります。

変換テーブル

仮想記憶管理には大きく分けて

  • ページング方式
  • セグメント方式

2種類があります。

ページング方式セグメント方式の違いを,1冊のを例えると

  • ページング方式・・・文字通り「ページ」、固定長
  • セグメント方式・・・「」,不定長(1章のページ数は章によって様々)
ページング方式

ページング方式とは、プログラムページと呼ばれる固定長に区切り、仮想アドレス空間を使って、

  • 物理メモリ空間メモリ(主記憶装置)
  • 補助記憶装置

に効率的に配置する方式です。

実際には、プログラム14 Kの固定長の大きさのページに分割しています。

CPUの各命令・実行ごとに動的アドレス変換機構(DAT : Dynamic Address Translation)変換テーブルにアクセスし、仮想アドレス空間仮想アドレスから

  • 物理アドレス
  • 補助記憶装置アドレス

を算出します。

ページフォルト(物理メモリ空間メモリ(主記憶装置)上に必要なページが存在しない)が発生した場合、

  • ページイン・・・必要なページ物理メモリ空間メモリ(主記憶装置)へ転送
  • ページアウト・・・物理メモリ空間メモリ(主記憶装置)上で、最も使用頻度の低いページから順に補助記憶装置に返戻

ページの入れ替えをします。

ページング方式

スラッシング・・・
ページイン・ページアウトが頻繁に起こる事により、コンピュータ全体の処理速度が低下してしまう現象
セグメント方式

ページング方式とほぼ同様です。プログラムブロックの大きさが固定長では無く、セグメントという論理的な可変長になります。

ページング方式ページイン・ページアウトの事を、セグメント方式では、ロールイン・ロールアウトと言います。

セグメント方式

入出力装置管理

入出力装置管理とは、コンピュータ本体と入出力装置との間の入出力の管理の事です。

入出力装置管理

入出力方式には、

  • OS全体での標準的な入出力方式
  • 装置ごとの固有の処理を仲介する方式

が、あります。

装置ごとの固有の処理のアダプタとなるプログラムデバイスドライバといいます。

データの入出力は、

  • バッファリング(buffering)
    バッファリング(buffering)とは、バッファを経由させることによって、コンピュータ本体と入出力装置を並行処理させて性能を向上させる方法です。

    バッファ(buffer : 保存領域):入出力の為のメモリ(主記憶装置)上に確保される領域

  • スプーリング

    スプーリング(spooling)・・・
    プリンタなどの低速な装置の入出力データを、高速な外部記憶装置を経由させることによって性能を向上させる方式

入出力制御方式

各種の入出力装置を効率よく動作させる方式として

  • プログラム制御方式
  • DMA(Direct Memory Access)方式
  • チャネル制御方式
プログラム制御方式

プログラム中の入出力命令を実行、レジスタを経由し、メモリ(主記憶装置)と入出力装置間でデータをやり取りをします。

低速な入出力処理の間、CPUが待機されます。

CPUレジスタに関する記事はこちら

CPU【Central Processing Unit】を分かりやすく説明する
CPU【Central Processing Unit】を分かりやすく説明する CPU【Central Processing Unit】(以下、CPU)は中央処理装置と呼ばれ、プログラムを解釈・実行してコンピュータ全体の動作を制御していま...
DMA(Direct Memory Access)方式

DMA方式とはプログラムが入出力命令を実行した際、DMAコントローラという専用のハードウェアが

  • メモリ(主記憶装置)
  • 入出力装置

間のデータのやり取りをします。

CPUと入出力装置が並行処理されます。
チャネル制御方式

チャネル制御装置という専用のプロセッサが

  1. メモリ(主記憶装置)上のチャネルプログラムを解読
  2. 一連の入出力命令とCPUを並行処理

チャネル・・・入出力や通信のためのデータの通路のこと

ファイル管理

コンピュータ上で、ユーザは意識する事なくファイル

  • 開く・閉じる
  • 読み込む
  • 編集・再編集
  • ファイル名を付けて保存

をする事が出来ます。

これらの機能に加えて、これら一連の操作後、ファイル補助記憶装置等々で管理することを、ファイル管理(ファイルシステム)と呼びます。

ファイルシステムの種類

ファイルシステム

  • ディスク・ファイルシステム
  • 分散ファイルシステム
  • 特殊用途のファイルシステム

に分類できます。

ディスク・ファイルシステム

ディスクファイルシステムとは、コンピュータに接続された補助記憶装置、特にHDD上にファイルを格納するためのシステムです。

ファイルシステム 例) FAT , NTFS , ext , HFS

FAT(File Allocation Table)・・・MS-DOSファイルシステム

NTFS(NT File System)・・・Windows NT系の標準ファイルシステム

ext(extended filesystem)・・・LinuxOSで広く利用されていたファイルシステム

HFS(Hierarchical File System)・・・Mac OS 標準フォーマット

分散ファイルシステム

分散ファイルシステムとは

  • ファイル共有のためのプロトコルを準備
  • ネットワークに対応

しているファイルシステムの事です。

ファイルシステム 例)

  • Windows標準・・・SMB/CIFS
  • Macintosh・・・AFP
  • UNIX・・・NFS

SMB/CIFS(Server Message Block / Common Internet File System)・・・
主にWindowsを中心とした環境でLANを通じて

  • ファイル共有
  • プリンタ共有 等々

に使用される通信プロトコル

AFP(AppleTalk Filing Protocol)・・・
アップルが開発した、Classic Mac OS / macOSのファイル共有の為のプロトコル

NFS(Network File System)・・・
主にUNIXで利用される分散ファイルシステムおよびそのプロトコル

特殊用途のファイルシステム

特殊用途のファイルシステムとは、ディスクファイルシステムでも分散ファイルシステムでもないファイルシステム

ファイルシステム 例) procfs

procfs(Process Filesystem)・・・Unix系システムにある擬似ファイルシステム

ファイルシステムの構造

2つ以上のファイルの名前が重なると区別出来なくなるので、ファイル名の有効範囲を限定する為に、「ディレクトリ階層」という木(ツリー)構造でファイルシステムを構成します。

ディレクトリ階層

ファイル・・・個々のユーザ・データ

ディレクトリ・・・ファイルの管理情報とファイル本体を結ぶ部分。
階層構造で、その頂点にいるディレクトリルートディレクトリと呼びます。

OSによりディレクトリフォルダーと呼ぶことがあります

ファイル構成

ファイルの構成方法として一般的に3つあります。

  • バイト並び・・・
    特定のファイル構造を持ちません
    使用OS ) UNIX、Windows NT (FAT)

    バイト並び

  • レコード並び・・・
    レコード(ブロック)はOSによって区分される最小情報単位
    使用OS ) メインフレーム用OS

    レコード並び

  • 属性並び・・・
    データ以外にデータに関する属性情報(メタデータ)を持ちます
    使用OS ) MacOS、WindowsNT (NTFS)

    属性並び

APIの提供

OS上で動作するプログラムアプリケーションと呼びます。

  • OS(Operating System)・・・基本ソフトウェア
  • アプリケーション(Application)・・・応用ソフトウェア

とも呼ばれており、アプリケーションの使用時にはOSに対してシステムコールする事でOSの機能の一部を利用しています。

APIの提供

システムコール・・・
OSの機能を呼び出す(Call)ために使用される機構のこと。
プログラミングにおいては、OSの機能は関数 (API) 呼び出しによって実現されます。

API(Application Programming Interface)・・・自己のソフトウェアを一部公開する事で、他のソフトウェアと機能を共有できるようにしたもの

コメント