【応用情報技術者試験 #1】コンピュータシステム

# 1.はじめに

　この記事は1か月の勉強で応用情報技術者試験に合格できるのかどうか記録するのと、
　記憶の定着でアウトプットという意味を込めて記録しているものになります。

　私の経歴などは下記の記事を参照ください。
　  [【応用情報技術者試験】ほぼ勉強してない状態で約1か月で受かることはできるのか](https://qiita.com/NK_2/items/f33e1f3df5f1327570bf "Hello")



# 2.勉強内容のアウトプット

## ・コンピュータシステム

　FPU・・・浮動小数点計算に特化したプロセッサ。
　DSP・・・アナログ信号をデジタル信号に変換することに特化したプロセッサ

　MIPS(※)の計算方法
　※MIPS・・・1秒間に100万命令を実行できることを表す単位

　MIPS = 1 ÷　平均命令実行時間（**秒**）　×　CPUの使用率

　CPUの命令サイクル

　1.命令を取り出す（フェッチ）
　2.命令を解読する（デコード）
　3.オペランド(※)を読み出す
　4.命令を実行する
　↑1～4を繰り返す

　フェッチ
　「概要」
　　主記憶装置から命令を取り出し、命令レジスタに格納する。
　　主記憶装置には命令部とオペランド部があり、それぞれのアドレスに沿って命令を投げる。

　「流れ」
　　1.プログラムカウンタに書かれている主記憶装置上のアドレスにアクセスする。
　　2.格納されている「命令」と「オペランド」を命令レジスタに格納する。
　　3.プログラムカウンタの値を1つ増やす。

　命令サイクルの2は、命令デコーダ(※)に命令レジスタの命令部の内容を格納する。
　※命令デコーダ・・・命令を解読するもの  
　※オペランド・・・式を構成する要素のうち、演算子じゃない方の要素のこと。
　（例えば、1+2という式があったら、オペランドは1と2のこと）


### プロセッサの高速化

　パイプライン処理・・・CPUなどのプロセッサの性能を向上させるための技術のひとつであり、複数の命令を並行して実行するための方式。

　パイプラインハザード・・・命令間の 依存関係 などにより パイプライン処理 を止めたりやり直さなければならなくなること。
 
　下記はパイプラインハザードの３種類である。

　　・構造ハザード・・・主記憶のアクセスが競合した場合に発生する
　　・制御（分岐）ハザード・・・分岐命令や割り込みが原因で発生する
　　・データハザード・・・処理するデータの依存関係が原因で発生する

  下記に代表的なパイプライン手法を記載する。

  　・スーパーパイプライン・・・パイプライン処理の段階を更に細分化することによって高速化を図る手法のこと。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3880301/5fe1f093-ba4b-536b-7247-b63e6aaa67d0.png)

　　・スーパースカラ・・・パイプライン処理を行う回路を複数持つことで複数の命令を同時に実行する仕組み。
  ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3880301/9e8c71f3-c990-d6a7-4bc8-c9be52908997.png)

　　・VLIW（Very Long Instruction Word）・・・依存関係のない複数の命令をひとつの複合命令として同時に実行させる手法。
  ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3880301/8c5513a8-10e5-6089-ee41-9fbbbe0ae473.png)


### マルチプロセッサ

　蜜結合プロセッサ・・・複数のプロセッサが主記憶装置を共有するマルチプロセッサシステム。複数のプロセッサは共通バスを経由して接続される。
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3880301/86c84daa-fd88-6fe0-d644-a8a183ea5627.png)

　疎結合プロセッサ・・・複数のプロセッサが通信回線を経由してデータを共有する、マルチプロセッサシステム。
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3880301/d61d697a-212f-5acd-8f78-daca47fae9eb.png)


### メモリ

　大きく分けてRAMとROMに分かれる。

　RAM・・・揮発性で電源を切るとデータが消える
　ROM・・・ReadOnlyメモリで昔でいえばファミコンのカセット、今でいうとSwitchのカセットのような一度書き込んで後は書き換えができないもの。

　DRAM
　　速度　：遅
　　容量　：大
  　データ：リフレッシュ動作をしないと消える

　メモリーインターリーブ・・・メモリとCPUの処理を高速化させる手法で、メモリ分身させて（実際にはされてない）同時にやり取りすることでCPUとメモリの間のやり取りを速くする技術。

　SRAM
　　速度　：速
　　容量　：小
　　データ：フリップフロップ回路で記憶

　ヒット率・・・CPUがキャッシュメモリにアクセスするとき、キャッシュメモリに目的のデータが存在する確率

　ライトスルー方式・・・CPUがキャッシュメモリに書き込みを行う際、同時に主記憶装置（メインメモリ）へも書き込みを行う方式。

　ライトバック方式・・・CPUがキャッシュメモリに書き込みを行う際、普段はキャッシュメモリにしか書き込みを行わず、主記憶装置への書き込みは後で行う方式。

　ダイレクトマップ方式・・・主記憶装置のデータをキャッシュメモリのどの位置に格納するか決める方式のひとつで、主記憶装置のブロック番号に一定の計算を行うことでキャッシュメモリの格納位置を算出する方式。

　フルアソシエイティブ方式・・・主記憶装置のデータをキャッシュメモリのどの位置に格納するか決める方式のひとつで、キャッシュメモリ内の空き領域にデータを保管する方式。

　セットアソシエイティブ方式・・・主記憶装置のデータをキャッシュメモリのどの位置に格納するか決める方式のひとつで、キャッシュメモリのブロックを複数のセットに分け、主記憶装置のブロック番号から一定の手順で算出した位置にあるセットに含まれているいずれかのブロックにデータを格納する方式。


### 仮想記憶


### その他のメモリ管理

　パーティション方式
　  ・固定区画方式
  　  -あらかじめ決められたサイズに区画を作成する
    　-区画サイズは決まっているので無駄な領域が生まれる。
      -区画サイズが決まっているので区画作成が速く管理しやすい。

    ・可変区画方式
    　-ロードしたいサイズに区画を作成する。
    　-区画サイズはプログラムのサイズになるので無駄がない。
    　-管理にコストがかかる

　フラグメンテーション・・・メモリの管理上の単位が小さく分割されてしまい、そのままでは有効活用できない状態のことをいいます。
 　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3880301/1a1a1066-2ccd-423f-416d-1a18a665cefd.png)

　ガベージコレクション・・・コンピュータプログラムが動的に確保したメモリ領域のうち、不要になった領域を自動的に解放し、空き領域として再利用できるようにすること。


### ジョブ管理とタスク管理

　ジョブ管理の順序は下記に記載。

　マスタスケジューラ
　↓
　ジョブスケジューラ
　↓
　リーダ
　↓
　イニシエーター
　↓
　**タスク管理**
　↓
　ターミネータ
　↓
　ライタ
　↓
　ジョブスケジューラ
　↓
　マスタスケジューラ
　　　

　タスク管理は下記で構成されている。

　・実行可能状態（ready）：
　　実行可能状態とは、プログラムがCPUの割り当てを待っている状態のこと。
　　実行可能状態のプログラムは、OSがスケジューリング（CPUの割り当て順序）を決める対象となる。
  
　・実行状態（run）：
　　実行状態とは、プログラムがCPUを使用して実際に処理を行っている状態のこと。
　　一つのCPUは一度に一つのプログラムしか実行できませんが、OSが時間単位でCPUを切り替えることで、複数のプログラムが同時に実行されているように見える。

  ・待ち状態（wait）：
　　待ち状態とは、プログラムが入出力や割り込みなどのイベントを待っている状態のこと。
　　待ち状態のプログラムは、CPUを使用できないため、OSがスケジューリングの対象から外す。イベントが発生すると、待ち状態から実行可能状態に遷移する。

　他用語関係
 　プリエンプション・・・CPUの使用権を奪われる。
   ディスパッチャ・・・OS内部で動作するプログラムで実行可能なタスクから次に実行するタスクを選択し、CPUへ割り当てる役割を担う。ディスパッチャは、適切なタイミングで適切なタスクを選択することで、システム全体の性能や効率を向上させる。


　タスクスケジューリング方式には次のようなものがある。
　　・到着順方式
  　　-実行可能状態になったタスクから順番に処理していく方式

　　・優先度順方式
　　　-タスクに優先度を設定し優先度の高いものから順番に実行していく方式

　　・動的優先度順方式
　　　-優先度順方式と同じでタスクに優先度を設定し優先度の高いものから順番に実行していく方式です。優先度順方式との違いは、待ち時間が一定時間以上になったタスクの優先度を徐々に上げていく方式

　　・ラウンドロビン方式
  　　-CPUを使用できる時間（タイムクォンタム）を定め、その時間内に処理が終わらない場合は、次のタスクにCPUの使用権が与えられる方式。

　　・多重待ち行列方式
    　-ラウンドロビン方式に優先度を加味させた方式。


　**割込み処理（インタラプト）**・・・コンピュータのCPUが現在実行中の処理を一時中断し、別の処理を優先的に実行する仕組み。

 　**外部割込み**・・・プログラム以外の外部要因によって発生する割込み
   外部割込みには下記の種類が存在する。

　　- **入出力割込み**・・・ハードウェアデバイス（キーボード、マウス、ディスクドライブなど）からの信号によって発生する割込みです。要は入出力装置の動作完了時や中断時に生じるものです。例えば、キーボードのキーが押されたときに発生します。

   　- **コンソール割込み**・・・コンソールデバイスからの信号によって発生する割込みです。オペレーターによる介入が生じた場合の割り込みですね。例えば、管理者がシステムコンソールを使用して特定の操作を行ったときに発生します。

   　- **機械チェック割込み**・・・ハードウェアの故障やエラーが検出されたときに発生する割込みです。例えば、メモリの故障や電圧異常が検出された場合に発生します。


   　- **タイマー割込み**・・・システムタイマが設定した時間が経過したときに発生する割込みです。これは、定期的なタスクの実行やスケジューリングに使用されます。


  　**内部割込み**・・・プログラム自体が原因で発生する割込み

   　-　**プログラム割込み**・・・プログラムのエラーや例外（ゼロ除算エラー、オーバーフロー、ページフォルトなど）が原因で発生します。その他、仮想記憶において存在しないページにアクセスを試みた場合や、書き込みできない主記憶装置に書き込み処理をしようとした場合などにも生じます。

 　　-　**SVC**・・・プログラムが特権命令を実行する必要がある場合に発生する割込みです。例えば、入出力操作やメモリ管理のような特権操作を行う際に、OSに対して特権命令の実行を要求します。


### システム構成

　デュプレックスシステム・・・単体ではなく、予備のシステムをがある構成。
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3880301/ec16b2ac-9a6c-172c-1951-933e95aa5a82.png)

　デュアルシステム・・・常に2台で同じ処理を行い、それぞれの結果を照合して最終的な結果を出してるので、片方に障害が発生してもサービスを提供し続けることができる方式。
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3880301/e5a0db76-a49d-544e-59af-f07221bd6097.png)

　ホットスタンバイ方式・・・ホットスタンバイは従来のシステムをいつでも（常に）稼働可能な状態で待機させておく方式です。
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3880301/cc644ede-0ca8-38bf-fd2f-e2685007d60a.png)

　ウォームスタンバイ方式・・・ウォームスタンバイは従系のシステムの電源は常に入れておきOSも立ち上がっている状態なので、ここまではホットスタンバイと同じなのですが、主系と同じアプリケーションは動作していないです。その代わりに、別の用途のアプリケーション（例えばバッチ処理）を動かしていたりします。
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3880301/84c09864-d851-401e-f2f7-be1316ddf88c.png)

　コールドスタンバイ方式・・・コールドスタンバイは従系のシステムの機器だけ用意しておき、電源をオフにして待機させておく方式です。
 　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3880301/3f94e5cf-d416-17eb-576a-d327e671f99c.png)


### RAID
複数のHDDを仮想的に1台のHDDと認識、表示、冗長性を持たせる技術。
* RAID0：ストライピング。複数のディスクに分散して書き込み高速化をはかる。
* RAID1：ミラーリング。同データを2つのディスクに書き込んで障害生を高める。
* RAID2：RAID0でストライピング保存し、エラー修正用のハミング符号を記録する。
* RAID3：RAID0でストライピング保存し、エラー修正用のパリティビットを複数の専用ドライブに分割し記録する。
* RAID4：RAID3の改良版で、ビット単位からブロック単位で分割する方式。
* RAID5：RAID2、RAID3、RAID4とは違い、エラー修正用データを保存するディスクに分けて保存。
* RAID6：RAID5の改良版で、エラー修正用データを二重保存する。



### システムの信頼性
* フェールセーフ　　　　：故障したら安全な方に転ばせる。
* フェールソフト　　　　：故障したも最低限動かす。システムに障害が発生したらシステム全体を止めずに一部の機能を切り離して稼働させ続ける。
* フォールトトレランス　：システムが凍障しても尾性女王に稼働しつづける
* フォールトアボイダンス：故障そのものを回避するために障害自体が起きにくいように設計する
* フールプルーフ　　　　：使用者が誤った祖往査をしても重大な事故や問題が発生しないように設計する考え方。

　RASIS・・・コンピュータシステムやソフトウェアの品質を評価する5つの指標の頭文字をとった用語で、システムやソフトウェアが安定して期待した通りに稼働しているか否かを判断する指標。
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3880301/682ec7af-2b8e-92bd-8398-489225a97626.png)



本日分、以上です。