「コンピュータ入門」の基礎技術
「コンピュータ入門」の基礎技術
「コンピュータ」の基礎理論※画像クリックで拡大表示(リンク)
- 情報表現とビットは、
情報の最小単位をビット(bit)といい、スイッチのON/OFF(0 or 1)の状態の組合せで表現している。
1bitは、2進数(Binary)の0と1で表現され、10進数(Decimal)は、0~9で表現し9を超えると桁上がりして10以上となる考えと同じように、2進数の場合は、0と1で表現しているため、10進数の2は桁上がりして、「10」となる。 8進数(Octal)は、3bitの0~7で表現され、16進数(HexaDecimal)は、4bitで桁上がりし、0~9,A~Fで表現される。 - 10進数と2進数、8進数、16進数の対応表現
10進数 2進数 8進数 16進数 0 0000 0 0 1 0001 1 1 2 0010 2 2 3 0011 3 3 4 0100 4 4 5 0101 5 5 6 0110 6 6 7 0111 7 7 8 1000 10 8 9 1001 11 9 10 1010 12 A 11 1011 13 B 12 1100 14 C 13 1101 15 D 14 1110 16 E 15 1111 17 F 16 10000 20 10 - 【2進数10進数変換表の参照】
- コンピュータは、全ての情報を「0と1」だけで表している2進数が使われていて、1bitの8個の単位をバイト(byte)と呼んでいて、Byte単位のコンピュータを「バイトマシン}とも呼んでいます。
- 2進数の負の表現
コンピュータにより異なり、左端のビットを符号(サイン付きの数値)として取り決めて、[1] 2の補数(ビットを反転:NOTして1を加算)による表現、[2] 1の補数(ビットを反転:NOT)による表現、[3] 絶対値に符号を付けた表現の3種類があり、2の補数表現が一般的。
2の補数表現で8bitのとき、「1」の負「-1」は、「11111111」となります。負「-2」は、「11111110」となります。
従って、8bitでの符号付き数値表現は、「-128~+127」(-27 ~ +27-1)の範囲となり、正の整数表現では、「0~255」(0 ~ 28-1)の範囲となります。 - 記憶容量などの情報の単位表現
※1Kを210 = 1,024で計算すると楽のため、「KiB」をキビバイトと呼んで区別する。 1MiB(メビバイト)=1,024KiB , 1GiB(ギビバイト)=1,024MiB , 1TiB(テビバイト)=1,024GiB
- 【2進数10進数変換表の参照】
- 文字の表現とコードは、
文字に対応付けた2進コードを文字コードと呼び、文字の英数字記号は、128文字以内のため7ビットで表現できます。異なるコンピュータ間で情報交換するためにANSIが制定したASCII(アスキー)コードがあり、8ビットを利用して、半角のカタカナを含めた日本のJIS化したコード(X0201)があります。
- 日本語は、漢字の水準1、2を含めた6,877文字を2バイトで表現したJIS漢字(JIS X0208)区・点コード、マイクロソフトのShift-JISコード、UNIX系の日本語EUCコードが利用されています。その後水準3、4追加となり、11,233文字の日本語(JIS X0213:2004)となっています。
- 最近は、世界中の文字を統合して1つの文字コードセットがつくられ、2~4バイトで表現するISO規格のUNICODEが主流となっています。
- UTF-16は、英数字が2バイト表現でありUTF-16BE(狭義のUNICODE)とUTF-16LE(上位ビットと下位ビットが反転)があり、先頭にBOMが付加される。それに対しUTF-8コードは、英数字が1バイト、漢字が3バイト表現でインターネットのWEBページでは、標準的に使われます。
- 論理データと論理演算は、
論理データとは、命題(判断を行うための条件を表現・記述したもの)に対する2つの論理値「真(true)と偽(false)」を表現したデータで、論理演算に用いられます。論理値「真と偽」を「1と0」に対応付けて表記や演算する方法をブール代数(Boolean Operation)と呼びます。
論理演算 真理値表 ベン図 説明 論理和(OR)
F=A+BA 0 0 1 1 B 0 1 0 1 F 0 1 1 1 A又はBのどちらか1であれば1を返す 論理積(AND)
F=A・BA 0 0 1 1 B 0 1 0 1 F 0 0 0 1 AとBのどちらとも1であれば1を返す 否定(NOT)
F=AA 0 1 F 1 0 Aの値を反転する 排他的論理和(XOR)
F=(A+B)・(A+B)A 0 0 1 1 B 0 1 0 1 F 0 1 1 0 AとBの値が異なるときに1を返す - データ構造の方法論
各種データを主記憶装置内に格納して処理する方法の比較表です。プログラム作成のアルゴリズム構築のベースとなる考え方です。
- フローチャート(流れ図)とは
処理手順やプログラムの演算手順やなどのアルゴリズムを分かりやすくするための図がフローチャートと呼ばれ、JIS規格化されています。以下に流れ図記号の種類や処理構造の書き方のまとめがあります。
- 基本的なアルゴリズム
「1から10までの値を加算して合計を表示する」アルゴリズムを考察してみましょう。
[1] 数式を考察すると、「合計=(開始数+終了数)/2 X(件数)」= ((1+10)/2)*(10-1+1) = 55 で良いが、[2]「1から10までの繰り返し」のアルゴリズムでは、以下のようになります。
- プログラムとプログラミング言語
プログラムは、コンピューターに処理をさせる場合の命令文で、プログラムを記述するために用意された命令の体系をプログラミング言語といい、プログラムを作成する作業はプログラミングと呼ばれます。
- プログラミング言語 … 特定のCPUの命令語そのものである機械語(マシン語)、機械語レベルの命令をシンボリックに表したアセンブリ言語、より人間の自然言語に近い表現で記述される高級言語などに分類でき、実行形態による分類では、ソースコードをそのつど解釈して実行するインタープリタ型言語と、コンパイルによってマシン語に変換して実行するコンパイラ型言語などに分けることができます。
- ランタイム … アプリケーションの開発・実行の両方の機能を備えたソフトウェアから、開発の機能を省き、実効の機能のみを取り出したプログラムのことです。
例えば、Microsoft VC++で作成されたアプリケーションを実行しようとすると『「Microsoft Visual C++ 2005」や「Microsoft Visual C++ 2008」のランタイムが入っていません』というエラーが表示され、コンパイラ言語に対する各種ランタイムをインストールして実行しておく必要があります。 - WEB用の言語 … マークアップ言語は、文章構造を定義することができる言語で要素と呼ばれるタグ(<と>で囲まれたもの)で文章内容の修飾や文書構造などを表現します。代表的なHTML(Hyper Text Markup Language)があり、特徴は「ハイパーテキスト」で、リンク先の指定でジャンプする機能が可能です。
スクリプト言語は、処理の手順を記述して、HTMLの表示内容を変更したり、入力内容により処理制御するなど、プログラム記述して実行させる言語ものをいい、サーバー側で実行するPerl(Practical Extraction and Report Language)やPHP(Htpertext Preprocessor)が代表的です。スクリプト言語は、ソースファイルを解釈するインタープリタ言語が一般的です。
また、HTMLと連携してブラウザ内(クライアント端末側)で実行する「Javascript」があります。
「コンピュータシステム」の仕組み
- コンピュータシステムの5大装置は、
人間の脳に当たる「CPU(Central Processing Unit)」があり、演算する機能や手足を制御する神経に当たるもの、加えて記憶する機能、手足・目・耳・感覚などの入出力機能の5大装置から構成されます。入力装置からのデータをCPUで編集・加工して、その結果を出力装置へ出力する処理の流れ(システム)です。
現在のコンピュータは、
プログラムもデータとして主記憶装置に記憶させておき、CPUに順番に読み込ませて実行させる「プログラム内蔵方式」で、数学者「John von Neumann」が考察したのでそのシステムアーキテクチャを「ノイマン型」と呼びます。 - CPUとIOバス構造のデータ送受信
パソコンのCPUは、一般的にIntelなどのマイクロプロセッサ(MPU)を利用しており、広域道路のようなバス(bus)をデータとプログラムが通い合い(流れて)、アドレス指定でメモリや入出力装置とのやり取り(データの送受信)を実現していて、バス上に流れる幅で32bit/64bit BUSと呼んでいます。
入出力装置との接続インターフェースは、ハードディスクの「シリアルATA」など各装置ごとに一般化・共通化されています。
- パソコンのマザーボード構成とパソコン起動
MPU、主記憶と入出力装置をバスで接続するボードをマザーボードと呼び、ボード上に回線を形成するPCB(Printed Circuit Board)となっています。
- MPUの性能は、MPU内部のバス幅とクロック周波数で表されます。マザーボード上にあるパルス信号回路から発生する1周期(クロック周波数)のタイミングに合わせて、MPUの命令実行が行われます。クロック周波数は、Hz(ヘルツ)で表現され、現在のパソコンでは、1.5GHz~3.5GHzクラスが中心になっています。
- パソコンの起動手順 … パソコンの[1]電源ONにすると、[2]BIOSのROMに格納されたプログラムが起動して、[3]ディスクからローダを読み込み、[4]ローダがOSを読み込み、[5]OSによる初期化ルーチンを実行する手順です。
- メモリー・デバイスの種類とキャッシュ機能
パソコンの主記憶装置は、DRAM(Dynamic Random Access Memory)でデータの読み書き可能(一般的に電源を切ると記憶内容が消えてします性質:揮発性)を利用します。ROM(Read Only Memory)がデータの読みのみ可能で、マスクROMやPROMに分類されます。USBメモリは、「フラッシュメモリ」の一種です。
「キャッシュ機能」は、MPU内部のレジスタとキャッシュメモリ、主記憶装置とのメモリ・アクセスで実行されて高速化を図っています。また増設メモリには、MPUのアクセス速度との関係で「DDR3 SDRAM」などの選択が必要です。
- 補助記憶装置の磁気ディスク装置は、
アクセススピードに大きく関係するため、ディスク装置の構造(アームが回転軸に向かう動作「シーク」とディスク回転待ち、シリンダ)を理解して、アクセス頻度の高いデータは、シークが短いディスク外側に配置することを配慮する必要があります。
物理的にフォーマット化することは、トラック、セクタに分割することです。フォーマット中に読み書きの不安定なところやエラーがあるところをスキップしてセクタの連続状態を形成します。プログラムなどでは、「ブロック化とレコード」を指定します。アクセスタイム=シーク+回転待ち+データ転送の時間でスピードが決まります。
- 記憶装置と入出力装置のインターフェースは、
一般・共通化が図れて、各メーカの装置を接続することが可能になっております。各装置を接続する上で「転送スピードとインターフェース」の認識が必要で最適な装置を選択する必要があります。以下にインターフェース一覧があります。
- オペレーティング・システムの役割
オペレーティングシステム:OS(Operating System)は、入出力機能やディスクやメモリ管理など、多くのアプリケーションソフトから共通して利用される基本的な機能を提供し、コンピュータシステムを管理する基本ソフトウェアです。
OSの目的・役割
- ハードウェアの抽象化 … ハードウェアの統一的で抽象化された利用方法を提供することで、アプリケーションソフトウェアの開発を容易にする。
- リソースの管理 … 複数のアプリケーションソフトウェアを同時に利用する際に、互いに独立して動作できるように資源を管理する。(プロセッサの時分割、メモリ領域分割、入出力装置の競合調整等)
- コンピュータ利用効率の向上 … 複数のタスクを同時に実行する際に、資源割り当ての順番や処理の割り当て時間を工夫することで、全体のスループットを向上させる。(スケジューリング)
- OSの機能
- プログラム実行 … OSはアプリケーションプログラムとハードウェアの間のインタフェース(API)を提供する。OSのカーネルがプロセス生成をしてアプリケーションプログラムを実行し、OSに組み込まれた規則や手続きに従ってハードウェアとやり取りする。
- マルチタスク … プロセス管理は複数のプロセスを実行するためにOSが行う処理で、一度に複数のプロセスを動作させることができる。マルチタスクは、1つだけのプロセッサをI/Oの割り込み時にプロセスからプロセスへ切り替えを行うことで実現される。
※プログラムAが優先状態で、プログラムAが入出力(プリンタ出力やデータ読み書き等)を行うために(割込み発生)CPUが空いている間に、プログラムBがCPUを使って処理を進めることで、短い時間で複数プログラムの処理を終了することが可能。 - 仮想メモリ … メモリ管理は、コンピュータのメモリは階層構造になっていて、最も高速なレジスタから、キャッシュメモリ、RAM、最も低速なディスク装置があり、このようなメモリを管理するもので、利用可能な部分、割り当てと解放、主記憶と二次記憶との間でのスワップなどを制御する。
仮想メモリは、相対的にアクセス頻度が低いメモリを一時的にディスクなどの二次記憶装置に退避させ、主記憶を他のプログラムのために空けることができる機能(スワッピング)で、限られたメモリを複数のプログラムで使用可能にする。 - ファイルシステム … ディレクトリあるいはフォルダと呼ばれる構造を使い、ファイルという形でディスクにデータを格納する。(詳細は、「拡張子と絶対パス・相対パス操作」を参照)
- ネットワーク … 異なるOS間でネットワークを形成し、計算能力、ファイル、プリンターなどのリソースを共有でき、あるコンピュータのOSが遠隔のコンピュータにあるリソースをあたかも自身に直接接続されているかのように透過的に利用できる。(詳細は、「ネットワーク構成とコマンド操作」を参照)
- ユーザインタフェース … キャラクタユーザインタフェース(CUI)と視覚的なグラフィカルユーザインタフェース(GUI)に大別され、通常はシェルなどのプログラムが実装しているが、人間とのやりとりが必要なプログラムは基本的にユーザインタフェースを備えている。(詳細は、「Windows OSコマンド操作」を参照)
- デバイスドライバ … ハードウェアとの通信を行うインタフェースを持ち、ハードウェアの接続される何らかの通信サブシステムやバスを経由して通信を行う。コマンドをハードウェアに送り、データの送受信を行うハードウェアに強く依存するプログラムである。