-
Notifications
You must be signed in to change notification settings - Fork 0
DNET_AdvancedAMSoftware
色々なソフトウェア(高度:午前Ⅰ、午前Ⅱ)
- マルチタスクの該当節を参照。
プロセスやスレッドのスケジューリング方式
-
ラウンドロビン方式
ラウンドロビンでスケジューリングして実行 -
優先度順方式
優先度の高いものをスケジューリングして実行 -
優先度エージング
長時間実行されて処理時間が累積したプロセスの優先度を下げる。 -
イベントドリブン・プリエンプション方式
リアルタイムシステムで使用され、各タスクに設定された、
応答許容時間に合うようにスケジューリングされる。
優先度は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 *****
-
デザイン・パターンの該当節を参照。
-
イベント・フラグ
イベントの通知 -
ミューテックス
排他制御処理 -
セマフォ
リソースが無くなるまで動く -
I/O完了ポート
入出力割込。
回避方法
- 同じ順序でオブジェクトにアクセスする(CRUD表などを利用)。
- トランザクション内でのユーザの対話をなくす。
- トランザクションを短くして、1つのバッチ内に収める。
- 業務に問題が無ければ、できるだけ低い分離レベルを使用する。
-
メモリコンパクション(デフラグメンテーション
主記憶の断片化解消を行う。 -
ガベージコレクション
VM上でのメモリ確保と、オブジェクトへの割当と解放
+断片化したメモリのデフラグメンテーションを行う。 -
コード
-
動的リンキング(ダイナミックリンキング
プログラムの実行に必要なライブラリを、実行時に動的にリンク(連結)する。 -
動的再配置(ダイナミック・リロケーション)
プログラム実行モジュールの配置位置を移動させる(仮想記憶)。 -
オーバーレイ
ある時点で必要なコードのみをアドレス空間上に置く。
仮想記憶をサポートする以前の方式で、プログラマの明示的な指定が必要。
-
-
参考
-
Wikipedia
- フラグメンテーション
https://ja.wikipedia.org/wiki/%E3%83%95%E3%83%A9%E3%82%B0%E3%83%A1%E3%83%B3%E3%83%86%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3 - ガベージコレクション
https://ja.wikipedia.org/wiki/%E3%82%AC%E3%83%99%E3%83%BC%E3%82%B8%E3%82%B3%E3%83%AC%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3 - 動的リンク
https://ja.wikipedia.org/wiki/%E5%8B%95%E7%9A%84%E3%83%AA%E3%83%B3%E3%82%AF - オーバーレイ (コンピュータ用語)
https://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%BC%E3%83%90%E3%83%BC%E3%83%AC%E3%82%A4_(%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E7%94%A8%E8%AA%9E)
- フラグメンテーション
-
it-shikaku.jp - コンピュータシステム - 5.ソフトウェア - 1.オペレーティングシステム - 7.記憶管理
http://www.it-shikaku.jp/top30.php?hidari=05-01-07.php&migi=km05-01.php
-
-
ページング方式・セグメント方式
- ページング方式
通常ページング方式を使って実装される。 - セグメント方式
仮想アドレス空間を可変長のセグメントに分割
- ページング方式
-
単一レベル記憶・多重仮想記憶
-
単一レベル記憶
ソフトウェアに対して主記憶装置と補助記憶装置の区別を意識させず、
ただ一つの巨大なアドレス空間で管理する仮想記憶のメモリ管理技術 -
多重仮想記憶
プロセス毎に、ページテーブルと呼ばれるデータ構造を持ち、その中に、
アドレス変換テーブル(仮想ページ番号と物理ページ番号のマッピング情報)を格納する。
-
-
ページング方式&多重仮想記憶用語
-
スワッピング
-
スワップイン
補助記憶装置 → 主記憶装置 -
スワップアウト
主記憶装置 → 補助記憶装置
-
-
ページフォールト
-
ソフト・ページフォールト
スタンバイリスト中の変更済みページリストから復帰する
(物理メモリ管理の該当節を参照) -
ハード・ページフォールト
スワップイン(補助記憶装置 → 主記憶装置)の発生
-
-
ページング方式
- デマンド・ページング方式
必要な時に読み込むので無駄がないが、遅延が発生する。 - プリ・ページング方式
事前に読み込むので遅延が発生しないが、無駄が発生する。
- デマンド・ページング方式
-
スラッシング
ハード・ページフォールトが多発している状態。 -
ページの読み込み回数
初期読込回数+ハード・ページフォールト回数
(初期読込回数を数え忘れるという引っ掛けがある)
-
-
参考
- Wikipedia
- 仮想記憶 - Wikipedia
https://ja.wikipedia.org/wiki/%E4%BB%AE%E6%83%B3%E8%A8%98%E6%86%B6
- 仮想記憶 - Wikipedia
- Wikipedia
-
参照渡しは、C, C++だと、単純にポインタを使うのだが、
高級言語(や分散オブジェクト)を使用する場合だと、
呼び出し元への値のコピーも行ったりする。 -
最近の言語は、in/out/refパラメーター修飾子などがある。
-
値渡し(in)
- 初期化必要
- 値を戻さない。
-
参照渡し(ref)
- 初期化必要
- 値を戻す。
-
(out)
- 初期化不要
- 値を戻す。
-
- Javaの該当節を参照。
- UDDI - Wikipedia
https://ja.wikipedia.org/wiki/UDDI
以下の様な条件の動作を想像する的な。
-
条件
-
媒体要件
- 媒体A, B, Cがある。
- A, B, Cの容量は同一
- 最初は全て空き状態
- 割当要求に対して十分な容量を持つ。
-
アルゴリズム
- 空き領域が最大の媒体を選択
- 空き容量が等しい場合、A -> B -> C の順に選択
-
割当要求
-
順番とサイズ
90(a) -> 30(b) -> 40(c) -> 40(d) -> 70(e) -> 30(f)
-
-
-
動作
媒体A : aaaaaaaaa 媒体B : bbbddddfff 媒体C : cccceeeeeee
-
一定
ハッシュ -
比例
テーブル・スキャン、インデックス・スキャン -
対数関数
インデックス・シーク -
指数関数
・・・
デバッグツール。
-
ステップ実行
- ブレークポイント設定
- ステップイン・ステップオーバー
-
変数・メモリの表示・編集
実行に関するプロファイルを行う。
-
実行回数・時間
-
コールグラフ表示
-
使用したリソース
- CPU
- メモリ
- , etc.
OS、CPUなどの下位レイヤを
エミュレーション(模倣、代替動作)する。
開発ツールのコンテキストで言うと、
- Webページのレイアウト確認するツール
- アプリケーションの実行環境の再現するツール
などがあるもよう。
Distribution とは配分の意味なので、≒ OSSを配布するという意味だが、
特に、LinuxカーネルにGUIなどを付属させて、一般利用可能なプロダクトとして
リリースすることまでを指す(故に、ほぼLinux界隈用語ではある)。
-
パーミッション(アクセス権限)系の機能が追加されている。
- アカウント・グループ
- パーミッション(アクセス権限)
-
調べてみると、Ubuntu、CentOSなどは以下でスイッチできる。
- disabled:
ポリシー設定に反するアクセスを許可。ログを出力しない。 - permissive:
ポリシー設定に反するアクセスであっても許可する。ただし、ログは出力する。 - enforcing:
ポリシー設定に反するアクセスを拒否し、ログを出力する。
- disabled:
移行メモ
- 「+断片化しためもりのデフラグメンテーション」→「メモリ」に正した。
- 「プログラマの明示的に指定が必要」→「プログラマの明示的な指定が必要」に正した。
- 元 Wiki の行頭空白によるガント・チャート図や割当要求の記述は、 フェンス付きコードブロックにした。
- 元 Wiki で見出しそのものが他ページへのリンクになっていた箇所 (「プリエンプティブ方式」「スレッド同期ツール」「デッドロック」「物理メモリ」 「Java構成要素」「JavaScript」「ビッグデータ」)は、 GitHub Wiki では見出しからアンカが生成されるため、 見出しをプレーン・テキストとし、リンクは直下の本文に置いた。
- マイクロソフト系技術情報 Wiki(techinfoofmicrosofttech.osscons.jp)への URL リンクは、移行済みの マルチタスク / デザイン・パターン / SQL Server でのデッドロック / 物理メモリ管理 / JavaScript に張り替えた。
- PukiWiki のページ内アンカ(
#xxxxxxxx)は GitHub Wiki では再現できないため、 他ページのアンカを指すリンクは「〜(ページ名の該当節を参照)」の形に置き換えた。
Tags: 移行, 資格, 高度午前, ソフトウェア, OS, スケジューリング, デッドロック, 主記憶管理, 仮想記憶, ページング, ミドルウェア, ファイルシステム, デバッガ, プロファイラ, OSS, SELinux
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。