bit・回線


[目次の表示]

 ビット
コンピュータの内部は全てビット単位です。

そこで今まで、の経験を元にビットの関係を紹介します。


●パリティビット
・16ビットで4×4のパリティビット(検査ビット)を付加して何ビットの誤りビットが訂正できるか。
答えは、1ビットです。

水平・垂直パリティビットでは1ビットなら訂正可能です。
水平と垂直の交点で誤りビットを特定できるので。

①データのビット数+検査ビット=奇数ならば、奇数パリティビット
②データのビット数+検査ビット=偶数ならば、偶数パリティビット

ハミング符号
情報ビットに検査ビットを付加する事で、2ビットまでの誤りを検出し、1ビットの誤りを自動訂正できる方式です。
例)ECCメモリやRAID2の誤り訂正符号として使用されている。

ハフマン符号

 情報の出現率が高いデータには、短い符号(ビット)、情報の出現率が低いデータには、
 長い符号(ビット)を与える。

●CRC:CRC符号自体は誤り検出のみの機能しかなくビットの誤り訂正はできません。

●サンプリング周波数
1秒間に取得するデータ回数。
例)1KHZとは1,000回/秒のデータを取得する。

●命令フェッチ(命令の取出し):命令レジスタに格納する。

●命令の解読(デコード):レジスタ内の命令を解読する。

●命令オペランド(読出し):計算されたアドレスを基に主記憶からデータを取出す。

●割込
・外部割込:CPU外部からの割込。ハードウェア強制割込(マシンチェック割込)
・内部割込:CPU内部からの割込。ユーザモード→スーパーバイザーモード、プログラム割込、ページフォルト(存在しないページへの割込)

●スーパスカラ:どの命令を同時に実行するかは、ハードウェアで動的に制御する。命令を並列実行するためのアーキテクチャです。複数のパイプラインを用いて処理の高速化を図る。

●スーパパイプライン:パイプライン(CPUが実行する命令を複数のステージに細分化し処理を高速にしたもの)をさらに細分化する事で高速化を図る。

プロセッサーの処理方式
・MIMD:複数の命令と対するデータを、独立している複数のプロセッサーに割り付けて並列処理する方式。
・SIMD:1つの命令で複数のデータを処理する方法。
・CISC:複雑で多機能な命令セットでコンピュータを構成する設計方法。
・RISC:CPUに与える命令を短く固定長化し、専用の論理回路で高速に実行できるようにした命令セットでコンピュータを構成する設計方法。
・VLIW(Very Long Instruction Word):複数の処理を1つの非常に長い命令に纏めて並列実行する高速化技法です。コンパイルの段階で並列実行が可能な複数の動作をまとめる。

●量子ビット:1ビットに1と0を重ねて持つ。同時に現す。例)10ビットは2の10乗=1,024回計算したが量子ビットになると1度の計算ですむ。1,024通りを1つづつ表示する事に対し1,024通りを同時に現す。後者の方が計算速度は桁違い。
 x86:32bit
 x64:64bit
 ARM:Linux(ARMv7まで)
 ARM64:Linux(ARMv8以降)


●IPv4とIPv6の違い
 IPv4:8ビット毎に区切り4で表現。(32ビット、実際には10進数表示です。)
 例1)12345678。12345678.12345678.12345678。扱えるIPアドレスの数:2^32(約43億個)
 IPv6:16ビット(16進数で4ビット表現したもの)の束が8つ。(128ビット)
 例)a123:1234:5678:bdce:9abc:1234:2234:5678。扱えるIPアドレスの数:2^128(訳340潤(10^36を表す単位です。)個:340兆個の1兆倍の1兆倍)
 表記方法は「:」で区切りもし同じ16進数が続く場合は、1度までなら「::」で指定できる。
 IPv6はIPv4の計算に比べ理論上4倍の計算量。
 ・16ビットの先頭が0の時は0は省略できる。

●IPアドレスは、32ビット(8ビット×4つ区切り)
 ・それぞれを10進数で表現し「.」で区切る。
 ・下ネットワーク部と、ホスト部で別れル。
 ・サブネットマスクとの組み合わせでネットワーク部の長さを調整できる。

●マルチキャストとブロードキャスト
 マルチキャスト:一つの送信元から複数の宛て先(宛先を設定できる。)に同じデータを送信する通信です。IPアドレスの最初が"1110"(クラスD)で始まる。ネットワーク内の一部の機器に送る。
 ブロードキャスト:同報通信(ネットワーク上の特定の範囲のすべての機器(宛先を紐づけることができない。))ホスト部のビットにすべて"1"が設定されている。ネットワーク内のすべての機器に送る。

●MACアドレス:00:00:00:00:00:00
                         |この2桁は8ビットを16進数表示したもの|
 ・先頭の24ビットは製造メーカ番号
 ・後ろの24ビットは製造番号

 123.456.8.9/24
 黄色部分がネットワーク部を現す。
上記とは123.456.8.9/255.255.255.0と同じ意味です。
ARP(Adress Resolution Protocol)
 IPアドレスからMACアドレスの取得に用いるプロトコル。

RARP
 MACアドレスからIPアドレスの取得に用いるプロトコル。

●IPスプーフィング:送信元IPアドレスを偽造して、IPパケットのなりすましを行う事。

●IPマルチキャスト:ネットワーク内の特定された複数のホストにデータを送信する。
これに対し「ブロードキャスト」は、ネットワーク内の全部のホストにデータを送る。

●FTTH:光回線の配線方式。(光ケーブルが自宅のONU(光回線終端装置)までつながっている配線方式です。)

●FTTB:基地局から建物まで光ケーブルでつながり各部屋へは、他の回線で配線する方式。HTTHと比較すると通信速度は遅くなる。例)集合住宅など

●FTTC:建物の手前まで光ケーブルが引かれ、そこから先は他の回線が配線される。FTTBより手前の位置までしか光ケーブルが来ていないイメージ。HTTH・HTTBと比較し通信速度は遅くなる。

●FTTN:屋外に配置された分配ノードまで光ケーブルでつなぎ屋内は他の回線で引き込む配線方式です。FTTC同様通信速度は遅くなる。例)ケーブルTV等

*通信速度は、光ケーブルの長さに比例している。

リスト:同じ種類のデータが、1列に並んだ列のことです。
・配列:領域が予め必要となり、要素数が実際より少ない場合は、領域のムダが発生する。
また要素が格納されているアドレスを簡単に計算できが、挿入・削除は1つづつシフトさせたりするため効率が悪いです。
・ポインタ:領域のムダは発生しません。しかし要素の位置が固定出ないので参照はできませんが、挿入・削除に要する時間は要素数に関係なく一定です。
●О記法
・О(オーダー)記法:プログラムの計算にかかる時間とデータ量の関係。
代表的なО記法の例を記載します。
О(1):データ量が増えても常に1回しか計算しない。
О(n):計算量はデータ量に比例します。
О(logN):データ量に対し常に計算量が半分となるプログラムです。
О(n^2):計算量は、外側のループ*内側のループとなり避けたいプログラミングです。
●整列法
・ヒープソート:木構造を利用して並び替えを行う整列法。

【参考】ヒープソートとは(引用)

・バブルソート(隣接交換法):隣り合う要素を比較して並べ替える整列法。
・クイックソート:中間的な基準値を決め、大きい区分と小さい区分に分けそれをくり返し実施し並べ替える整列法。(分割統治方の考え方に基づいた整列法です。)
・シェルソート:ある間隔おきに取出した要素から成る部分をそれぞれ整列し、さらに間隔を詰め同じ操作を繰り返し並べる整列法。
・マージソート:要素が1に成るまで②分割をくり返し、並べ替えながら戻してゆく整列法です。(分割統治方の考え方に基づいた整列法です。)

【参考】マージソートとは(引用)

・選択ソート:未整列の要素の中から最小値を選択し、先頭要素と入れ替える作業を繰り返し整列するアルゴリズムです。
・挿入ソート:未整列の要素の中から1つずつ取出し、整列部分の適切な位置に挿入することを繰り返し整列するアルゴリズムです。

●記憶クラス指定子
・aut(自動変数):初期値は、領域が確保された都度行われる。
・static(静的変数):初期値は、プログラム実行時に1度だけ行われる。
LRU(least Recently Used)アルゴリズム:使用後の経過時間が最長のページを、置き換え対象とするアルゴリズムです。
●戻り値
・値呼出し(call by value):メインプログラムからサブプログラムに値を渡すだけ。
・参照呼出し(call by reference):メインプログラムから渡された値をサブプログラムで更新しメインプログラムに戻す。
●ICMPエコー要求:pingと呼ばれるパケット確認用コマンドです。
●コンパイラ(ソースP/G→機械語に変換する。)がコード生成→目的プログラム作成するまでの流れ
ソースコード→「字句解析」→「構文解析」→「意味解析」→「最適化」→目的プログラム
●領域
スタック領域:サブルーチンの戻り番地の格納に使用され、LIFO制御でプッシュ&ポップの操作を行う。
ヒープ領域:割り当て解放順序に関係ないデータの格納に利用される。
・プロファイラ:プログラムを実際に動作させ、その動作状況を解析する為のツール。(実行フローや関数毎の実行回数、実行時間など詳細確認が可能です。)
●FPGA:製品出荷後に利用者がハードウェア記述言語を用いて、現場でロジックを書き換えることができるプログラマブルな集積回路です。
●ダイオード:電流を一方向にしか流さない整流作用を持ちます。
●デマンドページング:アクセスがあったとき、要求のあったページのみを主記憶に読み込む。(実際のOSではこの方法が基本的に使われている。)
●プリページング:ページにアクセスがある前に、事前に参照されそうなページを主記憶に読み込んでおくこと。
●スラッシング:処理の多重度を増やしたところ、ページイン・ページアウトが多発し応答が遅くなる現象。
●プログラム言語(Web)
・JavaScript:動的型付けのプログラム言語。オブジェクト指向のスクリプト言語です。
・JSON(JavaScript Object Notation)ジェイソン:名前と値との集まりと値の順序付きリストの2つの構造に基づいてオブジェクトを表現するデータ使用。
・xml(eXlensible Markup Language):ユーザ独自のタグで文書構造を記述するマークアップ言語です。
・Java:サン・マイクロシステムズ社が開発。マルチプラットフォーム(JVM:JAVA仮想マシン上で動く)が特徴。それぞれのOS環境に対応して翻訳してくれる。
・PHP:オープンソースの汎用スクリプト言語です。
・Scala(スカラ):オブジェクト指向をベースに関数型言語の機能が使えるプログラム言語。Javaの膨大なライブラリが使えるが静的型付け言語です。
・Go:Googleが開発。YouTubeの開発言語にもなっている。
・R(アール):統計解析用に開発されたプログラム言語です。機械学習でも利用され動的型付け言語です。
・Dart:Googleが開発。スマホアプリの開発。Dart2と同時にFlutter(スマホアプリ開発用のフレームワーク)が発表された。
・Rust:Web・OS開発。
Ruby:SNSの開発。スクリプト言語。
Perl(パール、Practical Extraction and Report Language):オープンソースのスクリプト言語です。インタプリタ型。
・Kotlin(コトリン):Androidアプリ開発。Googleが開発。JVM言語。(OS環境に依存しなくどんな環境でも実行できる。)
・Swift:iPhone・Macアプリ開発。Apple社が発表。処理速度はPythonの8.4倍
・TypeScript:静的型付けのプログラム言語。Microsoftが開発、オープンソース。
・VBScript:MicrosoftがVisualBasicをもとに、開発したスクリプト言語です。VisualBasicは静的型付けのプログラム言語ですが、VBScriptは動的型付けのプログラム言語です。
・ECMAScript:JavaScriptを標準化したもの。動的型付けのプログラム言語。
・Python:汎用的なプログラム言語。C言語に比べ実行速度やメモリ使用量は劣る。Fortranのような高速な科学技術計算は得意ではない。スクリプト言語でインタプリタ型です。AIに強い。
・COBOL:事務処理や会計処理に適したプログラム言語。大きく4つの構成からなります、①「見出し部(IDENTIFICATION DIVISION)」から始まり、②「環境部(ENVIRONMENT DIVISION.)」、③「データ部(DATA DIVISION)」④「手続き部(PROCEDURE DIVISION)」と処理を順に記述していきます。見出し部以外は省略することが可能で、部(DIVISION)の中にはいくつかの節(SECTION)や段落があります。
・C++:C言語(手続き型言語、汎用性が高い)を拡張したプログラミング言語。C言語にオブジェクト指向(ものを組み立てるようにプログラミングすること)を加えたもの。
C#:C++とJavaを合わせたような言語で、Macrosoft社が開発。


コメント