◆ カーネルとは
OSの中核となるソフトウェアの事です。メモリの管理や割り込み処理の監視、プロセス間通信や周辺機器の管理など行っています。
過去問題として出題されていませんが、カーネルの種類だけ記述します。
マイクロカーネル |
・・・ |
カーネル自身は、必要最小限の割り込み処理の監視、プロセス間通信ぐらいの機能しか行わず、
メモリの管理などの処理を外部モジュールにした構成です。
このように機能を細かくモジュール化されたコンポーネントの総体として、多機能を実現します。
特徴として、並行処理ができるので性能向上できるそうですが、
プロセス間通信時のオーバーヘッドが大きい事と、
CPUのカーネルモードでの処理とユーザーモードでの処理の切り替えが頻繁に起きる事で、
性能が向上されていないとか・・・。
Apple社の Mac OS などに使われているそうです。
|
|
モノシリックカーネル |
・・・ |
マイクロカーネルみたいにモジュール化せず、単体のコンポーネントとして、多機能を実現します。
Linux や Windows などに使われています。
|
◆ 状態遷移とタスク
タスクの注意点として、ジョブと混乱しそうですが、ジョブは1つの仕事をさせる単位(例えば印刷しろなど)です。
タスクとは OS から資源を割り当てて実行する仕事の単位で、ジョブを更に細かく分割した単位の事を言います。
ここで記述するのはタスクの状態遷移についてです。
タスクは以下の3種類の状態を持ちます。
実行待ち (実行可能) |
・・・ |
実行できる状態であるが、他のタスク(プロセス)が CPU を使用しているため、CPU が空くのを待っている状態です。
|
|
実行 |
・・・ |
CPU を使用している状態の事を言います。( CPU 時間を割り当てられている状態)
|
|
待ち |
・・・ |
一通り処理が終わり、ユーザーの入力待ちや、周辺機器の出力待ちなどの状態の事を言います。
|
|
左の図が状態遷移の関係図です。矢印の方向にしか状態遷移しません。
|
またタスクの実行と CPU 割り当て時間などの管理する事をタスクスケジューリングと言います。
主なスケジューリング方法が以下の様なものがあります。
プリエンプション |
・・・ |
実行中のタスクを一時的に中断するという意味だそうですが、
情報処理の試験では、各タスクに優先度を設定し、その優先度の高いタスクが実行待ちの状態になったら、優先度の低いタスクで実行中であっても処理を中断して CPU を優先度の高い方に明け渡すという方式です。
|
|
ラウンドロビン |
・・・ |
いろいろな分野でもこの単語は出てくるので注意しましょう。
本来の意味は一つの資源を順番に利用する手法のことです。
タスクスケジューリングにおいては、CPU 使用時間を設定して、時間が過ぎたら他のタスクに渡すという方式です。
この方式はタスクの優先度とか関係ありません
|
◆ 状態遷移とタスク その他の用語
過去問題でも意味を問われる事がありますので注意しましょう。
タイムクウォンタム |
・・・ |
CPU の割り当て時間の事です。
上記のラウンドロビン方式に当てはまる事だと思いますが、
この時間を短くすると順番良くタスクに CPU が回りますが(並行処理しているように見えます)
他のタスクに渡すとデータ読み出しの為のオーバーヘッドが増大するため決して速くなるわけではありません。
|
|
多重度 |
・・・ |
おそらくパイプラインの関連だと思いますが、同時に実行するタスクの数の事を言います。
メモリが足りなくなってきたら(スラッシング)、この数を落とすのが有効だとも言われています。
|
|