「.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パラメーター修飾子などがある。
ミドルウェア †
UDDI †
ファイルシステム †
領域割当 †
以下の様な条件の動作を想像する的な。
- 媒体要件
- 媒体A, B, Cがある。
- A, B, Cの容量は同一
- 最初は全て空き状態
- 割当要求に対して十分な容量を持つ。
- アルゴリズム
- 空き領域が最大の媒体を選択
- 空き容量が等しい場合、A -> B -> C の順に選択
- 動作
- 媒体A : aaaaaaaaa
- 媒体B : bbbddddfff
- 媒体C : cccceeeeeee
表の検索時間 †
開発ツール †
デバッガ †
デバッグツール。
- ステップ実行
- ブレークポイント設定
- ステップイン・ステップオーバー
プロファイラ †
実行に関するプロファイルを行う。
エミュレータ †
OS、CPUなどの下位レイヤを
エミュレーション(模倣、代替動作)する。
シミュレータ †
開発ツールのコンテキストで言うと、
- Webページのレイアウト確認するツール
- アプリケーションの実行環境の再現するツール
などがあるもよう。
OSS †
ディストリビュータ †
Distribution とは配分の意味なので、≒ OSSを配布するという意味だが、
特に、LinuxカーネルにGUIなどを付属させて、一般利用可能なプロダクトとして
リリースすることまでを指す(故に、ほぼLinux界隈用語ではある)。
SELinux †
- パーミッション(アクセス権限)系の機能が追加されている。
- アカウント・グループ
- パーミッション(アクセス権限)
- 調べてみると、Ubuntu、CentOSなどは以下でスイッチできる。
- disabled:
ポリシー設定に反するアクセスを許可。ログを出力しない。
- permissive:
ポリシー設定に反するアクセスであっても許可する。ただし、ログは出力する。
- enforcing:
ポリシー設定に反するアクセスを拒否し、ログを出力する。