基本情報技術者を初めて勉強した。

####n進数
**種類**
**・１０進数　１〜９の数字を使って表す。
・２進数　１、０を使って表す。
・８進数　１〜７を使って表す。
・１６進数　０〜９、A~Fを使って表す。**

・進数には**基数**という概念があり、基本となる数のこと。　
・重みは**n^n-1**で表される。

**基数変換**
***別の基数表現に変換できる。***
***計算方法がある。***
詳しくは後で見る。

####2進数の計算と数値表現
**２進数の足し算、引き算**
コンピュータは足し算しかできない。後の計算法は工夫して行っている。
・１＋１で繰り上がある。
・先頭の１ビット（桁）で正負の符号を分けられる。
　・０で正
　・１で負
・補数という表現がある。

**シフト演算と、２進数のかけ算わり算**
***シフト演算***
２進数を表すビット列を左、右にいずれかにずらす操作
論理シフト、算術シフトがある。

**小数点を含む数のあらわし方**
***・固定小数点数　整数を表す。
・浮動小数点数　実数（小数を表す）　***

**誤差**
実際の数値と、コンピュータの数値内部で表現できる数値との間に生じたズレ
どんな時にどんな誤差が生じるか？
・コンピュータの扱える最大値、最小値を超える時　***けたあふれ誤差***が生じる
・絶対値の大きな値と絶対値の小さいな値の加減算の時絶対値の小さな値が計算結果に反映されない時　***情報落ち***が生じる
・完了まで待たないで打ち切る時　***打ち切り誤差***が生じる
・絶対値がほぼ等しい数値同士の差を求めた時　***けた落ち***が生じる
・表現できる桁数を超えた時　***丸め誤差***生じる
無限小数　割り切れなくなる小数


###コンピュータの回路を知る
AND,OR,NOTの演算を組み合わせて複雑な制御が可能となる。
リレーとは電子部品の名前
***論理演算とベン図***
・ベン図　集合をあらわす図
・論理積（AND）　２つの条件の両方合致
・論理和（OR)　２つの条件のいずれか合致
・否定（NOT)　合致しないものを”真”と見なす
***論理回路と基本回路***
・論理積回路(AND回路）　入力がどちらも『１』の時　『１』を出力する。　A ・ B ＝ Y
・論理和回路（OR回路）　入力のどちらか『１』の時　『１』を出力する。　A + B = Y       　　　　　　　　 _
・否定回路（NOT回路）　入力が『０』の時『１』を出力する。　入力が『１』の時『０』を出力する。　 A = Y
***基本回路を組み合わせ論理回路***
                     　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　 _____
・否定論理積回路（NAND回路）　ANDとNOTの組み合わせた論理回路　A ・ B = Y　
                                              　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　＿＿＿
・否定論理和回路（NOR回路）　ORとNOTの組み合わせた論理回路　A ＋ B = Y
・排他的論理和回路（EOR回路　また　XOR回路）　
　※図は参考書を見る。

***半加算器と全加算器***
２進数の足し算の計算処理を行う２つの仕組みがある。
半加算器　一桁の２つの入力から合計と繰り上げを出力する。
全加算器　二桁以上だと必要。繰り上がりの値を半加算器で足す。　半加算器２つとOR回路が合体したもの

***ビット操作とマスクパターン***
ビット操作　演算をやるときにビットを反転、特定のビットを取り出すなどを行うこと。
ビットを反転　EOR・XORを用いる。０から１へ　１から０へ
マスクパターン　ビットを反転させたい位置に１を入れたビット列
特定のビットを取り出す　ANDを用いる。

###ディジタルデータのあらわし方
***ビットとバイトとその他の単位***
1バイト＝８ビット　正負合わせて２５６通りの表現ができる。
補助単位　キロ、ギガ、メガ、テラ、ミリ、マイクロ、ナノ、ピコ　ことをいう。

***文字の表現方法***
文字コード　
７ビット　データの誤りを検査用の１ビットで文字をあらわす。
文字のコードの種類
・ACSII
・EBCDIC
・シフトJISコード
・EUC
・Unicode

***画像など、マルチメディアデータの表現方法***
画像や音声はディジタルデータへ変換することで数値であらわせる。
・***画像データ***　ドット（点）であらわす。
　***ビット数が多いほど高画質になる。***
・***音声データ***　単位時間ごとに区切りを作る　***サンプリング***して***量子化***で数値であらわす。　
　***サンプリング周期が短く、量子化ビット数が多いと良くなる。***

***アナログデータのコンピュータ制御***
コンピュータは、センサによってアナログ情報を計測し、アクチュエータにより電気信号を物理動作へと変換します。
センサ（計測）　温度、照度、湿度などを計測ことができる。
アクチュエータ（物理動作）　モーター等が動く。
***シーケンス制御***　順序、条件に従って制御の各段階を逐次進めていく制御方式
***フィートバック制御***　定期的に計測し、目標値をのズレを反映させてズレを直そうとする制御方式

###CPU
***CPUとコンピュータの５大装置***
CPU　制御装置と演算装置のこと
***制御装置、演算装置（制御、演算）、記憶装置（記憶）、入力装置（マウス、キーボード）、出力装置（ディスプレイ、プリンタ）***
を５大装置という。

***ノイマン型コンピュータ***
・普段は補助記憶装置にあるが、実行時には、プログラムを***あらかじめ主記憶装置上に読み込んでおく***　プログラム内蔵方式
・プログラムの実行を***一つずつ取り出して、順番に実行***していく　逐次制御方式　
　以上の特徴を持つ。 ほとんどのコンピュータがこれである。
・主記憶装置には情報を収納する***アドレス（番地）***があり、簡単に取り出せる。

***CPUの命令実行手順とレジスタ***
・レジスタ　CPU内部にある記憶装置
・命令の手順
　１命令の取り出し（フェッチ）
　２命令の解読
　３対象データ（オペランド）読み出し
　４命令実行
オペランド　処理の対象となるデータ
***機械語のアドレス指定方式***
・機械語　コンピュータに理解できる言葉
・命令の構造は***オペランド部（何を）******、命令部（どうしろ）***が一緒なっている。
オペランド部には対象となるデータの***実行アドレス（有効アドレス）***があるとは限らない。
アドレスを求める方式を***アドレス修飾（アドレス指定）***という。
アドレス修飾の種類
・即値アドレス指定方式
・直接アドレス指定方式
・間接アドレス指定方式
・インデックス（指標）アドレス指定方式
・ベースアドレス指定方式
・相対アドレス指定方式
***CPUの性能指標***
CPUの性能は、クロック周波数、CPI、MIPSなどの指標地を用いて評価されます。
クロック周波数　１周期の時間が短いほど多く処理ができる。（性能が高い）
クロックサイクル時間　１周期に要する時間
CPI　１命令あたり何クロックサイクル必要か
MIPS　１秒間に実行出来る命令の数

命令ミックス　命令の手順の内の３番目を省いた手順
種類
・ギブソンミックス
・コマーシャルミックス

***CPUの高速化技術***
複数の命令を並行して実行させ、処理効率を高めることができます。　その手法として***パイプライン処理***がある。
パイプライン処理は、***分岐予測（次の命令がどれかを命令する。）***を行い***投機実行（分岐先の命令を実行開始する手法）***をする。
先読み分が無駄になることを***分岐ハザード***と呼びます。
***分岐予測が外れると無駄になるので、精度が高ければ高いほど良い。***

パイプライン処理の高速化を推し進める手法
・スーパーパイプライン
・スーパースカラ

CPUのアーキテクチャ（基本設計）
・CISC　高性能な命令
・RISC　単純な命令のみ
####メモリ
***メモリの分類***
RAM、ROMの２つの種類がある。
RAM　***DRAM(安価、主記憶装置、低速、リフレッシュ必要、集積高）
　　　SRAM（高価、キャッシュメモリ、高速、リフレッシュ不要、集積低）***
ROM　***・マスクROM　（読み出し専用　一般的のROMはこれを示す）
　　　・PROM　（ユーザーの手で書き換え
　　　　・EPROM　（紫外線で消去、書き換え）
　　　　・EEPROM　（電気的に消去、書き換え）
　　　　・フラッシュメモリ　（ブロック単位でデータを消去して書き換え）***
　　
***主記憶装置（メモリ）と高速化手法***
レジスタとメモリと磁気ディスクの間には速度差があり、そこの速度差を出来るだけ無くす工夫がある。
レジスタとメモリの間　***キャッシュメモリ***、メモリとハードディスク（磁気ディスク）の間　***ディスクキャッシュ***という手法がある。
キャッシュメモリ以外の高速化の工夫　***メモリインタープ***
主記憶装置の書き込み方式
***・ライトスルー方式
・ライトバック方式***
目的とするデータがキャッシュメモリに入っている確率　***ヒット率***
キャッシュメモリを利用したコンピュータの平均なアクセス時間***(実行アクセス時間）***

###ハートディスクとその他の補助記憶装置
***ハードディスクの構造と記録方法***
ハードディスクは高速回転している。　ディスクに磁気ヘッドを使って情報を読み書きします。
ディスク（プラッタ）という。　
表面に磁性体を塗布してあり、その最小範囲を***セクタ***、複数集めたぐるりと一周期分の領域を***トラック***と呼ぶ。
同心円状のトラックを複数まとめると、***シリンダ***という単位になる。
ハードディスクの記憶容量は***仕様書表から記憶量を算出***することができる。

ファイルの記録
OSはクラスタ単位で読み書きする。
複数のセクタを１ブロックと見做したものを***クラスタ***という。　クラスタを余らせると無駄な領域となる。

データへのアクセス時間
１シーク　アクセスアームを動かして目的のデータが書かれているトラック位置まで運ぶ
２サーチ　ディスクの回転に伴い、目的のデータが磁気ヘッドの位置まで来るのを待つ
３データ転送　セクタに書かれたデータを読み込む
１、２を***待ち時間***という。
１〜３までの時間を***アクセス時間***という。

***フラグメンーション***
ハードディスクの連続した空き容量が減り、ファイルが断片化した状態を***フラグメンテーション***という。
フラグメンテーションを解消すルために断片化したファイルのデータを並び直す作業を***デフラグメンテーション（デフラグ）***。

***RAIDはハードディスクの合体技***
複数のハードディスクを使って仮想的なハードディスクを構築、運営するのが***RAID***という。
RAIDの種類
・RAIDO（ストライピング）
・RAID1（ミラーリング）
・RAID5

***ハードディスク以外の補助記憶装置***
・光ディスク
・光磁気ディスク
・磁気テープ
・フラッシュメモリ
・SSD
####その他のハードウェア
***入力装置***
処理に必要なデータをコンピュータに与える機器
・キーボード
・マウス
・トラックパッド
・タッチパネル
・タブレット
・ジョイスティック

***ディスプレイ***
コンピュータからの出力を画面上に映し出す
ディスプレイが表示するきめ細やかさを***解像度***という。
コンピュータは、画面に表示させる内容を***VRAM（ビデオRAM）***という専用メモリに保持する。

***プリンタ***
処理結果をプリント（印刷）する装置
指標
印字品質を図る指標が解像度***dpi(dot per inch)***という。
１秒間に何時印字できるかを***CPS***という。
１分間に何ページ印字できるかを***PPM***という。

***入出力インターフェース***
コンピュータと様々な機器を繋ぐために定められた規格。
・パラレルインタフェーズ（並列）　IDE、SCSI
・シリアルインタフェーズ（直列）　USB、IEEE1394
・無線インターフェーズ（無線で通信）　IrDA,Bluetooth

###基本ソフトウェア
***OSの仕事***
コンピュータの基本動作を実現する「基本ソフトウェア」という。
３つに分けると
・制御プログラム
・言語処理プログラム
・サービスプログラム
ソフトウェアは、大きく分けて***「応用ソフトウェア」、「システムソフトウェア」***がある。
代表的なOS　Windows、macOS、MS-DOS、UNIX、Linux

OSの操作性の向上
画面にアイコンやボタンを表示して、これを視覚的に操作することで命令を伝える操作方式を***GUI***という。

API
自身が持つ各種機能を、アプリケーションから呼出せる仕組みを用意しています。このために設けられたインターフェースを***API***という。
####ジョブ管理
***ジョブ***　利用者からみた***仕事の単位***
***ジョブ管理***　バッチファイル（イラストの指示書に似た仕組み）を***たくさん登録して、自動実行***させていける仕組み
ジョブの管理の流れ
ジョブ管理は、カーネルがもつ機能の一つ***マスタスケジューラ***という管理プログラム。
マスタスケジューラはジョブの実行を***ジョブスケジューラ***に依頼。
ジョブスケジューラの実行の流れ（ジョブ管理の過程）
１リーダ（入力して登録）
２イニシエータ（優先度の高いジョブを持ってきてジョブステップ（ジョブステップ単位で実行する）に分ける）
３ターミネータ（ジョブの結果を登録）
４ライタ（ジョブ結果を出力）

スプーリング　
低速な装置とのデータのやり取りを、高速な磁気ディスクを介して行うことで処理効率を高める方法
####タスク管理
コンピュータから見た仕事の単位を***タスク***という。
タスクの状態遷移
実行可能状態READY　CPUの使用権を待っている状態
実行可能（RUN）　CPUの使用権が与えられた状態、実行中
待機状態（WAIT)　入出力状態が発生したのでその終了を待っている。
以上の３つの状態を繰り返しながらコンピュータはタスクを実行している。

ディスパッチャとタスクスケジューリング
実行可能状態（READY)のタスクにCPU使用権を割り当てる管理プログラムの役割を***ディスパッチャ***という。
どのタスクに使用権を割り当てるのかを決めることを***タスクスケジューリング***という。
タスクスケジューリングの種類
・到着順方式
・優先順（プライオリティ）方式
・ラウンドロビン方式

マルチプログラミング
CPUの利用効率を高めるために、複数のプログラミングを見かけ上同時に実行することは***マルチ（多重）プログラミング***という。

割り込み処理
実行中のタスクを中断して、別の処理に切り替え、そちらが終わるとまた元のタスクに復帰するという処理を***割り込み処理***という。

####実記憶管理
実記憶管理
限られた主記憶空間を効率よく使えるようプログラムに割り当てるものを***実記憶管理***という。
実記憶管理方式の種類
・固定区画方式
・可変区画方式
・オーバーレイ方式
・スワッピング方式　

可変区画方式で主記憶の空き容量が細切れになることを***フラグメンテーション***という。
細切れになった空き容量を連続下一つの領域にすることを***メモリコンパクション（ガーベコレクション）***という。

####再配置可能プログラムとプログラムの４つの性質
プログラムの４つの性質
・再配置可能（リロケータブル）　どこに配置されても実行できる
・再使用可能（リユーザブル）　再ロードすることなく、繰り返し実行できる
・再入可能（リエントラント）　複数のタスクから呼び出されても、お互いに干渉しない
・再帰的（リカーシブ）　実行中に自分自身（プログラム）を呼び出すことができる
####仮想記憶管理
主記憶や補助記憶の存在を隠蔽することで、広大なメモリ空間を自由に使えるものを***仮想記憶***という。
仮想記憶から実記憶（主記憶）にアドレスを変換するものを***動的アドレス変換機構***という。
動的アドレス変換機構があるために主記憶でけでなく***補助記憶も使う***ことができる。
仮装記憶の実装方式
・ページング方式　
ページテーブルという対応表を作り、***ページ(この方式のプログラムの単位）***を出し入れする。
実記憶と補助記憶がページインやページアウトを行い、仮想記憶を作り出す。
このやり取りを行いすぎると***スラッシング(処理効率が格段に下がる)***を起こす
・セグメント方式
ページの置き換えアルゴリズム
ページイン、ページアウトを行うアルゴリズムの方式
・FIFO方式
・LIFO方式
・LRU方式
・LFU方式

###ファイル管理
####ファイルとは文書のこと
データを一つの塊として記録するために使う入れ物を***ファイル***という。
ファイルの形式
・テキスト形式　
・CSV形式
・PDF
・画像用のファイル形式
・音声用のファイル形式
・動画用のファイル形式

画像や音声、動画などのマルチメディアデータは圧縮することができる。
しかし　***不可逆圧縮(元に戻らない)***する場合がある。
####文書をしまう場所がディレクトリ
ファイルをグループ化して整理したものを***ディレクトリ***という。
ディレクトリは階層構造になっている。
階層構造の一番上位に位置するディレクトリは***ルートディレクトリ***という。
自分が作業しているディレクトリを***カレントディレクトリ***という。
一つ上を親ディレクトリという。
下を子ディレクトリという。
####ファイルの場所を示す方法
ルートディレクトリから目的のディレクトリへの経路を***絶対パス***という。
カレントディレクトリから目的のディレクトリへの経路を***相対パス***という。

####汎用コンピュータにおけるファイル
ファイルは***レコード***の集合である。

ファイルへのアクセス方法
・順次アクセス　上から順にアクセス
・直接アクセス　任意のレコードに直接アクセス
・動的アクセス　上記２つを合わせたもの

ファイルの編成法
・順編成ファイル
・直接編成ファイル　
　直接アドレス方式　
　間接アドレス方式
・索引編成ファイル
・区分編成ファイル

###データベース
####DBMSと関係データベース
データベースの定義や操作、制御などの機能をもつミドルウェアを***データベース管理システム（DBMS)***という。
データベースで主流は関係型
関係データベースは表、行、列でできている。
表を***テーブル***
行を***レコード、組、タプル***
列を***フィールド、属性***と呼ぶ。

関係データベースは***リレーショナルデータベース（RDB)***と呼ぶ。

データのの表を操作する演算を***関係演算***という。　またこれにより新しい表を作り出す。
選択　行を取り出す
射影　列を取り出す
結合　票と表をくっつける
関係演算を行った一時的な票を***ビュー表***という。

データベースの構造や仕様を定義するものを***スキーマ***という。
外部スキーマ
概念スキーマ
内部スキーマ

####主キーと外部キー
表には一人一人識別できるように***主キー***というものがある。
また外部キー、複合キー（多くの条件）がある。

####正規化
データに矛盾や重複を生じさせないようにすることを***正規化***という。
非正規形の表から、繰り返しの部分を取り除いたのが第一次正規形という。
主キーが決まれば列の値が決まる。このような関係を***関数従属***という。
複合キーの一部が決まれば列の値が決まる。このような関係を***部分関数従属***という。

####SQLでデータベースを操作する
DBMSへ指示を伝える言語を***SQL***という。
***データ定義言語(DLL),データ操作言語（DML)***の２つによって構成される。
SELECT文
***SELECT 列名 FROM 表名　WHERE 条件***
***どの条件でどの表からどの列を取り出す***。という意味
　
####トランザクション管理と排他制御
データベースを守るための方法
一連の処理を一塊にする　***トランザクション***
***ACID特性***がある。
　　・中途半端に一部だけ実行させない。
　　・矛盾させない。
　　・順番に実行した場合の処理結果が一致

・障害が起きてもデータベースを消失しない。
　　他人がデータベースを勝手に読み書きを防止　***排他制御***
　　・共有ロック　他のユーザが読むことができない。
　　・専有ロック　他のユーザは読むことも、書くこともできない
　　また　お互いがロックし合うことで永遠にデータを見ることができないことを***デットロック***という。

SQL文を一つのプログラムにまとめ、データベース管理システムにあらかじめ保存することを***ストアドプロージャ***
####データベースの障害管理
データベースは代替品はない。なので***バックアップ***をとる。
頻度を決めて別のファイルに保管する。
しかし更新されるまで更新分のデータベースは補完されないので、
***ジャーナル***(ログファイル）に更新前のファイル（***更新前ジャーナル***）、更新後の状態（***更新後ジャーナル***）を逐次記録して、データベースの更新履歴を管理する。
障害が起こった場合はこれらのファイルを使って***ロールバック***,***ロールフォワー***などを障害回復処理を行い、復旧させる。

###理解していないところ
**・基数の意味　（２進数の時の２ことかな？）
・基数変換計算方法
・２進数の足し算、引き算、かけ算、割り算
・浮動・固定小数点数の表し方
・排他的論理和回路のどういう回路か？
・マスクパターンの意味
・特定のビットを取り出す
・CPUの命令手順の中身（詳細）
・パイプラインの構造
・カーネルの意味
・実記憶管理の詳細
・絶対パス、相対パスの表記法
・ファイルの編成法
・第二・三正規表現の意味
.SQLの詳細**

理解できるように頑張りたい。