.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

色々なソフトウェア

詳細

OS

プリエンプティブ方式

スケジューリング方式

プロセスやスレッドのスケジューリング方式

  • ラウンドロビン方式
    ラウンドロビンでスケジューリングして実行
  • 優先度順方式
    優先度の高いものをスケジューリングして実行
  • 優先度エージング
    長時間実行されて処理時間が累積したプロセスの優先度を下げる。
  • イベントドリブン・プリエンプション方式
    リアルタイムシステムで使用され、各タスクに設定された、
    応答許容時間に合うようにスケジューリングされる。

タスクの終了時間

優先度は1が一番高く、優先度の高いタスクが優先的に処理される。

#タスク発生時刻処理時間優先度
1A055
2B5102
3C10153
4D15104
5E2051
----45-
  00000000011111111112222222222333333333344444444445
  12345678901234567890123456789012345678901234567890 
A *****
B      **********
C           .....*****.....**********
D                ....................**********
E                     *****

スレッド同期ツール

  • イベント・フラグ
    イベントの通知
  • ミューテックス
    排他制御処理
  • セマフォ
    リソースが無くなるまで動く
  • I/O完了ポート
    入出力割込。

デッドロック

回避方法

  1. 同じ順序でオブジェクトにアクセスする(CRUD表などを利用)。
  2. トランザクション内でのユーザの対話をなくす。
  3. トランザクションを短くして、1つのバッチ内に収める。
  4. 業務に問題が無ければ、できるだけ低い分離レベルを使用する。

仮想メモリ

物理メモリ

主記憶管理

  • メモリコンパクション(デフラグメンテーション
    主記憶の断片化解消を行う。
  • ガベージコレクション
    VM上でのメモリ確保と、オブジェクトへの割当と解放
    +断片化しためもりのデフラグメンテーションを行う。
  • コード
  • 動的リンキング(ダイナミックリンキング
    プログラムの実行に必要なライブラリを、実行時に動的にリンク(連結)する。
  • 動的再配置(ダイナミック・リロケーション)
    プログラム実行モジュールの配置位置を移動させる(仮想記憶)。
  • オーバーレイ
    ある時点で必要なコードのみをアドレス空間上に置く。
    仮想記憶をサポートする以前の方式で、プログラマの明示的に指定が必要。

仮想記憶

  • ページング方式・セグメント方式
    • ページング方式
      通常ページング方式を使って実装される。
    • セグメント方式
      仮想アドレス空間を可変長のセグメントに分割
  • 単一レベル記憶・多重仮想記憶
  • 単一レベル記憶
    ソフトウェアに対して主記憶装置と補助記憶装置の区別を意識させず、
    ただ一つの巨大なアドレス空間で管理する仮想記憶のメモリ管理技術
  • 多重仮想記憶
    プロセス毎に、ページテーブルと呼ばれるデータ構造を持ち、その中に、
    アドレス変換テーブル(仮想ページ番号と物理ページ番号のマッピング情報)を格納する。
  • ページング方式&多重仮想記憶用語
  • スワッピング
  • スワップイン
    補助記憶装置 → 主記憶装置
  • スワップアウト
    主記憶装置 → 補助記憶装置
  • ページフォールト
  • ハード・ページフォールト
    スワップイン(補助記憶装置 → 主記憶装置)の発生
  • ページング方式
    • デマンド・ページング方式
      必要な時に読み込むので無駄がないが、遅延が発生する。
    • プリ・ページング方式
      事前に読み込むので遅延が発生しないが、無駄が発生する。
  • スラッシング
    ハード・ページフォールトが多発している状態。
  • ページの読み込み回数
    初期読込回数+ハード・ページフォールト回数
    (初期読込回数を数え忘れるという引っ掛けがある)

値渡し・参照渡し

  • 参照渡しは、C, C++だと、単純にポインタを使うのだが、
    高級言語(や分散オブジェクト)を使用する場合だと、
    呼び出し元への値のコピーも行ったりする。
  • 最近の言語は、in/out/refパラメーター修飾子などがある。
  • 値渡し(in)
    • 初期化必要
    • 値を戻さない。
  • 参照渡し(ref)
    • 初期化必要
    • 値を戻す。
  • (out)
    • 初期化不要
    • 値を戻す。

ミドルウェア

Java構成要素

JavaScript

ビッグデータ

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ページのレイアウト確認するツール
  • アプリケーションの実行環境の再現するツール

などがあるもよう。

OSS

ディストリビュータ

Distribution とは配分の意味なので、≒ OSSを配布するという意味だが、
特に、LinuxカーネルにGUIなどを付属させて、一般利用可能なプロダクトとして
リリースすることまでを指す(故に、ほぼLinux界隈用語ではある)。

SELinux

  • パーミッション(アクセス権限)系の機能が追加されている。
    • アカウント・グループ
    • パーミッション(アクセス権限)
  • 調べてみると、Ubuntu、CentOSなどは以下でスイッチできる。
    • disabled:
      ポリシー設定に反するアクセスを許可。ログを出力しない。
    • permissive:
      ポリシー設定に反するアクセスであっても許可する。ただし、ログは出力する。
    • enforcing:
      ポリシー設定に反するアクセスを拒否し、ログを出力する。

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-04-30 (火) 11:49:34 (57d)