オペレーティングシステム(OS)関連1

◆ カーネルとは

 OSの中核となるソフトウェアの事です。メモリの管理や割り込み処理の監視、プロセス間通信や周辺機器の管理など行っています。
 過去問題として出題されていませんが、カーネルの種類だけ記述します。

マイクロカーネル ・・・ カーネル自身は、必要最小限の割り込み処理の監視、プロセス間通信ぐらいの機能しか行わず、 メモリの管理などの処理を外部モジュールにした構成です。 このように機能を細かくモジュール化されたコンポーネントの総体として、多機能を実現します。 特徴として、並行処理ができるので性能向上できるそうですが、 プロセス間通信時のオーバーヘッドが大きい事と、 CPUのカーネルモードでの処理とユーザーモードでの処理の切り替えが頻繁に起きる事で、 性能が向上されていないとか・・・。
Apple社の Mac OS などに使われているそうです。

モノシリックカーネル ・・・ マイクロカーネルみたいにモジュール化せず、単体のコンポーネントとして、多機能を実現します。 Linux や Windows などに使われています。


◆ 状態遷移とタスク

 タスクの注意点として、ジョブと混乱しそうですが、ジョブは1つの仕事をさせる単位(例えば印刷しろなど)です。 タスクとは OS から資源を割り当てて実行する仕事の単位で、ジョブを更に細かく分割した単位の事を言います。
 ここで記述するのはタスクの状態遷移についてです。 タスクは以下の3種類の状態を持ちます。

実行待ち
(実行可能)
・・・ 実行できる状態であるが、他のタスク(プロセス)が CPU を使用しているため、CPU が空くのを待っている状態です。

実行 ・・・ CPU を使用している状態の事を言います。( CPU 時間を割り当てられている状態)

待ち ・・・ 一通り処理が終わり、ユーザーの入力待ちや、周辺機器の出力待ちなどの状態の事を言います。


左の図が状態遷移の関係図です。矢印の方向にしか状態遷移しません。


 またタスクの実行と CPU 割り当て時間などの管理する事をタスクスケジューリングと言います。 主なスケジューリング方法が以下の様なものがあります。

プリエンプション ・・・ 実行中のタスクを一時的に中断するという意味だそうですが、 情報処理の試験では、各タスクに優先度を設定し、その優先度の高いタスクが実行待ちの状態になったら、優先度の低いタスクで実行中であっても処理を中断して CPU を優先度の高い方に明け渡すという方式です。

ラウンドロビン ・・・ いろいろな分野でもこの単語は出てくるので注意しましょう。 本来の意味は一つの資源を順番に利用する手法のことです。
タスクスケジューリングにおいては、CPU 使用時間を設定して、時間が過ぎたら他のタスクに渡すという方式です。 この方式はタスクの優先度とか関係ありません


◆ 状態遷移とタスク その他の用語

 過去問題でも意味を問われる事がありますので注意しましょう。

タイムクウォンタム ・・・ CPU の割り当て時間の事です。 上記のラウンドロビン方式に当てはまる事だと思いますが、 この時間を短くすると順番良くタスクに CPU が回りますが(並行処理しているように見えます) 他のタスクに渡すとデータ読み出しの為のオーバーヘッドが増大するため決して速くなるわけではありません。

多重度 ・・・ おそらくパイプラインの関連だと思いますが、同時に実行するタスクの数の事を言います。 メモリが足りなくなってきたら(スラッシング)、この数を落とすのが有効だとも言われています。


TOPページに戻る