2022-01-18 · 9분
情報セキュリティ — システムセキュリティ(パート 2)
システムセキュリティ学習ノート:マルウェア分類(ウイルス、トロイの木馬、ワーム、メール爆弾、ジョーク、スパイウェア)、トロイの木馬の機能と検出、実際のトロイ/ルートキット事例(NetBus、Back Orifice、ルートキット)、公開ハッキングツール — クラッキングとポートスキャン(NMap のスキャン種別)。
2022-01-13 · 27분
この記事は公開から2年以上経過しています。
コンピュータシステム
- データを処理する物理的な機械装置であるハードウェア(hardware)と、ある作業を指示する命令で作成したプログラムであるソフトウェア(software)で構成
コンピュータハードウェア
- ハードウェアはプロセッサ、メモリ(記憶装置)、周辺装置で構成され、これらはシステムバスで接続
プロセッサ CPU(中央処理装置)
- コンピュータハードウェア構成要素のうち OS と最も密接な部分で、コンピュータのすべての装置の動作を制御し演算を実行
CPU の構成要素の理解
- レジスタ
○ 用途による分類
▶ 専用レジスタ
▶ 汎用レジスタ
○ ユーザーが情報を変更できるかによる分類
▶ ユーザー可視レジスタ
▶ ユーザー不可視レジスタ
○ 保存する情報の種類による分類
▶ データレジスタ
▶ アドレスレジスタ
▶ 状態レジスタ
演算装置(ALU)
- 各種の算術演算と論理演算を実行
制御装置(Control Unit)
- プログラムコードの解釈およびそれを実行するための制御信号の発生
内部 CPU バス
- データの流れ、制御の流れ
専用レジスタとは?
- 専用レジスタとは特殊な目的を持つレジスタで、PC(プログラムカウンタ)、状態レジスタ、アドレスレジスタ、命令レジスタ、アキュムレータなどがある。
以前のブログ記事)> **[ハッキング] - [ハッキング] 専用レジスタ**](https://nabomhalang.tistory.com/entry/해킹-전용-레지스터)
[[ハッキング] 専用レジスタ。専用レジスタ Accumulator(アキュムレータ AC)- データを一時保存するレジスタである。記憶装置から読み込んだデータとアキュムレータに積まれていたデータが指定された演算を行った後、その結果値を再び積 — nabomhalang.tistory.com
汎用レジスタとは?
- コンピュータの中央処理装置(CPU)内にあり、演算処理、演算結果、復帰アドレスなど小さなデータを記憶するレジスタである。
以前のブログ記事)> **[ハッキング] - [ハッキング] レジスタ**](https://nabomhalang.tistory.com/entry/해킹-레지스터)
[[ハッキング] レジスタ。レジスタ:CPU の変数。汎用レジスタ 8 bit Register:AH, AL 16bit Register:AX 32bit Register:EAX 64bit Register:RAX - 汎用レジスタ:CPU で使う変数の一種 - EAX 算術計算.. — nabomhalang.tistory.com
システムバス(system bus)
- ハードウェアを物理的に接続して互いにデータをやり取りできるようにする通路
- コンピュータ内部の様々な信号(データ入出力信号、プロセッサ状態信号、インターラプト要求と許可信号、クロック(clock)信号など)をシステムバスで伝達
- 機能によりデータバス、アドレスバス、制御バスに区分
CPU 命令実行サイクル
- フェッチサイクル(fetch cycle)
→ メモリから命令を読み込んで命令レジスタに保存し、次の命令を実行するためにプログラムカウンタを増加させる
→ フェッチサイクルに要する時間を命令フェッチ時間という
- 実行サイクル(execution cycle)
→ フェッチした命令を解読し、その結果に応じて制御信号を発生させて命令を実行
→ 実行サイクルで消費される時間を実行時間という
- 間接サイクル(indirect cycle)
→ 間接アドレス指定方法を使う実行サイクルは、命令を実行する前に、実際のデータが保存された主記憶装置のアドレスである有効アドレスをもう一度読み込む
- インターラプトサイクル(interrupt cycle)
→ インターラプトは、プロセッサがプログラムを実行している間にコンピュータシステムの内部や外部で発生する予期せぬ事件
→ プロセッサは実行サイクルを完了した後、インターラプト要求があるか検査。インターラプト要求がなければ次の命令をフェッチし、インターラプト要求があれば現在実行中のプログラムのアドレス(プログラムカウンタ)値をスタックやメモリの 0 番地のような特定の場所に保存。プログラムカウンタにはインターラプト処理ルーチンの開始アドレスを保存しておき、インターラプト処理を完了すると中断されたプログラムへ復帰して実行を継続
命令実行過程
- 命令フェッチ → 命令解釈、カウンタ変更 → オペランドフェッチ → 命令実行 → 結果保存
<フェッチ過程>
1. PC → MAR
2. MAR → MBR
PC + 1 → PC
3. MBR → IR
< 間接サイクル過程 >
1. IR -> MAR
2. MAR -> MBR
3. MBR -> IR
インターラプト
- 現在実行中のプログラムを中断し、別のプログラムの実行を要求する命令
- システムの処理効率を向上させ、プログラムが実行順序を変えながら処理して多重プログラミングに使用
- コンピュータに設置された入出力装置やプログラムなどからプロセッサへ送るハードウェア信号で、インターラプトを受けたプログラムは実行を中断し別のプログラムを実行
- 単一プロセッサのコンピュータは命令を一度に一つ実行できるが、インターラプトを使えば途中で別のプログラムや命令を実行できる
- 予期せぬユーザー入力、突然の停電、コンピュータシステムからの緊急要請、誤った命令の実行、入出力作業の完了のような状況をシステムが適切に処理するのに必要
- プログラムの正常実行を一時中断して再開する過程だが、ユーザーが別途インターラプト措置をする必要はなく、プロセッサと OS が処理
- 外部装置の動作と自身の動作を調整する手段として使用
- インターラプト目的で使う制御バスはインターラプト要求回線
インターラプト要求回線
- キーボードから入力が発生したときだけプロセッサに通報して処理するので、プロセッサがイベント発生の有無を一つひとつ監視しなくてもよい。
- プロセッサが外部装置の状態を直接点検する必要がなく、この時間に他の演算を行ってプロセッサの効率を高められる
- インターラプト要求信号に従ってインターラプト処理プログラム(インターラプトサービスルーチン)を実行
- 単一回線と多重回線で接続
- 単一回線:インターラプト要求が可能なすべての装置を共通の単一回線でプロセッサに接続する方法。回線一つに装置を複数接続するため、インターラプトを要求した装置を判別する機能が必要。
- 多重回線:すべての装置を互いに異なる固有の回線でプロセッサと接続する方法。インターラプトを要求した装置をすぐに判別できる。
< インターラプトサイクル過程 >
1. PC → MBR
2. インターラプトルーチンアドレス → PC
PC に保存されたアドレス → MAR
3. MBR → MAR
メモリ階層構造
- 1950 〜 1960 年代、あまりに高価なメインメモリの価格問題のために提案された方法
- メモリを階層的に構成して、コスト、速度、容量、アクセス時間などを相互補完
◆ レジスタ
◆ キャッシュ
◆ メインメモリ
◆ 補助記憶装置
レジスタ
- プロセッサ内部にあり、プロセッサが使うデータを保管する最も速いメモリ
メインメモリ
- プロセッサの外部にありつつ、プロセッサで実行するプログラムとデータを保存したり、プロセッサで処理した結果を保存
- 主記憶装置または 1 次記憶装置ともいう。保存密度が高く価格が安い DRAM(Dynamic RAM)が多く使われる
- 多数のセル(cell)で構成され、各セルはビットで構成
- セルが K ビットならセルに 2^k 値を保存可能
- メインメモリにデータを保存するときはセル一つや複数に分けて保存
- セルはアドレスで参照するが、n ビットならアドレス範囲は 0〜2^(n-1)
- プロセッサと補助記憶装置の間にあり、ここで発生するディスク入出力のボトルネック現象を解決する役割を果たす
- プロセッサとメインメモリ間の速度差の負担を減らすため、プロセッサの内部や外部にキャッシュを実装することもある
メモリマッピング:写像
- コンパイルで論理的アドレスを物理的アドレスへ変換する過程
- メモリ速度
- メモリアクセス時間とメモリサイクル時間で表現
キャッシュ
- プロセッサの内部や外部にあり、処理速度の速いプロセッサと相対的に遅いメインメモリの速度差を補完する高速バッファ
- キャッシュの性能は、小容量のキャッシュにプロセッサが後で参照する情報がどれだけ入っているかで左右される
▶ キャッシュ的中(キャッシュヒット):プロセッサが参照しようとする情報があるとき
▶ キャッシュ失敗(キャッシュミス):プロセッサが参照しようとする情報がないとき
- ブロックの大きさはキャッシュの性能で左右されるが、実際にプログラムを実行するとき参照したメモリに対する空間的局所性と時間的局所性があるため
▶ 空間的局所性:ほとんどのプログラムが参照したアドレスと隣接したアドレスの内容を再び参照する特性
▶ 時間的局所性:一度参照したアドレスをすぐに再び参照する特性
- 空間的局所性と時間的局所性の発生原因
▶ プログラムが命令を順次実行する傾向があるため、命令が特定の局所メモリに隣接している。
▶ 循環(単一循環、入れ子循環など)のため、プログラムが反復してもメモリは一部の領域だけを参照する。
▶ ほとんどのコンパイラはデータをメモリの隣接ブロックに配列として保存する。したがってプログラムが配列要素に順次頻繁にアクセスするので、局所的な配列アクセスの傾向がある。
補助記憶装置
- 周辺装置のうちプログラムとデータを保存するハードウェア
- 2 次記憶装置または外部記憶装置ともいう
- 磁気ディスク、光ディスク、磁気テープなどがある
メモリ管理
- メモリ管理の概念
○ メモリ管理はプロセスのためにメモリを割り当て、除去、保護する活動
○ ディスクにあるプログラムを実行するには、まずメモリに積載後、メモリ管理者が予約されたメモリを割り当てること
○ 多重プログラミングシステムで複数のプロセスがメモリに常駐できるよう、OS が動的にメモリを細分化
- メモリ管理ポリシー
○ 積載ポリシー:ディスクからメモリへプロセスを搬入する時期を決定すること
▶ 要求積載:OS やシステムプログラム、ユーザープログラムなどの参照要請に応じて、次に実行するプロセスをメモリに積載する古い方法
▶ 予想積載:システムの要請をあらかじめ予測してメモリに積載する方法
○ 配置ポリシー:ディスクから搬入したプロセスをメモリのどの位置に保存するか決定
○ 置換ポリシー:メモリが十分でないとき、現在メモリに積載されたプロセスのうち除去するプロセスを決定する交換方法
- メモリに対する二つの観点
○ 論理的観点(論理的アドレス空間)
▶ プログラマがプログラミングに使う空間
○ 物理的観点(物理的アドレス空間)
▶ 実際のデータやプログラムを保存する空間
- メモリ装置のアドレス変換
○ メモリマッピング(Memory Mapping)を通じて論理的アドレス → 物理的アドレス
○ メモリ管理装置(MMU:Memory Management Unit)である H/W で実行される。
○ 変換技法
▶ 固定分割
▶ 動的分割
▶ ページング
▶ セグメンテーション
▶ ページ化されたセグメンテーション
- マッピング(mapping)[写像]
○ 論理的アドレスと物理的アドレスの連結
○ バインディング(binding):マッピングさせる作業
▶ コンパイル → リンキング → 動的連結
- 動的積載
○ バインディングを最大限遅らせ、実行直前にアドレスを確定するメモリ効率的な運用方法
○ すべてのルーチンをメモリに積載せず、交換可能な形でディスクに保存
○ メインプログラムだけを先にメモリに積載して実行
○ メインプログラムに他のルーチンが必要なとき、メモリに積載されているか調査。積載されていなければ、そのルーチンをメモリへ積載しようと呼び出しつつ、プログラムのアドレステーブルを更新
○ 動的積載は使わないルーチンをメモリに積載しないので、メモリを効率的に使用
○ エラーが発生することもあるが、プログラム全体の量が多いときにより有用
- 重畳(オーバーレイ)
○ 実行しようとするプログラムがメモリより大きいときは、当面必要でないプログラムの一部を重畳(オーバーレイ)に設定可能
○ OS 領域とメモリの一部領域にはプログラム実行に必ず必要な命令とデータだけを保存し、残りの重畳領域には必要なときに呼び出して積載する方法の構造
- スワッピング(プロセス交換)
○ プロセッサ割り当てが終わり実行完了したプロセスは補助記憶装置へ送り(スワップアウト)、新しく始まるプロセスはメモリに積載(スワップイン)。プロセスはメモリにあってこそ実行されるので、一時的にディスクへ移動してからメモリに戻り再び実行可能
- メモリ積載方法
○ 連続メモリ積載方法
▶ 固定分割
▶ 可変分割
○ 非連続(分散)メモリ積載方法
▶ ページング
▶ セグメンテーション
仮想メモリの概念
○ ユーザーと論理的アドレスを物理的に分離し、ユーザーがメインメモリ容量を超えたプロセスにアドレスを指定して、メモリを制限なく使えるようにすること
○ プログラム全体を同時に実行しないので、要求したメモリ全体ではなく一部だけ積載しても実行可能
○ 活動領域をメインメモリに維持しつつ、必要なときはディスクとメモリの間にプロセスコードとデータを保存し、再び自動的に転送する(スワップイン、スワップアウト)過程を経てプロセスを再割り当て。ディスクに保存されたアドレス空間はキャッシュとして処理し、メインメモリを効率的に使用可能
○ メインメモリの限られた容量と重畳使用の問題を解決
仮想メモリ管理技法
○ Paging メモリ管理技法
▶ 論理アドレスをページと呼ばれる固定ブロックに分割して管理する技法
▶ 各ページは物理メモリのフレームにマッピング
▶ ページを指す論理アドレスから、フレームを指す物理アドレスへ変換
○ Segmentation メモリ管理技法
▶ メモリをセグメントのセットに分けて管理する方式
▶ セグメントは開始アドレスとセグメントサイズを指定する長さ値で構成
○ Paged Segmentation
▶ ページでセグメントを構成し、セグメント表を参照した後、ページ表を参照する。
▶ 論理アドレスはセグメント番号、ページ番号、オフセットで構成
入出力管理
○ 入出力システムと入出力モジュールの概念
▶ モニターやプリンターのようなハードウェア装置だけでなく、入出力モジュールまで含む
▶ 物理的入出力装置が実際に入出力を行い、入出力モジュールはメモリやプロセッサ、レジスタなど内部記憶装置と物理的入出力装置の間の二進情報を転送する方法を提供
▶ 入出力モジュールがプロセッサに代わって入出力に関する複雑な仕事を処理すれば入出力チャネルまたは入出力プロセッサになり、単にプロセッサの入出力に関する仕事を担当すれば入出力制御機または装置制御機になる
入出力モジュールの機能
○ 内部資源やデータ入出力など様々な動作を制御し、タイミング機能を提供
○ 入出力モジュールが外部装置のタイミングとデータ形式、機械的な詳細を処理するので、プロセッサは単にファイルの開閉命令だけでも装置を制御可能
○ プロセッサが入出力装置に命令を送るには、入出力装置の識別子をアドレスとして指定しなければならない
○ アドレスを指定する方法
▶ メモリアドレス空間と入出力アドレス空間が別々にある専用入出力アドレス方法
▶ メモリアドレス空間の一部を入出力アドレス空間として共有するメモリマッピングアドレス方法
◎ メモリマッピングアドレス方法は、任意の機械命令とアドレスを入出力装置の指定に使うなど様々な柔軟性があり、データ転送完了を通報するためインターラプト信号を生成
○ プロセスから命令を受け取り、関連するメッセージを認識する機能を提供
○ 入出力モジュールは、命令解読 → データ交換 → 状態報告 → アドレス認識の過程を経てメッセージを認識
▶ 命令解読:プロセッサから命令を受けて解読する。
▶ データ交換:データバスでプロセッサとデータを交換する。
▶ 状態報告:低速周辺装置の状態を確認してプロセッサに報告する。
▶ アドレス認識:モジュールに接続された複数の装置を区別するアドレスとして認識する。
○ バッファリングを利用して転送速度を調節
○ エラーを検出
入出力方法
○ プロセス制御入出力
▶ プログラム制御入出力
▶ インターラプトベース入出力
○ DMA 入出力
○ 入出力チャネル
プログラム制御入出力方法
○ プロセッサ内部の入出力データとアドレスレジスタを入出力モジュールと接続した形態
○ アドレスレジスタとバスの間で直接転送できる最も単純な形態
○ データを入力するときは入出力モジュールを介して一度に 1 ワードずつだけデータレジスタへ転送し、入出力データレジスタからはプログラムを利用して算術論理演算装置へ転送
○ データを出力するときは算術論理演算装置から入出力データレジスタへ移動し、プログラムを利用して入出力モジュールへ転送
インターラプトベース入出力方法
○ 入出力装置が作業を完了した後、作業に関連する状態と結果をメモリに保存し、インターラプトを発生させてプロセッサに知らせる
○ インターラプトを受けたプロセッサは入出力命令を送り、入出力作業中に別の命令を開始
○ プロセッサがプロセッサの助けが必要かを入出力装置に確認する代わりに、入出力装置がプロセッサに直接信号を与える方法
○ 不規則で速い応答性が求められるときに適する
入出力チャネルを利用した入出力
○ 入出力チャネル:プロセッサとメインメモリを入出力装置に結合し、プロセッサの命令で入出力を制御する装置
○ チャネルサブシステムは複数で構成可能で、プロセッサとメインメモリのアクセスを調整
○ チャネルはサイクルスチールを使ってメモリに直接アクセスし、各入出力装置は制御装置を使ってチャネルと接続
○ 制御装置はチャネルと通信し装置を制御する機能を行う。類似の装置では制御装置を一つだけ使うので、一瞬には装置一つだけが活性化
○ 入出力チャネルには DMA の概念を拡張して入出力命令を実行できる機能があるので、入出力動作を完全に制御する権限がある
○ コンピュータシステムでは、プロセッサが入出力命令を実行しなくても入出力データをメインメモリに保存
○ プロセッサは入出力チャネルにメインメモリのプログラムを実行するよう指示して入出力転送を実行。入出力チャネルはメインメモリに保存された命令を実行しながらデータ転送を制御
チャネルの種類
○ セレクタチャネル:ある装置の入出力を終了するまで他の装置を実行しないようにするもの。磁気ディスク、磁気テープ、ドラムのような高速装置はマルチプレクサチャネルを使ってデータを高速転送するため、他の装置との多重化が困難。このとき、一度に一つずつ処理する専用チャネルを利用して多重化可能。
○ マルチプレクサチャネル:バイト単位で時分割し、複数装置の出力を処理。多数の低速・中速装置(カードリーダー、プリンター)を接続するときに使用。チャネル-メモリ接続は装置とチャネル間のデータ転送速度より速い速度でデータを転送できるため、速度の遅い多数の入出力装置を同時に動作
○ ブロックマルチプレクサチャネル:セレクタチャネルとマルチプレクサチャネルの長所を結合したもので、複数台の高速入出力装置をブロック単位で処理。同一チャネルで複数の高速装置を活性化可能。チャネル命令は装置一つと入出力命令を実行した後、別途の指示がなくても自動的に他の装置と命令を実行するよう変換される特徴。一つのチャネルが複数の入出力装置を時分割方法で使えるが、あるときは装置一つだけにサービスするのでセレクタチャネルに似る。しかしマルチプレクサチャネルのように他の装置サービスを完了するまで待たなくてよい。
○ バイトマルチプレクサチャネル:比較的低速の入出力装置を複数接続して多重化して使うチャネル。中央処理装置の処理速度に比べて一般に入出力装置の処理速度はかなり遅いので、チャネルを多重にして使うのが効果的である。
定義
○ コンピュータシステムが提供するすべての H/W と S/W 機能を使えるようにしてくれる最も重要なシステムソフトウェア
○ 限られたシステム資源(resource)を効率的に使えるよう管理・運用することで、ユーザーに最大限の利便性を提供
○ コンピュータシステムとユーザー間のインターフェイス(interface)機能を担うシステムプログラム
オペレーティングシステムの目的
○ OS の目的は、コンピュータシステムの資源(ハードウェア資源、情報)を最大限効率的に管理・運用することでユーザーに利便性を提供しようと、ハードウェアとユーザープログラムの間に存在するシステムプログラムとしてユーザーインターフェイス提供、性能向上など、限られた資源を効率的に使うことにある。
○ 信頼度の向上、処理量の向上、応答時間の短縮、単純な計算能力のみを提供するハードウェアをユーザーが簡単にアクセスできるよう提供、限られたシステム資源を効率的に統制・運用してより高い性能を発揮できるよう支援することである。
○ 処理能力の向上(throughput):単位時間内に最大限多くの量の仕事を処理できるようにすること
○ 応答時間の短縮:ユーザーがある仕事の処理をコンピュータシステムに依頼してから、その結果を得るまでに要する時間で、短いほどよい
○ 信頼度の向上:システムが与えられた問題をどの程度正確に解決するかを意味
○ 使用可能度の向上(Availability):コンピュータシステムを各ユーザーが要求したとき、どの程度迅速にシステム資源を支援できるかを表すもの
○ OS の機能には、プログラム生成(Program creation)、プログラム実行(Program execution)、入出力動作(I/O operation)、ファイルシステム操作、通信、エラー発見および応答、資源割り当て(Resource allocation)、計定管理(Accounting)、保護(Protection)などの機能がある。
オペレーティングシステムの構造
○ プロセッサ管理(層 1):同期化およびプロセッサスケジューリングを担当(CPU 管理)
○ メモリ管理(層 2):メモリの割り当ておよび回収機能を担当(Memory 管理)
○ プロセス管理(層 3):プロセスの生成、除去、メッセージ伝達、開始と停止などの作業(Process 管理)
○ 周辺装置管理(層 4):周辺装置の状態把握と入出力装置のスケジューリング(入出力管理)
○ ファイル(情報)管理(層 5):ファイルの生成と消滅、ファイルの開閉、ファイルの維持および管理を担当(ファイルとデータ管理)
○ **カーネル**はハードウェア特性からプログラムを隔離し、ハードウェアと直接的に相互作動することでプログラムに一貫したサービスを提供する。カーネルの基本概念はプロセスとファイルの管理である。そのほか入出力装置管理、メモリ管理およびシステムコールインターフェイスなどである。shell やユーティリティまたは応用プログラムは、定義されたシステムコールを通じてカーネルと通信する。UNIX 系のシステムがブートされるとき最初に読み込まれる OS の中核部分で、主記憶装置に常駐し、プロセススケジューリング、記憶装置管理、ファイルシステム管理、OS の固有機能を提供する。
○ システムコール(System call)
▶ 二重モードでユーザーモードは特権命令を使えず、こうした場合ユーザープロセスは OS に助けを要請することになるが、これをシステムコールという。すなわちシステムコールは、実行中のプログラムと OS の間にインターフェイスを提供するものである。
○ 二重モード(dual mode)構造
▶ 一般モード(ユーザーモード)と管理モード(モニターモード)の特徴の理解
▶ 多重プログラミング環境では、実行中の一つのプログラムのエラーが実行中の他のプログラムに影響を与え得るので、適切な保護が必要である。二重モードはこうした保護メカニズムの一つで、二つの動作モードを提供して、問題を引き起こす恐れのある命令をむやみに実行できないよう制御する。
○ ユーザーモード:ユーザーモードのソフトウェアは特権が付与されない状態で動作し、システムリソースに限定的にのみアクセスできる。保護される下位システムは各自が所有する保護された空間で実行され、互いに干渉しない。すなわちユーザーモードでは限定的な命令の使用のみ可能である。
○ モニターモード:カーネルモード、スーパーバイザモードといい、問題を引き起こす恐れのある命令は特権命令に分類し、こうした命令はモニターモードでのみ実行されるよう制限する。このモードではモード命令の使用が可能である。
○ プロセッサ管理:ハードウェアに依存した最も下位段階レベルで、プロセススケジューリングを通じて実行可能なプロセスを追跡・管理
○ 主記憶装置管理:主記憶装置のアクセスを管理・制御する処理装置の部分で、アドレス変換、記憶保護、バッファ記憶などの機能を実行
○ 補助記憶装置管理:ハードディスクやディスケットなどの記憶装置に対するアクセス管理・制御などを実行する機能
○ 入出力システム管理
▶ 装置駆動機の機能の理解
▶ インターラプト方式と DMA 方式の理解
▶ バッファリングとスプーリングの理解
○ コンピュータの入出力装置(I/O 装置)は、中央システムと外部との効率的な通信方法を提供する。入出力装置は別名周辺装置ともいうが、最も基本的なものとしてキーボード、ディスプレイ装置、プリンターと、補助記憶装置である磁気テープや磁気ディスクなどがある。
○ 装置駆動機 -:入出力制御機
▶ OS と応用プログラムおよびハードウェア間のインターフェイスを担うプログラムで、ハードウェアと OS・応用プログラムの連結の輪となるプログラムであり、ハードウェア構成要素が OS の下で正しく作動するのに必ず必要なプログラムで、装置制御機またはドライバともいう。装置制御機は命令を装置制御機に入力するため一つ以上の装置レジスタを持つが、装置駆動機はこれらの命令を発生させ、適切に実行されるか点検する機能を実行する。
○ インターラプトと DMA
▶ コンピュータシステムで使うデータの入出力方式には、プログラムによる入出力、インターラプトによる入出力、DMA による入出力などがある。
▶ プログラムによる入出力は、データの入出力動作が CPU の実行するプログラムの I/O 命令によって行われる。したがって、プログラム制御下でデータ転送を行うには、入出力を行う準備ができているかを知るため、CPU が周辺装置の状態を継続的に監視していなければならない。
▶ DMA(Direct Memory Access)は CPU を経ずに周辺装置とメモリの間で直接データを伝達するよう制御するインターフェイス方式で、高速周辺装置(M/T、DISK など)とコンピュータ間のデータ転送に多く使う。
バッファリングとスプーリング
○ バッファリング(Buffering):入出力装置と補助記憶装置は機械的要因のため CPU と比べて非常に遅い速度で作動する。このような入出力装置の遅い速度を補完する一つの方法にバッファリングがある。一つのレコードが読まれ CPU がそれに対する演算を始めると同時に、入出力装置がすぐ次に必要なレコードをあらかじめ読んで主記憶装置に保存することで、CPU が必要なレコードを待たずに済むようにするものである。このときこうしてあらかじめ読まれたレコードが存在する場所は主記憶装置の一部であり、これをバッファといい、このような一連の過程をバッファリングという。
○ スプーリング(Spooling):バッファリングは主記憶装置をバッファとして使う一方、スプーリングはディスクを非常に大きなバッファのように使うことである。プロセスは入力または出力を実際の入出力装置(Physical Device)を通さず、仮想的入出力装置(Virtual Device)であるディスクを媒体として利用した後、これらを再び実際の入力装置や出力装置が行うようにする。
○ ファイル管理:OS はプログラムやデータをファイル単位で管理し、記憶装置にファイル単位で保存する。ファイルに対する操作、保存方式、アクセス方法などの管理を実行
オペレーティングシステムの技術発展の流れ
○ 一括処理
○ 実時間処理
○ 時分割処理システム
○ 分散処理システム
○ 多重プログラミング
○ 多重処理
プロセス(process)の概念
○ 現在実行中か、まもなく実行可能なプログラム
○ OS 内に PCB を持つプログラム
○ 非同期的行為(asynchronous activity)
○ プロセスが割り当てる個体(entity)として、ディスパッチ(dispatch)が可能な単位
プロセスの種類
○ オペレーティングシステムプロセス
○ ユーザープロセス
○ 並行プロセス
▶ 独立プロセス:他のプロセスに影響を与えたり受けたりしないプロセス
▶ 協同プロセス:他のプロセスに影響を与えたり影響を受けたりするプロセス
プロセスの状態

○ 実行と非実行の状態に区分
▶ 実行状態プロセス:実行、待機/保留、準備に細分化する。
▶ 実行:命令が実行される状態、プロセッサを占有した状態
▶ 待機/保留:プロセッサがイベントの発生を待つ状態
▶ 準備:プロセスがプロセッサの割り当てを受けようと待つ状態
○ プロセスの状態変化
▶ アドミット(Admit):生成 → 準備
▶ ディスパッチ(Dispatch):準備 → 実行
▶ 割り当て時間超過(Time Run out):実行 → 準備
▶ 待機(Blocked):実行 → スリープ(待機)
▶ 起こす(Wake up):スリープ(待機) → 準備
▶ 終了(Release):実行 → 終了
○ プロセス制御ブロック(PCB)

スレッド
○ プロセスのようにプロセッサを使う基本単位
○ プロセス内の個体(命令を独立して実行できる一つの制御フロー)
○ プロセスはスレッドを一つ以上持てる。
○ スレッドを軽量プロセスともいう。
CPU 利用率
○ CPU 利用率 最大 ↑
○ 処理量(throughput) 最大 ↑
○ 総処理時間(turnaround time) 最小 ↓
○ 待機時間(waiting time) 最小 ↓
○ 応答時間 最小 ↓
CPU スケジューリング
○ CPU 資源をいつ、どのプロセスに割り当てるかを決定する作業を CPU スケジューリングという。
○ CPU が遊休状態のたびに、OS は準備キューにあるプロセスのうち一つを選択して実行しなければならない。
○ 選択手続きは短期スケジューラによって実行
○ スケジューラは実行準備ができているメモリ内のプロセスのうち一つを選択し、CPU を割り当てる
プロセススケジューリングの分類
○ 先取りスケジューリング
▶ RR, SRT, MLQ, MFQ など
○ 非先取りスケジューリング
▶ FIFO, SJF, HRN
デッドロック(Deadlock)
○ いくら待っても決して起こらない事件を待つプロセスが一つある状態
デッドロックの 4 つの必要条件
○ 相互排除
○ 占有と待機
○ 非先取り
○ 環状待機
セキュア OS
○ OS におけるセキュリティとは、資源に対する不法な修正や参照を防止するポリシーと技法の両方を指す用語で、システムの資源を外部の侵入から保護することである。
○ セキュア OS とは、コンピュータ OS 上に内在するセキュリティ上の欠陥によって発生し得る各種のハッキングからシステムを保護するため、既存の OS 内にセキュリティ機能を統合させたセキュリティカーネルを追加で移植した OS である。
セキュア OS の主要提供機能
○ 物理的分離:ユーザーごとに別々の装備のみ使うよう制限する方法
○ 時間的分離:プロセスが同一時間に一つずつだけ実行されるようにする方法
○ 論理的分離:各プロセスが論理的な区域を持つようにする方法
○ 暗号的分離:内部で使われる情報を外部からは分からないよう暗号化する方法
セキュア OS の主要提供機能
○ 保護対象および方法
▶ メモリ
▶ 補助記憶装置上のファイルまたはデータの集合
▶ ファイルのディレクトリ
▶ ハードウェア装置
▶ スタックのようなデータ構造
▶ 命令
▶ パスワードとユーザー認証メカニズム
▶ 保護メカニズム
○ 保護方法
▶ 物理的分離:ユーザーごとに別々の装備のみ使うよう制限する方法
▶ 時間的分離:プロセスが同一時間に一つずつだけ実行されるようにする方法
▶ 論理的分離:各プロセスが論理的な区域を持つようにする方法
▶ 暗号的分離:内部で使われる情報を外部からは分からないようにする方法
○ ファイルシステム保護技法
▶ ファイルの保護はファイルの共用問題と並行して考慮されなければならない。無条件にファイルを保護しさえすると、資源の浪費をもたらし得る。
▶ ファイルの保護は、無資格ユーザーのプログラムの無断アクセスを防ぐため、そのファイルの所有者が保護装置を作っておいたもの
セキュア OS とセキュリティカーネル
○ セキュア OS のセキュリティ機能
▶ ユーザー識別および認証
▶ 任意的/強制的アクセス統制
▷ 任意的アクセス統制(DAC, Discretionary Access Control):主体や所属グループの身分(Identity)に基づいて客体へのアクセスを制限する方法(身分ベースポリシー)
▷ 強制的アクセス統制(MAC, Mandatory Access Control):客体の秘密等級と主体が持つ権限に基づいて客体へのアクセスを制限する方法(規則ベースポリシー)
▷ 客体再使用の保護(防止)
◇ ユーザーが新しいファイルを作成するとき、そのための記憶装置空間が割り当てられる。
◇ 割り当てられる記憶空間には以前のデータが削除されず存在する場合が多く、秘密データが露出し得る。
▷ 完全な調整
◇ 任意的/強制的アクセス統制が効果的であるためには、すべてのアクセスを統制する完全な調整を実行しなければならない。
▷ 信頼経路(Trusted Path)
◇ パスワード設定やアクセス許可の変更などのセキュリティ関連作業を行うとき、安全な通信を提供できなければならない。
▷ 監査および監査記録の縮小
◇ すべてのセキュリティ関連事件は監査記録簿(audit log)に記録されなければならず、監査記録簿は保護されなければならない。
○ セキュリティカーネル
▶ コンピュータセキュリティにおいて、ユーザープロセスシステム内部の情報貯蔵所へのアクセスを統制する H/W と S/W で構成された localized mechanism をいい、信頼性プロセスとしてアクセスの正確な動作が実行されるよう、強制的条件を十分に保証しなければならない。
▶ TCB(Trusted Computing Base)は信頼できるプロセスを持ち、セキュリティカーネルを利用して実装される。
▶ 信頼コンピューティング基盤:OS とハードウェア、ファームウェア、ソフトウェアなどが含まれたコンピュータシステム内の総体的保護メカニズム
▶ システム資源へのアクセスを統制するための基本的なセキュリティ手続きを実装したコンピュータシステム(H/W および S/W)の中心部
セキュリティカーネル設計時の考慮事項
○ 参照モニター(Reference Monitor):主体の客体に対するすべてのアクセス統制を担う抽象マシンで、これを実際に実装したハードウェア、ファームウェア、ソフトウェアで構成されたものがセキュリティカーネルである。
○ 必ず不正操作がないこと。(Must be tamperproof.)
○ 常に無視されず呼び出されること。(Always invoked.)
○ すべての動作を常に分析とテストを通じて確認できること。(Must be Verifiable.)
信頼プラットフォームモジュール(TPM)
○ ハードウェア装置を利用したセキュリティ規格、その装置
○ コンピューティング環境で暗号化キーを保存できるセキュア暗号処理者を詳細に記録した規格
○ 主要機能:ディスク暗号化、DRM、ソフトウェアライセンス保護(管理)、暗号保護
○ 毀損防止のためハードウェアチップで実装(S/W で実装することもできる)
○ 物理的に盗難に遭っても情報の露出が容易ではない。
○ 暗号化キーの生成と指定、パスワード保存、無欠性検証のための測定値保存、認証書関連の信頼演算を提供
TPM 構成要素
○ I/O
○ 暗号化補助プロセッサ
○ キー生成
○ HMAC エンジン
○ 乱数発生器
○ SHA-1 エンジン
○ 電源探知
○ Opt-in
○ 実行エンジン
○ 不揮発性メモリ
○ 揮発性メモリ
原文(韓国語): tistory — 2022-01-13 公開、当ブログへ移行。この翻訳は AI の協力で作成されました。
…