情報処理技術者試験対策のページ>午前対策 目次
テクノロジ系 コンピュータシステム ソフトウェア
オペレーティングシステム( Operating System ; OS ; 基本ソフトウェア
)
- OSの種類と特徴
- マイクロカーネル方式
- OSが最小限の機能をもつ中核部分と、それ以外のサブシステムからなる
- モノリシックカーネル方式のOSと比較してサービスの実行に伴うプロセス切替えの回数が少ない
- モノリシック方式
- OSの機能
-
OSはアプリケーションプログラムに対して、CPUやメモリ、補助記憶装置などのコンピュータ資源を割り当てる
-
コンピュータシステム全体を管理するために必要となる
- 仮想記憶
- 仮想記憶方式によって得られる目的・効果
-
主記憶の容量以上の記憶空間を提供することで主記憶の見かけの容量が拡大する
-
主記憶の容量よりも大きなメモリを必要とするプログラムも実行できるようにする
- 仮想記憶を使用していても主記憶が少ないと、アプリケーション利用時にページフォールトが多発してシステムのスループットは低下する
- ページング方式
-
仮想記憶空間と実記憶空間を、固定長の領域に区切り、対応づけて管理する方式
- ページ
仮想記憶方式の一つで仮想アドレス空間を固定長の領域に分割して管理するときの固定長の領域のこと
- ページサイズ
-
コンピュータのアーキテクチャによって取り得るサイズが定められている
-
主記憶が不足しがちで、多重度やスループットなどはシステム性能の限界で運用しているとき、ほとんどのプログラムの大きさがページサイズの半分以下のシステムにおいて、ページサイズを半分にしたときには、ページ内の無駄な空き容量が減少するので、主記憶不足が緩和される
- ページテーブルから得られる情報
ページが割り付けられている主記憶の実アドレス
- ほとんどのプログラムのサイズがページサイズの半分以下のシステムにおいて、ページサイズを半分にしたときに予想されるもの(システムは主記憶が不足しがちで、多重度やスループットなどはシステム性能の限界で運用しているものとする)
ページ内の無駄な空き領域が減少するので、主記憶不足が緩和される
- アドレスを変換する処理の順序
- アクセス対象の仮想記憶アドレスに対応するページテーブルの先頭アドレスを得る
- ページテーブルを検索し、該当ページの状態を調べる
- ページフォールトならばページイン処理を行う
- ページ内変位を加えて、求める主記憶アドレスを得る
- ページテーブルに必要な領域の大きさ
ページング方式の仮想記憶において、あるプロセスが仮想アドレス空間全体に対応したページテーブルを持つ場合
2^xバイト = 2^(L-N+E)
(仮想アドレス空間の大きさ:2^Lバイト、ページサイズ:2^Nバイト、ページテーブルの各エントリの大きさ:2^Eバイト)
- ページング方式の仮想記憶において、主記憶に存在しないページをアクセスした場合の処理や状態の順番
(主記憶には現在、空きページの枠はないものとする)
ページフォールト→置き換え対象ページの決定→ページアウト→ページイン
- デマンドページング方式による仮想記憶
ページフォールトが発生したときに、当該ページを主記憶に読み込む
- スラッシング
-
仮想記憶システムにおいて実記憶の容量が十分でない場合、プログラムの多重度を増加させるとシステムのオーバヘッドが増加し、アプリケーションのプロセッサ使用率が減少する状態
-
仮想記憶方式では、割り当てられる実記憶の容量が小さいとページアウト、ページインが頻発し、処理能力が急速に低下すること
- ページング方式の仮想記憶において、ページ置き換えの発生頻度が高くなり、システムの処理能力が急激に低下する現象
- スラッシング対策:ジョブの多重度を下げて、メモリの使用を制御する
-
仮想記憶方式のコンピュータシステムにおいて処理の多重度を増やしたところ、ページin、ページアウトが多発して、システムの応答速度が急激に遅くなる現象
- ページ入れ替え
- LRU ( Least Recently Used )
-
仮想記憶の管理のページ入れ替え方式の一つ
-
最近参照されていないページは近い将来にも参照される可能性が小さいという推測に基づいて、最後に使われてから(参照されてから)の経過時間が最も長いページ(最終参照時刻が最も古いもの)を置き換える
- ページ置き換えの判断基準に最後に参照した時刻を用いる
- 最後に参照されてから経過時間が最も長いページを置き換える方式
- LIFO ( Last In Fast Out ; 後入先出法 )
-
再帰的な処理を実現するための記憶管理方式
-
実行途中の状態を保存する
- FIFO ( First In First Out ; 先入先出法 )
-
仮想記憶のページ置き換えアルゴリズムの一つ
-
仮想記憶の管理のページ入れ替え方式のうち、古く格納した順に取り出す方式
-
ある種のページ参照列に対して、割当て主記憶量を増やすと、かえってページフォールトの回数が増加する
-
最も古くから存在するページを置き換える方式
- LFU ( Least Frequency Used )
-
参照回数が最も少ないものを入れ替えるもの
-
最も参照回数の少ないページを置き換える方式
- MRU ( Most Recently Used )
- 記憶保護
仮想記憶方式において、仮想アドレスと物理アドレスとを対応付けするアドレス変換機能に付加情報を与えることで、実現が容易になるもの
- ページフォールト
ページ方式の仮想記憶システムにおいて、そこに必要なページ(プログラムやデータ)が主記憶にない状態のこと
- 仮想記憶方式において、記憶保護を実現するために、階層的に保護レベルを設定し、自分の属する階層よりも高い階層へのアクセスを禁止するもの
リング
- ジョブ/プロセス/ タスク管理
- タスク管理の役割
マルチプログラミングの制御を行い、CPUを有効に利用する
- スケジューリング方式
- 特定のタスクがCPU資源の割当てを待ち続ける可能性が高いタスクスケジューリング方式
-
処理予定時間が最も短いタスクから処理を実行する
-
現在実行中の処理が完結するか、又は何らかの要因によって中断されたとき、次のタスクを開始する
-
プリエンプティブ
-
マルチタスク処理の実現方式で、OSがCPUを管理する方式で、各タスクが短い時間間隔でOSに処理を返す
-
プリエンプティブ方式を実現するには、OSがプロセスを強制的に切り替えて実行する機構が必要になる
-
例)ラウンドロビン
-
ノンプリエンプティブ
-
マルチタスク処理の実現方式で、OSがCPUを管理しない方式
-
例)到着順
- タイムスライシング(タイムスライス)
CPUの処理時間を微小時間に分割し、それを実行可能な状態にあるタスクに順に割り当てること
CUPに割り当てるジョブをOSが強制的に切り替えるタイムスライス方式では、タイマ割り込みによりスループットは低下しない
- ラウンドロビン方式
-
要求された順番にCPUを割当て、割り当てられた時間を使い切った後は、待ち行列の末尾に回す方式
-
一定時間ごとにタイマ割り込みを発生させ、実行可能の待ち行列に先頭タスクにCPU資源を割り当てる
-
対話型処理とバッチ処理が混在するシステムでは、対話型処理の優先度を高くすることで、対話型処理の応答性能の向上が期待できる
-
SPT ( Shortest Processing Time First ) 方式
処理時間の短いジョブの順に処理を行うので、対話型処理の平均応答時間を最小にできる
- ジョブのスケジュールを計画するために必要な情報
ジョブごとの処理時間、ジョブの相互関係、ジョブの優先順位
- 優先度順方式
一部のジョブの応答時間が極端に長くなることがある
- 処理時間順方式
- 到着順方式
FCFS(first-come first-served)方式のジョブスケジューリングは、最初に来たジョブにCPUを割り当てるので、他のジョブの応答時間が長くなる
- 対話型処理とバッチ処理が混在するシステムでは、対話型処理の優先度を高くすることによって、対話型処理の応答性能の向上が期待できる
- 入出力を多用するジョブは入出力に時間がかかるため、入出力を多用するジョブの処理優先度を上げても全体のスループットの向上は期待できない
- ジョブとジョブステップ
-
ジョブはコンピュータで実行されるひとまとまりの処理であり、一つ以上のジョブステップから構成される
-
ジョブステップは、CPU割当てを受ける単位であるタスク又はプロセスから構成される
- スレッドとプロセス
同一アドレス空間に含まれているスレッド間の通信は、プロセス間の通信と比較して高速に行われる
- プロセス(タスク)管理におけるスレッド
プログラム実行単位を規定する情報(コンテクスト)を切り替える際、プログラムカウンタおよびレジスタ群は切り換えるが、記憶空間はそのままとするもの
- 時間監視処理の対象
資源の開放待ち
- デバイスドライバをアプリケーションタスクとして作成する場合、通常のタスクと異なり、割込み処理をそのタスク内に定義する
- セマフォ
- 共有資源を管理する手段
- 共用資源を使用するタスク間の排他制御方法として、割り込み禁止よりもセマフォを使用することで、共用資源を使用するタスクだけを排他制御の対象にできる
- P操作:資源のロックを行う
- V操作:待ち状態のプロセスがあれば、そのプロセスをひとつ実行可能状態へ移す(アンロック)
- プログラム制御
- リエントラント ( 再入可能 )
-
あるプログラムAの処理が終了していないときに、別のプログラムから再度呼び出されても正しく動作するとき、このプログラムAの性質
-
リアルタイムシステムにおいて、複数のタスク/プロセスから並行して呼び出される共用ライブラリのプログラムに要求される性質
- 互いに干渉することなく並行して処理することができる
- 複数のタスクから並行して実行されても、それぞれのタスクに正しい結果を返す
- 処理が終了していないプログラムが、別のプログラムから再度呼び出された時に、プログラムが正しく実行される
-
再入可能プログラムを実現するためには、プログラムを手続き部分とデータ部分に分解して、データ部分をプロセスごとにもつ必要がある
-
再入可能プログラムは、局所変数をタスク単位に格納しなければならない
-
再入可能プログラムは、呼出し元ごとに確保された記憶領域に局所変数が割り当てられる
- リカーシブ(再帰可能)
自分自身を呼び出すことが可能
- リユーザブル(再使用可能)/シリアルリユーザブル(逐次再使用可能)
処理中に、初期値を持つ領域の値を変える場合は、領域を初期値に戻してから処理を終了する必要がある
- リロケータブル(再配置可能)
プログラムを実行するために主記憶に読み込んだとき、ロード位置に対応してプログラム内のアドレス情報を補正すること
- タスクの状態遷移
- 状態遷移
- 実行状態→待ち状態:入出力命令の発行、ページフォールトの発生
- 実行状態→実行可能状態:CPU時間切れ、自分より優先順位の高いタスクが実行可能状態になった
- 実行可能状態→実行状態:ディスパッチ
- 待ち状態→実行可能状態:入出力完了による割り込み
- 実行状態のタスクがプリエンプションによって他のタスクに実行を中断され、再び実行状態となるまでの状態の変化
実行状態→実行可能状態→実行状態
- メールボックスの受信待ちのタスクが実行状態に遷移する契機となるもの
受信待ちタスクよりも低い優先順位のタスクが同じメールボックスにメッセージを送信した
- FIFOで処理されるメールボックスに関する操作で、タスクが待ち状態に遷移するもの
受信待ちをしているタスクが存在するメールボックスに対して受信要求をしたとき
- マルチタスクで動作するコンピュータにおけるタスクの状態遷移で、実行状態のタスクが実行可能状態に遷移するもの
-
自分より優先度の高いタスクが実行可能状態となった
-
リアルタイムOSにおいて、優先度の低いタスクが優先度の高いタスクの実行を阻害するのは、優先度の低いタスクが獲得している資源を、優先度の高いタスクがタスクが獲得要求した場合
- リアルタイムOSのマルチタスク管理機能において、タスクAが実行状態から実行可能状態へ遷移する場合
タスクAより優先度の高いタスクBが実行状態となった
- タスクが発行するシステムコールと発行後の状態遷移先
-
システムコール:メールボックスへの送信
-
状態遷移先:実行可能状態
- タスクのディスパッチ
あるタスクの実行中に、別のタスクに切り替え、かつ実行権を渡すこと
- 記憶管理
- プログラムの実行時に利用される記憶領域
- スタック領域:サブルーチンの戻りアドレスの退避
- ヒープ領域:割当ての順序と開放の順序に関連のないデータ
-
CPUのレジスタ:アクセス時間の最も短い記憶装置
- メモリリーク
-
アプリケーションやOSのバグなどが原因で、動作中に確保した主記憶が開放されないことであり、これが発生すると主記憶中の利用できる部分が減少する
- メモリリークが発生すると予想されるか又は発生した場合に、被害を少なくするためには、定期的にシステムを再起動することが有効
- オーバレイ
-
あらかじめプログラムを幾つかの単位に分けて補助記憶に格納しておき、プログラムの指定に基づいて主記憶との間で出し入れをする
-
必要がなくなったセグメントの領域に、次に実行するセグメントが上書きされる
- ページング
主記憶とプログラムを固定長の単位に分割し、効率よく記憶管理することによって、少ない主記憶で大きなプログラムの実行を可能にする
- スワッピング
-
プログラムを一時的に停止させ、使用中の主記憶の内容を補助記憶に退避する。再開時には、退避した内容を主記憶に再ロードし、元の状態に戻す。
-
スワッピングが頻繁に発生する場合の対策:主記憶を増設する
- スワップアウト(ロールアウト):優先度の高いプログラムの実行のために、主記憶で実行中のプログラムやデータを補助記憶に待避すること
- スワップイン(ロールイン):優先度の高いプログラムやデータを主記憶に読み込むこと
- ガーベジコレクション
-
記憶領域の動的な割り当て及び開放を繰り返しによって発生したどこからも利用されない記憶領域を再び利用可能にする処理
-
フラグメンテーションの発生によって、合計としては十分な空きメモリ領域があるにもかかわらず、必要とするメモリ領域を獲得できなくなることがある
-
プログラム実行時の主記憶管理
プログラムが使用しなくなったヒープ領域を回収して再使用可能にすることを、ガーベジコレクションという
- メモリインタリーブ
-
コンピュータの高速化技術の一つ
-
主記憶を幾つかの区画に分割し、連続したメモリへのアクセスを高速化する
-
主記憶を複数の独立して動作するグループ(バンク)やアクセス単位に分け、連続したメモリ領域を割り当て、この複数の領域へ並列にアクセスするすることで高速化する方式
- 主記憶を複数の独立したグループに分けて、各グループに交互にアクセスすることによって、主記憶へのアクセスの高速化を図る
- マルチプログラムの多重度の設定を過度に小さくした場合に発生する現象
主記憶の使用率が下がる
- 主記憶領域の使用率を下げるためにデスクトップ上の利用頻度の少ないアイコンを削除したり、不要なウインドウを閉じる
ミドルウェア
-
基本ソフトウェアの機能を利用し、多様な利用分野に共通するより高いレベルの基本機能を提供するソフトウェア
- 各種ミドルウェアの役割と機能
- API ( Application Program Interface )
-
アプリケーションから、OSが用意する各種機能を利用するための仕組み
-
アーキテクチャの異なるCPU間でも、同じOSとそのAPIを使用することによって、プログラムの互換性を高め、移植時の工数を削減することが可能
-
DOM ( Document Object Model )
HTML文書やXML文書をアプリケーションから利用するためのAPI
-
SAX ( Simple API for XML )
XML文書をアプリケーションから利用するためのAPI
- Web API
- 各種ライブラリ
- ダイナミックリンキング(動的結合)
プログラム実行時に、共用ライブラリやシステムコールのモジュールをロードして使うのに用いられる
- 動的リンクライブラリ(DLL)の特徴
アプリケーションの実行中、必要になったときにOSによって連携される
- コンポーネントウェア
ActiveXやCORBA、JavaBeansなど、オブジェクト指向技術を基礎とした比較的自立性の強いソフトウェア部品を組み立てることによって、アプリケーションを開発する技術の総称
- シェル
-
利用者が入力したコマンドを解釈し、対応する機能を実行するように OSに指示する
- シェルのリダイレクト機能による実現の可否
標準入力と標準出力をファイルに切り替えることができ、標準出力をファイルに追加することもできる
- 開発フレームワーク
- ミドルウェアの選択と利用
ファイルシステム
- ファイルシステムの種類と特徴
- ディスクファイルシステム
- PCのファイルシステムの役割
アプリケーションプログラムが、ハードディスクやDVDなど記憶媒体の違いを意識しなくてもファイルにアクセスできるように、統一ししたインタフェースを提供する
- アクセス手法
- ファイル編成
- ファイル、フィールド(項目)、レコードの関係
ファイル>レコード>フィールド
- ファイル管理
- 磁気ディスクの空き容量を管理している領域管理テーブル、ファイル名やファイルの実体を示すディレクトリ、そしてファイルの実体などの関連した情報を磁気ディスクに作成する
- コンピュータのシステムダウンが起きたとしても、ファイルシステムに障害を引き起こすことのない書き込み順序
領域管理テーブル→ファイル実体→ディレクトリ
- ファイル領域割当て方式のうち、連続したブロックにすき間なく格納する方式と比較したときの、ブロックをリンクで連結する方式の特徴
ファイルの作成と削除を繰り返しても、ファイルに割り当てられない無駄な領域が発生しない
- ディレクトリ管理
- ファイルシステム内の特定のファイルを指定するためには、ディレクトリパスを指定する
- 親ディレクトリと子ディレクトリの間では、親から子へ、子から親への両方向の参照が可能である
- 木構造を採用したファイルシステム
階層が異なれば同じ名称のディレクトリが作成できる
- PCでファイルやディレクトリの階層的な管理
- ルートディレクトリ
最上位の階層にあたるディレクトリ
- カレントディレクトリ
現時点で利用者が操作を行っているディレクトリ
- 相対パス
カレントディレクトリを基点としてファイルやディレクトリの所在場所を示す表記
現在作業を行なっているディレクトリを基点として、目的のファイルやディレクトリまで、全ての経路をディレクトリ構造に従って示す
- 絶対パス
階層の最上位のディレクトリを起点として、目的のファイルやディレクトリまで、全ての経路をディレクトリ構造に従って示す
- フォーマット
磁気ディスクに、データを記録するための領域と、それを管理するための領域を作成すること
- 論理フォーマット
OS固有のファイルシステムの管理領域や実際に記録されるデータの論理的な位置を設定する
- アーカイブ
-
記憶媒体の有効利用やバックアップ、配布などの効率化を目的として、複数のファイルを一つにまとめる処理
-
複数のファイルを一つのファイルにまとめて、記憶装置に格納すること
- アーカイバ
データ管理ユーティリティの一つで、データのバックアップや配布のために、複数のファイルを一つにまとめたり、元に戻したりする
開発ツール
-
設計ツール
-
CASE
-
適用する開発工程や範囲によって分類できる
-
上流CASEツール
要求分析の支援機能が含まれる
DFDの作成支援を提供する
-
エディタ
文字の挿入、削除、置換などの機能によってプログラムのソースコードを編集する
-
ソフトウェア構成管理ツール
支援の対象とする作業: バージョン管理
-
リポジトリ
-
ソフトウェアの開発および保守行程における様々な情報を一元的に管理するためのデータベース
-
ソフトウェアの開発及び保守における設計情報やプログラムを一元的に管理するためのデータベース
-
各工程での成果物を一元管理することによって、開発・保守作業の効率が良くなり、用語の統一もできる
-
プログラム単位の機能説明やデータ定義の探索を容易にする
-
データの定義情報(メタデータ)を保持し、データベースのデータディクショナリ又はデータディレクトリとして利用される
-
ソフトウェア開発・保守工程などの各工程での成果物を一元管理することによって、用語を統一することもでき、開発・保守作業の効率が良くなる
-
格納したデータについての複数のバージョンを管理する機能が必須
-
チェックイン
セントラルリポジトリから分岐リポジトリへのデータのコピーのこと
-
チェックアウト
分散リポジトリによるセントラルリポジトリのデータの更新のこと
構成管理ツールを使用して開発用のソースコードを取得する際に、リポジトリ上の位置やリビジョン等の構成情報を保持したままでソースコードを入手するとき、構成管理ツールに対して行う操作
-
必須の機能
格納したデータについての複数のバージョンを管理する機能
- 構築ツール
-
ジェネレータ
入力・処理・出力などの必要な条件をパラメタで指示することによって、処理目的の応じたプログラムを生成する
-
テストツール
-
静的解析ツールで検出できるもの
後に使用されない変数への代入
- 言語処理ツール
-
最適化コンパイラ
-
クロスコンパイラ
あるコンピュータを使って、そのコンピュータとは異なる命令形式を持つコンピュータで実行できる目的プログラムを生成するための言語処理プログラム
コンパイルを実施するコンピュータとは異なるアーキテクチャを持ったコンピュータで動作するオブジェクトコードを生成する
-
中間言語コンパイラ(バイトコードコンパイラ)
オブジェクトコードを生成する代わりに、インタプリタ用の中間コードを生成する
- インタプリタ
- リンカ
- ローダ
-
エミュレータ
システム上で他のOSやCPUの機能を再現し、そのOSやCPU向けのアプリケーションソフトを動作させるソフトウェア
-
シミュレータ
仮想的な環境で、実行して動作を確認するツール
-
インサーキットエミュレータ(ICE)
-
ツールチェーン
-
統合開発環境
オープンソースソフトウェア
- OSS ( OSS ; Open Source Software )の種類と特徴
-
Linuxに代表されるソフトウェアであって、再配布の自由、再配布時のソースコード包含、派生ソフトウェアの改変の許諾などが要求されるもの
-
公開されているソースコードは入手後、改良してもよい
-
一定の条件の下で、ソースコードの変更を許可している
-
OSSの配布にあたっては、配布先となる個人やグループを制限してはいけない
-
OSSを複製したり改良したりして再配布することは許可されている
-
公開されているOSSを改良した派生ソフトウェアをOSSとして公開できる
-
OSSを再頒布する際には、有料にすることができ、必ずしも無料にする必要はない
-
特徴
OSSはOSI ( Open Source Initiative )によるOSD ( The Open Source
Definition )の定義に基づくとする場合はOSSをパッケージ化したり、自社のソフトウェアを組み合わせたりして、有償で販売することができる
-
OSSの例
- Eclipse
ソフトウェアの統合開発環境として提供されているOSS
- GCC
コンパイラ
- Tomcat
サーバ用ソフトウェア
- サーバの種類とそれに使用されるオープンソースソフトウェアの組合せ
-
DNSサーバ:BIND
-
Webサーバ:Apache
- メールサーバ:Postfix
- UNIX系OS
- UNIX
-
ファイル管理
- ファイルシステム全体を単一のディレクトリツリーで管理しており、ネットワーク経由のリモートファイルもディレクトリに割り付けてアクセスする
- 周辺機器をディレクトリ階層の中のファイルとして扱うことができる
-
特殊ファイル
-
キャラクタスペシャルファイル:プリンタ
-
ブロックスペシャルファイル:磁気ディスク
-
ホームディレクトリ
UNIXの階層的ファイルシステムにおいて、アカウントを持つ一般の利用者がファイルの保存などに使う階層で最上位のもの
- UNIXのファイル分類
- 通常ファイル
- ディレクトリファイル
ファイル名とファイルの実体を対応付けるためのファイル
- 特殊ファイル
- プログラム実行環境
マルチユーザ、マルチタスクである
- パイプ
UNIXにおいて複数のコマンドでデータを連続的に処理するときに、コマンド間でデータを受け渡す仕組み
- デーモン
-
OSと同時又は必要に応じて起動され、バックグラウンドで常に動作しており、通信などOSの機能の一部、プリントキューからの印刷を管理したり、通信などを提供する
-
NFS ( Network File System )
-
UNIXで利用されるファイル共有システム
-
主にUNIXで利用されるファイル共有システムであり、離れた場所にあるコンピュータのファイルを、あたかも自分のコンピュータのファイルのように操作することができる
- Linux
- Linuxシステムにおいて、静的ライブラリと比較した場合の共有ライブラリの特徴
実行時のメモリの使用効率がよい
- オープンソースコミュニティ
-
Open Source Initiative ( OSI )
オープンソースを推進する非営利組織
- ディストリビュータの役割
OSSやアプリケーションソフトを組み合わせて、パッケージにして提供する
- LAMP/LAPP
- オープンソースライブラリ
- OSS の利用・活用と考慮点(安全性,信頼性ほか)
- 動向