目的
この記事では、応用情報技術者試験の出題分野であるソフトウェア(OS・ミドルウェア)に関する覚書きを列挙する。
※ ソフトウェアは、OS、ミドルウェア、その他アプリケーションに大別される。
(その他アプリケーションについては、次の記事に記載)
OSの機能
OS(Operation System)とは、コンピュータシステムを動作させるための基盤となるシステムのこと。
OSを基盤として、ミドルウェアがあり、その上でその他のアプリケーションソフトが動作している。
PC起動直後にOSが自動起動し、必要なプログラムを起動する一連の流れをブートまたはブートストラップという。
OSは、アプリケーションプログラムを同時実行する際のリソースを管理し、利用効率を高くするため、次の管理機能をもっている。
-
ジョブ管理
ジョブは、動かすための要素となるジョブステップ(プログラムやバッチなどの処理)から構成され、ジョブステップごとに管理される。
→ ジョブ管理の制御 -
タスク管理
タスク(プロセス)とは、ソフトウェアの実行単位のことで、一つのCPUでは複数タスクの同時実行はできない。
タスクは複数のスレッドから構成され、CPUはスレッド単位で実行される。
→ タスク管理の制御 -
記憶管理
通常は主記憶装置に格納し、容量不足の場合は補助記憶装置上の仮想記憶領域で容量を確保する。
それぞれの記憶管理を実記憶管理と仮想記憶管理に分けて行う。補助記憶装置について
→ 主記憶と補助記憶のデータ連携について -
データ/入出力管理
データ管理は補助記憶装置へのアクセスを管理し、入出力管理は入出力装置へのアクセスを行う。
また、スプーリングを用いて、複数ある周辺装置を同時並行させることができる。
ジョブ管理の制御
複数ジョブの実行状態とジョブ単位の実行状態を制御する。
メインフレーム(大型汎用機)では、OSに組込まれており、JCL(Job Control Language)というジョブ制御用のスクリプト言語を使用して、バッチ処理やプロセス起動などを制御している。
タスク管理の制御
タスクの生成、実行、消滅状態を制御する。
タスク生成後の実行では、以下実行可能状態、実行状態、待ち状態の3つの状態で管理する。
-
実行可能状態
タスクが生成されると実行可能状態となり、CPUに空きができると実行状態に移る。 -
実行状態
実行状態に移ると即タスク実行される。そのまま実行が完了した場合、タスクが消滅し処理を終える。
実行中に入出力が必要な処理など、CPU以外を使用する処理に入った場合は待ち状態に移る。また、タイムクォンタム(タスク別に与えられるCPU時間でタスクを切替える時間)を使い切るか、実行状態のタスクを中断させるプリエンプションが発生した場合は実行可能状態に戻る。
-
待ち状態
待ち状態に移り、入出力が完了すると再度実行可能状態に移る。
タスクスケジューリング
タスクの実行順については、次の代表的なスケジューリング方式で分類される。
-
到着順方式
実行可能状態になったタスクを到着順で処理する方式でFIFO(First In First Out)またはFCFS(First Come First Served)とも呼ばれる。 -
処理時間順方式
処理時間の短いタスクから順に処理する方式でSPT(Shortest Processing Time first)とも呼ばれる。 -
優先度順方式
タスクに優先度を設定し、優先度順に処理する方式。 -
ラウンドロビン方式
各タスクに同じタイムクォンタムを割当て、一定時間ごとに処理する方式。 -
プリエンプション方式(プリエンプティブ方式)
タスクに優先度を持たせた状態で処理しつつ、優先度が高いタスクが実行可能状態になるとプリエンプションを発生させ、順に処理していく方式。 -
多段フィードバック待ち時間行列
優先度を持つ待ち行列から優先度が高い行列順に順次処理していく方式。
低い優先度で長時間待っているタスクの優先度を上げたり、一度実行したタスクの優先度を下げるなどのフィードバック調整を行う。 -
イベントドリブンプリエンプション方式
割込みにより、タスク切替えを行うイベントドリブン方式と上記のプリエンプション方式を組合わせたもの。
リアルタイムOS(RTOS)
リアルタイムOSは、イベントドリブンプリエンプション方式を用いて、ジョブ実行の優先度が高いタスクを確実に実行する特徴を持つ。
時間制約を守ることが最優先されるため、リアルタイム性が要となる産業ロボットや輸送機械など、主に組み込み機器向けのOSとして使用されている。
主記憶装置と補助記憶装置のデータ連携
データ管理部で制御される主記憶装置と補助記憶装置へのデータ連携方法。
-
オーバーレイ方式
主記憶装置の容量を超えるプログラムを実行するための仕組み。
いくつかのセグメントに分けてプログラムを補助記憶装置へ格納し、必要に応じて主記憶装置に読み込み、ファーストフィット方式またはベストフィット方式で記憶領域を割当てる。ファーストフィット方式、ベストフィット方式について
→ 応用情報技術 - 基礎覚書き:メモリ・バス > 記憶領域の管理方式 -
スワッピング方式
プログラムを読み込む領域が主記憶装置に不足している場合、実行に影響しないプログラムを補助記憶装置に退避させる仕組み。
補助記憶装置に退避させることをスワップアウト、主記憶装置に戻すことをスワップインという。 -
ページング方式
プログラムを固定長のページに分けて、ページ単位で補助記憶装置の仮想記憶領域に取り出し、主記憶装置を管理する。
主記憶装置から仮想記憶装置に取り出すことをページアウト、主記憶に戻すことをページインという。
また、主記憶上にページがない状態のことをページフォールトといい、ページフォールトが起因となり、ページイン、ページアウトを繰返すことをスラッシングという。仮想記憶方式には、上記のページング方式(固定長ページ管理)と、セグメント方式(可変長区画管理)があり、近代OSのほとんどがページング方式で実装され、そのアルゴリズムには次の種類がある。
- FIFO(First In First Out)方式
ページインした順にページアウトさせる方式(先入れ先出し)。 - LRU(Least Recently Used)方式
最後の使用から最も時間が経過したページから順にページアウトさせる方式。 - LFU(Least Frequently Used)方式
使用頻度が低いページから順にページアウトさせる方式。
- FIFO(First In First Out)方式
プログラム実行時の記憶管理
プログラム実行時は、プログラム単位で次の記憶領域が確保される。
-
テキスト領域
プログラム本体を格納する領域。 -
静的領域
グローバル変数や静的変数を格納する領域。 -
スタック領域
関数の引数や戻り値、ローカル変数など一時的な変数を格納する領域。 -
ヒープ領域
プログラム内で動的に確保したデータを格納する領域で、メモリ確保命令(インスタンス生成命令)により確保される。
※ メモリ解放命令による領域解放がないと、メモリリークが発生する。
ミドルウェア
ミドルウェアとは、OSとアプリケーションソフトの中間的な処理を担うソフトウェアのことで、WEBサーバー、APサーバー、DBサーバーなどがある。
以下、代表的なミドルウェア。
-
API(Application Programming Interface)
アプリケーションをプログラムするためのインターフェースのこと。
Webサイトで外部連携するAPIをWebAPIという。 -
シェル
ユーザー指示をコマンドで受付け、プログラム制御やOSの中核であるカーネルを呼出す役割も持つ。 -
デーモン
Unix系(UNIX, Linux, Mac OS Xなど)のマルチタスクOSにおいて動作するプログラム(プロセス)のことで、プログラム名末尾に「d」が付く。- 例:システムログを扱う syslogd、プリンタを管理する lpd、サーバー管理の httpd など。
-
開発フレームワーク
システム開発を効率化するために標準化した枠組みのことで、例えばWebアプリケーションフレームワーク(Apache Struts、Ruby on Rails など)がある。 -
分散処理技術
大規模データを複数のサーバ上に分散し、処理する技術のこと。
この分散処理を実現するためにソフトウェアフレームワークがあり、その代表的なものにオープンソースのApache Hadoopがある。
参考文献
- 瀬戸 美月(\(2020\)) 『徹底攻略 応用情報技術者教科書』株式会社インプレス