Skip to content

DNET_AdvancedAMSoftware

nishi_74322014 edited this page Sep 11, 2026 · 1 revision

高度午前 - コンピューター・システム - ソフトウェア

概要

色々なソフトウェア(高度:午前Ⅰ、午前Ⅱ)

詳細

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                     *****

スレッド同期ツール

  • デザイン・パターンの該当節を参照。

  • イベント・フラグ
    イベントの通知

  • ミューテックス
    排他制御処理

  • セマフォ
    リソースが無くなるまで動く

  • I/O完了ポート
    入出力割込。

デッドロック

回避方法

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

物理メモリ

主記憶管理

仮想記憶

  • ページング方式・セグメント方式

    • ページング方式
      通常ページング方式を使って実装される。
    • セグメント方式
      仮想アドレス空間を可変長のセグメントに分割
  • 単一レベル記憶・多重仮想記憶

    • 単一レベル記憶
      ソフトウェアに対して主記憶装置と補助記憶装置の区別を意識させず、
      ただ一つの巨大なアドレス空間で管理する仮想記憶のメモリ管理技術

    • 多重仮想記憶
      プロセス毎に、ページテーブルと呼ばれるデータ構造を持ち、その中に、
      アドレス変換テーブル(仮想ページ番号と物理ページ番号のマッピング情報)を格納する。

  • ページング方式&多重仮想記憶用語

    • スワッピング

      • スワップイン
        補助記憶装置 → 主記憶装置

      • スワップアウト
        主記憶装置 → 補助記憶装置

    • ページフォールト

      • ソフト・ページフォールト
        スタンバイリスト中の変更済みページリストから復帰する
        物理メモリ管理の該当節を参照)

      • ハード・ページフォールト
        スワップイン(補助記憶装置 → 主記憶装置)の発生

    • ページング方式

      • デマンド・ページング方式
        必要な時に読み込むので無駄がないが、遅延が発生する。
      • プリ・ページング方式
        事前に読み込むので遅延が発生しないが、無駄が発生する。
    • スラッシング
      ハード・ページフォールトが多発している状態。

    • ページの読み込み回数
      初期読込回数+ハード・ページフォールト回数
      (初期読込回数を数え忘れるという引っ掛けがある)

  • 参考

値渡し・参照渡し

  • 参照渡しは、C, C++だと、単純にポインタを使うのだが、
    高級言語(や分散オブジェクト)を使用する場合だと、
    呼び出し元への値のコピーも行ったりする。

  • 最近の言語は、in/out/refパラメーター修飾子などがある。

    • 値渡し(in)

      • 初期化必要
      • 値を戻さない。
    • 参照渡し(ref)

      • 初期化必要
      • 値を戻す。
    • (out)

      • 初期化不要
      • 値を戻す。

ミドルウェア

Java構成要素

  • 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:
      ポリシー設定に反するアクセスを拒否し、ログを出力する。

移行メモ

  • 「+断片化しためもりのデフラグメンテーション」→「メモリ」に正した。
  • 「プログラマの明示的に指定が必要」→「プログラマの明示的な指定が必要」に正した。
  • 元 Wiki の行頭空白によるガント・チャート図や割当要求の記述は、 フェンス付きコードブロックにした。
  • 元 Wiki で見出しそのものが他ページへのリンクになっていた箇所 (「プリエンプティブ方式」「スレッド同期ツール」「デッドロック」「物理メモリ」 「Java構成要素」「JavaScript」「ビッグデータ」)は、 GitHub Wiki では見出しからアンカが生成されるため、 見出しをプレーン・テキストとし、リンクは直下の本文に置いた。
  • マイクロソフト系技術情報 Wiki(techinfoofmicrosofttech.osscons.jp)への URL リンクは、移行済みの マルチタスク / デザイン・パターン / SQL Server でのデッドロック / 物理メモリ管理 / JavaScript に張り替えた。
  • PukiWiki のページ内アンカ(#xxxxxxxx)は GitHub Wiki では再現できないため、 他ページのアンカを指すリンクは「〜(ページ名 の該当節を参照)」の形に置き換えた。

Tags: 移行, 資格, 高度午前, ソフトウェア, OS, スケジューリング, デッドロック, 主記憶管理, 仮想記憶, ページング, ミドルウェア, ファイルシステム, デバッガ, プロファイラ, OSS, SELinux

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally