Matsushita's Blog

グローバルIPアドレスの利用 NAPT

NATとは

LANに接続した複数のPCからインターネットを利用するには、各PCのプライベートIPアドレスグローバルIPアドレスに変換する機能が必要。これの機能をNATという。

コンピュータはプライベートIPアドレスという住所をもっている。しかし、インターネットと接続する時は、このプライベートIPアドレスは使えなず、グローバルIPアドレスを使う必要がある。なぜならプライベートIPアドレスはプライベートな空間のみで使用可能だから。このプライベートIPとグローバルIPを変換するのがNAT。

NAPTとは

NAPTとは、ポート番号を使い1つのグローバルIPから複数のプライベートIPに変換できるようにする仕組み。 言い換えると、1つのグローバルIPで複数のコンピュータがインターネットできるようになる仕組み。

NATの欠点として、1つのグローバルIPからは1つのプライベートIPしか変換することができない。1つのグローバルIPで複数のプライベートIPが変換できたら経済的に嬉しい。そこで、プライベートIPからグローバルIPに変換する際にそのコンピュータのポート番号を使って上げてる。これによって、1つのグローバルIPから複数のプライベートIPに変換する時に、どのプライベートIPに変換すれば良いか識別できるようになる。

参考

http://wa3.i-3-i.info/word11979.html

分散データベースの2相コミット

2相コミット (2フェーズコミット) とは

複数のデータベースの内容を更新する時に、処理が矛盾しないように整合性を保つための手法。 具体的には、複数のデータベースを更新する前に、全てのデータベースが更新可能かどうかを確かめてから、一斉に更新を行う。

2相コミットの処理ステップ

  1. マスターのサーバーから複数のデータベースへ更新可能か否かを問い合わせる
  2. それぞれのデータベースは自身が更新可能か否かをマスターのサーバーへ返す
  3. マスターのサーバーは全てのデータベースが更新可能であることを確認した後に、一斉にデータベースの更新を行う
  4. 更新処理の途中であるデータベースが更新処理を失敗した場合、失敗したということをマスターのサーバーへ返す。
  5. 失敗を知ったサーバーは全てのデータベースへ、ロールバックの指示を出し前の状態へ戻す。

更新可能か問い合わせるフェーズと、実際に更新するフェーズがあることから2フェーズコミットと呼ばれる。

バッファサイズの計算

バッファとは

バッファとは、処理速度の異なる装置間にデータを転送する際に、速度のギャップを埋めるためにデータを一時的に蓄える機能。

以下のような転送を考える。

装置A ---送信量S---> バッファ ---受信量R---> 装置B

装置Aは1秒当たり送信量Sに対して、装置Bの受信量はRである。また、S > Rの時、装置Bは受け止めきれない。 この時、バッファでは1秒間でS - Rのデータ量を位置保存すれば装置Bがパンパンになることを防げる。

バッファサイズの計算

上記の条件で、T秒間データを転送すると、バッファサイズはT * (S - R)必要になる。

仮想記憶システムのページング方式

主記憶

CPUが直接書き込みができるメインメモリの事。

仮想記憶

主記憶上にある実記憶領域の1部を必要に応じてハードディスクなどに退避させることで、見かけ上、物理的な容量より大きな主記憶領域を利用できるようにする仕組み。

ページング方式

仮想記憶システムにおいて、主記憶からハードディスク上にデータを退避させる時に、ページと呼ばれる一定の大きさの区画に分割して、ページ単位で内容を管理する方式。

主記憶の容量がパンパンになってきたら、使っていないページをハードディスクに退避させて、新しい容量を確保する。そのページを使いたくなったらハードディスクから取り出し、また新たなページをハードディスク退避させる。これによって実容量より大きな容量を使うことができる。

RAID (Redundant Array of Inexpensive Disks)

RAIDとは

RAIDとは、複数の磁気ディスクを並列に接続して、信頼性の向上やアクセスの拘束を図る手法。 RAIDには複数の種類がある。

RAID 0

RAID 0とは、データを複数のディスクに細分化して書き込み、アクセスを高速化する方式。(ストライピング)

RAID 1

RAID 1とは、データを複数のディスクに2重に書き込む方式。(ミラーリング)

RAID 5

RAID 5とは、データとパリティデータを複数のディスクに分散して書き込む方式。

パリティとは

パリティとはデータの一部が破損した場合に、復元するためのコード。RAID 5RAID 0と同様にデータを分散させて保存している。つまり同じデータは複数のディスクに保存されていない。RAID 0の場合は、あるディスクが破損した場合は、そのディスクに保存されたデータは復元することはできないが、RAID 5の場合は、パリティと残りのデータを元に破損したデータを復元することができる。

キャッシュメモリの書き込み方式

キャッシュメモリの書き込み方式

キャッシュメモリへの書き込み方式には、ライトスルー方式ライトバック方式がある.

ライトスルー方式

プロセッサがメモリにデータを書き込む際、キャッシュと主記憶に同時に書き込む方式。 書き込み処理は高速化できない。

メリットとしては、キャッシュと主記憶の一貫性を保つことができる。

ライトバック方式

書き込みデータをキャッシュに一旦加え、あとでまとめて主記憶に書き込む。 メリットとして、主記憶へのアクセス頻度が減るので、書き込み時のメモリアクセスが高速化できる。

MIPS計算

MIPS計算

MIPSとは、プロセッサが1秒間に実行する命令数を百万単位(106)で表したもの。

問題

動作クロック周波数が700MHzのCPUで、目入れ実行に必要なクロック数及び、その命令の出現率が表に示す値である場合、このCPUの性能は約何MIPS

命令の種別 命令実行に必要なクロック数 出現率(%)
レジスタ間演算 4 30
メモリ・レジス間演算 8 60
無条件分岐 10 10

クロック(クロック周波数)とは

CPUが命令を処理する時のテンポのようなもの。クロック周波数が高ければ高いほど、一度に多くこのことができる。つまり性能が良いことになる。 今回の問題では、クロック周波数が700MHzのCPUなので、1秒間に700 * 106回クロックが打たれることになる。言い換えると1回のクロックは1/700*106秒で発生することになる。

表を見てみると、レジスタ間演算という命令を実行するのに必要なクロック数は4つ。これが30%の確率で行われる。今回は3つの命令が存在するので、このCPUでの命令実行に必要なクロック数の平均を出してみる。

命令実行に必要なクロック数の平均 = 4 * 0.3 + 8 * 0.6 + 10 * 0.1 = 7 クロック

今回の問題で問われていることは、このCPUが1秒間で何回の命令を実行できるかである。1回の命令で平均7クロック発生するので、クロック数が700MHzのCPUでは、

MIPS = 700 * 106 / 7 = 100 * 106 = 100MIPS

となる。