本記事の内容
本記事は、基本情報技術者試験におけるオペレーティングシステムについて、情報及びコンピュータの素人目線から説明する記事です。
以前の記事も併せてご覧ください!
イントロ
システムは、ハードウェアとソフトウェアの2つの要素から構成されています。
本記事では、このうちのソフトウェアについて述べます。
ソフトウェアはさらに
- OS (オペレーティングシステム)
- アプリケーションソフトウェア
の2つに分類できます。
本記事の位置づけ
OSとは?アプリケーションソフトウェアとは?
OSについてはすでにご存じの方も多かろうと思います。
OS
OS(オペレーティングシステム)
OS(オペレーティングシステム)とは、アプリケーションソフトウェアとハードウェアの間で処理を仲介するソフトウェアを指す。OSについては、例を挙げるのが最も早いと思います。
代表的なOSの例はWindowsやらmacOSです。
ほかにもiPhoneに搭載されているiOSだったり、AndroidもまたOSの一種です。
OSは下図のように、アプリケーションソフトウェアとハードウェアをつなぐ架け橋となっています。
アプリケーションソフトウェア
アプリケーションソフトウェア
ユーザーに特定の機能を提供するソフトウェアを指す。例えば、カメラであったりメッセージなどで表す。
OSの4つの機能
OSには様々な機能が搭載されていますが、基本情報技術者試験では、次の4つの機能に関する知識が出題されます。
- ジョブ管理
- タスク管理
- 記憶管理
- データ管理
ジョブ管理
ジョブ管理
ジョブ管理とは、ジョブの実行順序を管理する機能である。ただし、ここでジョブとは、ユーザーがコンピュータに依頼する仕事の単位である。ジョブの例を挙げれば、書類の印刷であったり、ファイルの複製などがあります。
ジョブはOSが取り扱います。
なぜジョブ管理が必要なのか
なぜかというと、
CPUとその他のハードウェアの処理速度が大幅に異なるから
です。
例えば、書類の蔭佐宇tの用のジョブの場合、プリンターはCPUと比べて処理速度が圧倒的に遅いため、もしOSにジョブ管理機能がない場合、CPUはプリンターの処理が完了するまで、待ち状態となります。
これだとCPUの能力を十分に活かせません。
ゆえに、OSがジョブ管理を行って、プリンターが印刷処理を実行している間は、CPUには別のジョブを実行させるなどして、CPUを有効活用するわけです。
スプーリング
OSがジョブ管理を行って、CPUとプリンターを別々に動作させるには、スプーリングという技術が必要となります。
スプーリング
スプーリングとは、CPUと低速の出力装置の間のデータ転送を、高速の補助記憶装置に仲介させる技術である。スプーリングはプリンターでの印刷時によく使われる技術です。
CPUと比べると、プリンターの動作が非常に遅いため、CPUとプリンターが直接やり取りすると、CPUが待ち状態になってしまいます。
そこで、CPUとプリンターの間に字補助記憶装置(HDなど)を配置し、そこに一時的にデータを保存します。
そして、、プリンターの処理スピードに合わせて補助記憶装置からプリンターにデータを送ります。
こうすることで、CPUは別のジョブを行うことができるわけです。
バッファ
バッファ
処理速度や転送速度の異なる2つの装置の差を補うことを目的として、データを一時的に保存する記憶装置のことをバッファという。緩衝記憶装置とも呼ばれます。
ちなみに、キャッシュメモリやらディスクキャッシュもバッファの1つです。
タスク管理
タスク管理
タスク管理とは、タスクの実行順序を管理する機能を指す。タスクというのは、OSがCPUに出す命令の単位です。
- ユーザーがコンピュータに出す命令をジョブという
- OSがCPU(ハードウェア)に出す命令をタスク(プロセス)という。
マルチタスク
マルチタスク
マルチタスクとは、タスク管理によって複数のタスクを頻繁に素早く切り替えることによって、それらのタスクがあたかも同時に実行されているかのように見せる技術である。例えば、YouTubeを見ながら別のWordなりで作業ができます。
実は、同時並行しているように見えて、人間には感知できない間隔でCPUを使い分けているのです。
これがマルチタスクなのです。
プリエンプティブとノンプリエンプティブ
タスクを切り替える寳保は、プリエンプティブとノンプリエンプティブの2つに分類されます。
タスクが生成されてから消滅するまで
タスクは生成から消滅までに3つの状態を取ります。
- 実行可能状態:いつでもタスクを実行できる状態
- 実行状態:タスクを実行している状態
- 待ち状態:タスクの入出力処理の完了を待っている状態
タスクスケジューリング
タスクスケジューリング
タスクスケジューリングとは、実行可能状態にある複数のタスクの中から、どのタスクを実行状態に移すのかを決めることである。記憶管理
記憶管理
記憶管理とは、記憶装置を効率的に利用するための機能である。記憶管理はさらに「主記憶管理」と「仮想記憶管理」の2つに分類されます。
ちなみに、基本情報技術者試験では、仮想記憶管理が頻出のため、仮想記憶管理のみを述べます。
仮想記憶管理
仮想記憶管理
仮想記憶管理とは、補助記憶装置の一部をあたかも主記憶装置であるかのように扱う方式である。この方式を利用すれば、プログラムが主記憶装置の容量を超える大きさの場合に、そのプログラムを仮想記憶上に格納することで、実行できるようになります。
仮想記憶管理では、OSが論理的な記憶領域を作ります。
この論理的な記憶領域のことを仮想記憶といいます。
これに対し、主記憶上の物理的な記憶領域のことを実記憶といいます。
仮想記憶管理はさらに、
- セグメンテーション方式
- ページング方式
に分けられます。
セグメンテーション方式
セグメンテーション方式というのは、仮想記憶と実記憶をセグメントと呼ぶ可変長の領域に分割して管理する方法です。
ちなみに、基本情報技術者試験では、ページング方式のほうが頻出ですので、ページング方式を重点的に述べます。
ページング方式
ページング方式
仮想記憶と地付きを苦をページと呼ぶ固定長の領域に分割して管理する方法である。下図を見ながらご覧ください。
仮想記憶と実記憶の各ページには、先頭から順にアドレスが割り振られるのですが、仮想記憶のアドレスのことを「仮想アドレス」と呼び、実記憶のアドレスのことを「物理アドレス」と呼びます。
仮想アドレスと物理アドレスは、「ページテーブル」と呼ばれる表によって対応付けられます。
ページテーブルは、仮想アドレスと物理アドレスを示す2つの列があり、それぞれに以下の値が割り当てられます。
- 仮想アドレスを示す列には、仮想記憶の仮想アドレスと同じ番号
- 物理アドレスを示す列には、実記憶の物理アドレスと同じ番号
ちなみに、仮想記憶の各ページとページテーブルの各行は一対一対応であるため、仮想記憶にあるページの総数とページテーブルの行の総数は一致しています。
CPUがページにアクセスする流れ
先ほどの図を見ながら確認してください。
ここでは、例としてCPUがプログラムの実行中に「ページA」が必要になったとします。
- CPUは仮想記憶の「ページA」にアクセスする。
ページAの仮想アドレスは1であるから、ページテーブルにある仮想アドレスが1の行にアクセスする。 - その行の物理アドレスは2なので、実記憶にある物理アドレスが2のページにアクセスする。
- CPUはページAの実態にアクセスすることができる。
ページインとページアウト
もし仮に「プログラムを実行するために必要なページ」が実記憶に存在しない場合、ページフォールトという割り込みが発生します。
ページフォールト
実記憶い存在しないページへのアクセスによっておこる割り込みである。この割り込みが発生すると、OSは「プログラムを実行するために必要なページ」を補助記憶装置から実記憶へ読み込みます。
この動作をページインと呼びます。
一方で、実記憶に空きページが存在しない場合は、実記憶から外すページを1つ選んでそのページを実記憶から補助記憶装置へ書き出します。
この動作をページアウトといいます。
空きページを確保できたらば、補助記憶装置から実記憶に必要なページを読み込みます。
ページの置き換えアルゴリズム
「どのページを実記憶から外すのか?」を決めるためのアルゴリズムが必要なわけですが、このアルゴリズムを「ページ置き換えのアルゴリズム」といい、アルゴリズムは全3種類です。
下図は、A~Cまでの3つのページを時刻0:00から順に実記憶へ読み込んだ状態表です。
LRUが頻出
スラッシング
スラッシング
スラッシングとは、仮想記憶管理において、割り当てられる実記憶の容量が小さいときに、ページアウトとページインが頻繁に起こる現象である。実記憶の容量に比べて扱うデータが大きければ、空きページがなくなります。
空きページがなければ、OSはページアウトとページインを頻繁に行わなければなりません。
スラッシングが発生すれば、コンピュータ全体のスループット(処理能力)が低下します。
データ管理
データ管理
データ管理とは、コンピュータが処理するデータを管理する機能である。具体的には、ファイルシステムやバックアップなどの機能です。
これらの機能は基本情報技術者試験において非常に重要です。
結
今回は、基本情報技術者試験におけるOSについて、情報及びコンピュータの素人目線から説明しました。
OSというのは、アプリケーションソフトウェアとハードウェアの間で処理を仲介するソフトウェアです。
OSには
- ジョブ管理
- タスク管理
- 記憶管理
- データ管理
の4つの機能が存在します。
質問、コメントなどお待ちしております!
どんな些細なことでも構いませんし、この記事に限らず、「定理〇〇の△△が分からない!」などいただければお答えします!
Twitterでもリプ、DM問わず質問、コメントを大募集しております!
コメントをする