コンピュータシステム(4)
ソフトウェア
OS
ソフトウェアの分類
スケジューリング
マルチタスクとマルチスレッド
マルチタスク
1つのCPUで複数のタスク(CPUで実行されるプログラムの実行単位)を並行して実行する方法
マルチスレッド
1つのタスク内で複数のスレッド(タスクをさらに細分化した処理単位。主記憶領域を共有している)を並行して実行する方法(最近のOSはほとんどマルチスレッドをサポート)
ジョブ管理
人間がコンピュータシステムに処理を依頼する単位がジョブ。通常は、複数のジョブを並行・実行する
スループット
一定時間内に処理される仕事量のこと
スプーリング
時間のかかる入出力処理などの際に、ハードディスクなどに一時的にすべてのデータを書き込んで少しずつ処理させることで、マイクロプロセッサを効率的に利用すること
スワッピング
ハードディスクなどの補助記憶装置を利用して利用可能なメモリ容量を増やすOSの機能を一つ。ハードディスク上に専用の保存領域を用意して、メモリ容量が不足してきたら現在使われていないプログラム(プロセス)を一時的にスワップファイルに書き出して消去し、占有していたメモリを開放する。メモリからハードディスクに退避する動作をスワップアウト、ハードディスクからメモリに書き戻す動作をスワップインという
ブロッキング
複数のレコードをまとめたものをブロックと呼び、ブロックはデータセットがディスクやテープなどの記憶装置に記録されるときの単位で、物理レコードとも呼ばれる。これに対してブロック内の各レコードは論理レコードとなる。複数の論理レコードをブロックにまとめることをブロッキングと呼び、入出力時間を短縮できる
種類
OSにはさまざまな種類があり、それぞれのOSでファイルやフォルダなどの管理方法が異なる。異なるOS間ではファイルが正しく表示されないなどのトラブルが起こることもある
Windows98/ …/7/8 | MicrosoftのMS-DOSに替わるOS。32ビットのPC/AT互換機で動作。最近では64ビットに対応したものも。GUIを採用。マルチタスクを採用 |
---|---|
Mac OS | AppleのMacintosh用のOS。GUIを最初に採用したOS。画像処理などでは定評がある |
UNIX | AT&Tベル研究所開発。主にワークステーション用のOS。CUIが基本だが、X-Window導入でGUIとして扱うことが可能。マルチタスク、マルチユーザで動作する。安定性や堅牢性にも定評がある |
Linux | UNIXと互換性のあるOS。比較的スペックの低いコンピュータでも安定して動作する。CUIが基本だが、ソフトウェアを組み込んでGUIとして扱うことが可能。無償使用で仕様が公開されているオープンソースソフトウェア。特に産業用ロボットや組込機器などで多く採用 |
※CUI:(キャラクタユーザインタフェース)コンピュータにおいて、キーボードを用いて入力を行い文字によって出力を行う様式のユーザインタフェース
※GUI:(グラフィカルユーザインタフェース)コンピュータの画面上に、ウィンドウ、アイコン、ボタンといったグラフィックが表示され、ユーザはそれらの中から目的の動作を表すグラフィックスをマウスなどのポインティングデバイスで選択を行う様式のユーザインタフェース
汎用コンピュータのOS
汎用コンピュータのOSは汎用コンピュータを製作しているメーカが機器に合わせて独自に開発
リアルタイムOS
リアルタイム処理を目的としたOSのこと。利用者の使いやすさよりデータの処理速度を優先。実行されるタスクは静的に生成され、汎用機OSのようにタスクの優先度を変化させることはない
(制御ロボット、銀行のATM、座席予約など)
ネットワークOS
ネットワーク管理を専門に行うOSのこと。NetWareなど
デーモン
UNIX系のOSにおいて、メモリに常駐して様々なサービスを提供するソフトウェア。WindowsNTでは同様のソフトウェアを「サービス」と呼ぶ。ファイルシステム、メールの送受信、印刷、Webサーバなどの機能はすべてシステム内に配置されたデーモンによって行われる
マイクロカーネル
OSの中核部分(カーネル)に最も汎用性の高い機能だけを持たせることでカーネルを小型化する手法。マイクロカーネルでは、ファイルシステムや仮想記憶処理などの機能は外部モジュールとして独立しており、カーネル自身は割込み処理やプロセス間交信などの限られた機能しか持たない
デュアルライセンス・マルチライセンス
ソフトウェアなどを複数の異なる利用許諾(ライセンス)に基づいて配布・販売などすること。「デュアルライセンス」は2つの異なるライセンスが用いられ、「マルチライセンス」は3つ以上の場合も含む
利用者は自分の開発しているソフトウェアの一部に組み込みたい場合、そのソフトウェアのライセンスに合わせて適用するライセンスを選択することができる
タスク
タスクの状態遷移
ジョブはジョブ管理機能でジョブステップに分解され、さらにタスク管理機能によってタスクに分割される。タスクはすぐに実行されるわけではなく、以下の3つの状態をとる
●実行可能状態:CPUの使用権が与えられれば実行できる状態
●実行状態:CPUで実行している状態
●待機状態:入出力装置の処理が終了するのを待っている状態
@タスクの生成
A優先順位の最も高いタスクにCPUの使用権を与える
CPUスケジューラによってCPUを割り当てられた
B自分より優先順位の高いタスクが実行可能状態にな
ったり、自分に割り当てられた時間が終了したとき
C入出力処理が必要になった時
D入出力処理が完了したり、他のプロセスの命令に
より待ち状態が解除されたとき
Eタスクの消滅
ディスパッチ
タスクにCPUを割り当てること。実行中のタスクがあれば中断し、優先度の高いタスクに切り替え、実行権を渡す
スレッド
タスク内をさらに細分化した処理単位のこと。CPU以外の資源は割り当てられず、親のプロセスから必要な資源を継承する
スレッドが共有するもの
●アドレス空間
●開いているファイル識別子
●プロセス間の通信ポート
スレッドごとに管理するもの
●スタック
●プログラムカウンタの値
●レジスタセットの値
タスクのスケジューリング
優先度順方式 | 処理全体からタスクの優先順位を決めて処理する方式 |
---|---|
タイムスライス方式 | 一定の処理時間ごとに、タスクを実行する方式 |
ラウンドロビン方式 | 一定の処理時間ごとにタスクを実行し、処理時間内に終了しなかった場合待ち行列の最後に遷移する方式 |
到着順方式 | 実行可能状態になったタスクの順番で、タスクを実行する方式 |
処理時間順方式 | 処理時間の短いタスクから実行する方式 |
イベントドリブン方式 | ある事象(イベント)の発生によって、タスクを実行する方式 |
タスクの切り替え方式
●ノンプリエンティブ方式 | :プロセスの切り替えをプログラム自身に任せる方式 |
●プリエンティブ方式 | :OSがプロセッサの実行権限を管理し、プロセスの |
実行を切り替える方式 |
セマフォ
共有資源管理の同期/排他制御に用いられる仕組み
資源要求:P操作と資源解放:V操作
イベントフラグ
タスク間で同期をとるための機能。特定の待ちパターン(ビットパターン)を送る側と受ける側に分かれてタスクの同期をとるために利用する。受ける側は必ずタスクでなければならない。送る側はタスクの場合と、OS管理下のタスク以外の状態(簡単に言えばOS管理下の割込みハンドラ)から可能
メールボックス
プロセス同期と通信のための、高度で柔軟な構造物。メッセージ(ここでのメッセージとは任意のオブジェクトを指す)の送受信が可能。
ランデブ
並行プロセス間の情報を受け渡すときの同期の取り方
記憶管理
実記憶管理
実記憶管理とは、主記憶に配置するプログラムを効率的に配置し、主記憶を有効に利用する機能
メモリリーク
プログラムが終了したときには、プログラムが使用していたメモリを別のプログラムで利用できるように、使っていた領域を空き領域にする必要がある(メモリの開放)。メモリが解放されない状態が起こり、使えるメモリの量が減ること
ガベージコレクション
メモリリークを防ぐために、利用されていないのに未開放のメモリ領域を開放する処理を行うこと
固定区分方式
主記憶をあらかじめ一定の大きさの区画に分け、その領域にプログラムを読み込む方法。プログラムを読み込んだ後に区画上に残っている空き領域は使用されない
可変区分方式
プログラムの大きさに応じて、メモリ上の区画の大きさも変えることで、メモリを有効に利用する方式
大きなプログラムも実行することが可能
デフラグが必要
オーバーレイ方式
プログラムを同時には実行しない複数の部分に分割し(セグメント単位)、実行時に必要な部分のみメモリに読み込む方式。メモリの容量がプログラムの大きさより小さい場合に有効な方式
スワッピング
優先度の高いプログラムを読み込むときに、優先度の低いプログラムを補助記憶装置へ追い出して、空いた領域にロードする方式。追い出したプログラムが必要になった時には、追い出したプログラムを再度メモリ上にロードしなおして実行する
仮想記憶管理
ハードディスクなどの補助記憶装置の一部を利用して、主記憶装置の記憶容量より大きな記憶空間(仮想記憶)を作成する機能
ページング方式(=ページ単位で入れ替え)
主記憶とプログラムを固定長の単位・ページ(2Kバイト、4Kバイトなど)に分割し、効率よく記憶管理する。このため、少ない実記憶で大きなプログラムの走行が可能
ページフォールト(ページ不在)
実行に必要なページが実記憶領域上にない場合に発生する割り込み
ページイン/ページアウト(スワップイン/スワップアウト)
ページイン | :メモリのページングにおいてデータを仮想メモリからメイン |
メモリに戻すこと | |
ページアウト | :メモリのページングにおいてデータをメインメモリから仮想 |
メモリに移すこと |
ページテーブル(Page Table)
コンピュータのオペレーティングシステムにおけるページング方式の仮想記憶システムで使われるデータ構造であり、仮想アドレスと物理アドレスのマッピング(ページが割り付けられている主記憶装置の実アドレスを)格納するももの
記憶保護
アドレス変換にはテーブルを用いるが、これに書き込み禁止情報を付加し、記憶領域を保護する
スラッシング
ページイン・ページアウトを行う場合、ハードディスクにアクセスする必要があり、主記憶層へのアクセスより時間がかかり、頻繁に起こった結果、コンピュータ処理速度が低下すること
メモリ消費量の大きいプログラムを終了させる、メモリを増設するなどの対策が必要
ページ置換えアルゴリズム
ページアウトするページを決定するアルゴリズム
FIFO(First In First Out)方式 | 最も古くからあるページを選び入れ替える |
---|---|
LRU(Least Recently Used)方式 | 最も長い時間使用されていないページを選び入れ替える |
LFU(Least Frequently Used)方式 | 最も使用頻度の低いページを選び入れ替える |
NRU(Not Recently Used)方式 | 一定時間使用されていないページを選び入れ替える |
デマンドページング
参照されたページが主記憶に無くてページフォールトが発生したとき、該当ページを補助記憶装置から主記憶に読み込む方式
セグメント方式
セグメントという論理的なまとまりでプログラムを分割する
プログラムの性質
再配置(リロケータブル) | 主記憶装置のどの位置に格納されても実行可能な性質 配置し直した領域に対応して、プログラム内のアドレスを補正する |
---|---|
再使用可能(リニューサブル) | 主記憶へ再ロードしなくても何度でも使用可能な性質 |
再入可能(リエントラント) | 複数のタスクの要求に応じて呼び出され、同時に実行可能な性質 呼び出されたプログラムごとにデータ域を確保し、パラメータやカウンタなどの変数が与えられる |
再帰(リカーシブ) | 自分自身のプログラムを呼び出して実行できるプログラム |
動的リンキング
プログラムの実行中に、別のプログラム・モジュールの機能が必要となったとき、そのプログラムをその場で結合して利用すること
ミドルウェア(応用プログラム間連携ソフトウェア)
OSとアプリケーションソフトウェアの中間で動作するソフトウェアのこと
ミドルウェアの種類
データベース管理 システム(DBMS) | 共有データを管理するミドルウェア Oracle(オラクル)やAccess(アクセス)など |
---|---|
開発支援ツール | アプリケーションソフトウェアの開発(要求分析、システム設計、開発、テスト、運用・保守)を支援する IDE(エディタ、コンパイラ、デバック等を支援)、CASEツール(設計を支援) |
運用管理ツール | ネットウェークシステム上で、システムの安定稼働などのためにクライアントのコンピュータ・データベースサーバなどシステム上の装置を管理する |
通信管理システム | 通信を行うときに、同期をとって送信するような通信回線の制御や文字コードの返還などを行うミドルウェア |
TPモニタ | トランザクション処理の実現、効果的運用の制御、監視をするミドルウェア |
IDE(統合開発環境)
エディタ、コンパイラ、ディバックツールなど、プログラミングの一連の作業を効率よく行うようにひとつのインタフェースにまとめた環境のこと
API
ソフトウェアを開発する際に、OSの各種機能を使って命令を伝達するためのインタフェースのこと
シェル
ユーザの操作を受けつけて、与えられた指示をOSの中核部分に伝えるソフトウェア。キーボードから入力された文字や、マウスのクリックなどを解釈して、対応した機能を実行すうようにOSに指示を伝える
コンポーネントウェア
オブジェクト指向技術を基盤としたソフトウェア部品を組み立てることによってアプリケーションを開発するための技術の総称
 

