「.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
色々なソフトウェア
詳細 †
OS †
スケジューリング方式 †
プロセスやスレッドのスケジューリング方式
- ラウンドロビン方式
ラウンドロビンでスケジューリングして実行
- 優先度順方式
優先度の高いものをスケジューリングして実行
- 優先度エージング
長時間実行されて処理時間が累積したプロセスの優先度を下げる。
- イベントドリブン・プリエンプション方式
リアルタイムシステムで使用され、各タスクに設定された、
応答許容時間に合うようにスケジューリングされる。
タスクの終了時間 †
優先度は1が一番高く、優先度の高いタスクが優先的に処理される。
# | タスク | 発生時刻 | 処理時間 | 優先度 |
1 | A | 0 | 5 | 5 |
2 | B | 5 | 10 | 2 |
3 | C | 10 | 15 | 3 |
4 | D | 15 | 10 | 4 |
5 | E | 20 | 5 | 1 |
- | - | -- | 45 | - |
00000000011111111112222222222333333333344444444445
12345678901234567890123456789012345678901234567890
A *****
B **********
C .....*****.....**********
D ....................**********
E *****
回避方法
- 同じ順序でオブジェクトにアクセスする(CRUD表などを利用)。
- トランザクション内でのユーザの対話をなくす。
- トランザクションを短くして、1つのバッチ内に収める。
- 業務に問題が無ければ、できるだけ低い分離レベルを使用する。
主記憶管理 †
- メモリコンパクション(デフラグメンテーション
主記憶の断片化解消を行う。
- ガベージコレクション
VM上でのメモリ確保と、オブジェクトへの割当と解放
+断片化しためもりのデフラグメンテーションを行う。
- 動的リンキング(ダイナミックリンキング
プログラムの実行に必要なライブラリを、実行時に動的にリンク(連結)する。
- 動的再配置(ダイナミック・リロケーション)
プログラム実行モジュールの配置位置を移動させる(仮想記憶)。
- オーバーレイ
ある時点で必要なコードのみをアドレス空間上に置く。
仮想記憶をサポートする以前の方式で、プログラマの明示的に指定が必要。
仮想記憶 †
- ページング方式・セグメント方式
- ページング方式
通常ページング方式を使って実装される。
- セグメント方式
仮想アドレス空間を可変長のセグメントに分割
- 単一レベル記憶
ソフトウェアに対して主記憶装置と補助記憶装置の区別を意識させず、
ただ一つの巨大なアドレス空間で管理する仮想記憶のメモリ管理技術
- 多重仮想記憶
プロセス毎に、ページテーブルと呼ばれるデータ構造を持ち、その中に、
アドレス変換テーブル(仮想ページ番号と物理ページ番号のマッピング情報)を格納する。
- ハード・ページフォールト
スワップイン(補助記憶装置 → 主記憶装置)の発生
- ページング方式
- デマンド・ページング方式
必要な時に読み込むので無駄がないが、遅延が発生する。
- プリ・ページング方式
事前に読み込むので遅延が発生しないが、無駄が発生する。
- スラッシング
ハード・ページフォールトが多発している状態。
- ページの読み込み回数
初期読込回数+ハード・ページフォールト回数
値渡し・参照渡し †
- 参照渡しは、C, C++だと、単純にポインタを使うのだが、
高級言語(や分散オブジェクト)を使用する場合だと、
呼び出し元への値のコピーを行ったりする。
- 最近は、in/out/refパラメーター修飾子などがある。
- 値渡し(in)
- 参照渡し(ref)
- 初期化不要で値を戻す(out)
ミドルウェア †
ファイルシステム †
開発ツール †
OSS †
参考 †