データdata=数値情報を加工する電子計算機=コンピュータに関する基本事項についてまとめる。
コンピュータを構成する基本的な5つの構成要素は、入力(input)、出力(output)、記憶(memory)、情報経路(datapath)、制御(control)であり、特に情報経路と制御を合わせてプロセッサ(processor)と呼ぶ。これらの構成要素は採用するシステムソフトウェアやテクノロジーに左右されない普遍的な構成要素である。
SY:コンピュータはクッキングで例えると理解しやすいかもしれない。
コンピュータ | ↔ | クッキング |
---|---|---|
データ | 素材 | |
入力 | 素材調達 | |
プロセッサ | 台所 | |
制御/演算 | レシピ/調理 | |
記憶 | 取り置き | |
出力 | 料理 |
情報経路のうちコンピュータを構成する要素やモジュールの間での情報経路を特にインターフェースと呼ぶ。インターフェースを搭載する機器から見た場合、インターフェースとはその機器が外部と情報をやり取りするための渉外装置、仲介機器、橋渡し装置を指す。特に情報経路であることを強調する場合にはバスと呼ばれる。
名前 | 解説 | 補足 |
---|---|---|
ローカルバス | CPUのピンと各種バッファとを接続する。 | |
アドレスバス | アドレスバッファとメモリやI/Oポートを接続しAピンの情報を伝える。 | |
データバス | データバッファとメモリやI/Oポートを接続しDピンの情報を伝える。 | |
I/Oポート | CPUと入出力機器との情報を転送する際のインターフェース。 | マザーボードのチップセット上に置かれている。 |
シリアルポート | 端末と周辺機器or端末同士を接続するためのシリアル通信を行うインタフェース。 |
キーボードなどの文字入力装置によってユーザがコンピュータを操作するためのインターフェース。シェル=コンソールなどによって実装される。
マウスやタッチパネルなどのポインティングデバイスによる入力装置を用いてユーザがコンピュータを操作するインターフェース。コンピュータグラフィックスによって実装される。
コンピュータ構成要素を物理的に実現(implement)したコンピュータ構成物をハードウェアと呼ぶ。Windowsなどのデスクトップパソコンであればクラムシェル (clamshell=デスクトップを覆っている、側面の蝶番で観音開きする大きな金属)を開けて確認することが出来る。
名前 | 解説 | 補足 |
---|---|---|
主要/1次機器 | チップやプロセッサなど電子演算の要となる機器の総称。 | マザーボードに搭載される。 |
補助/2次機器 | 入出力機器や磁気ディスクなど電子演算を補助する機器の総称。 | マザーボードに搭載されない。 |
コンピュータにおいて最も重要なチップやプロセッサなどのパッケージを総称して1次機器と呼ぶ。
絶縁体であるプラスチックでできた基板に集積回路=チップセットが搭載されたものをマザーボードと呼ぶ。1次機器がモジュールとして接続される。
名前 | 解説 | 例、補足 |
---|---|---|
チップ | 集積回路とも呼ばれる。 | |
プロセッサ | 中央演算処理装置。 | Intel社:Pentium、RENESAS社:SuperH[外部リンク] |
メモリ | 記憶装置。 | 特にCPU内/外にレジスタ/バッファと呼ばれる特殊なメモリがある。 |
チャネル | マザーボード渉外装置 | |
拡張カード | カード型の回路を追加で挿すことで新しい機能を搭載できる。 | ビデオカード=グラフィックボード、ネットワークカード=LANカード、SCSIカードなど。 |
4ミリ角のシリコン上に何十万何百万のトランジスタ、ダイオード、抵抗、コンデンサを配列し組み合わせた電子回路を集積回路(Integrated Circuit=IC)=チップ(chip)という。近年は1チップに載せられるトランジスタ数が大規模になり、そのような集積回路は性能ごとに、LSI(=Large Scale Integrated circuit)、VLSI(=Very Large Scale IC)、ULSI(=Ultra Large Scale IC)などと呼ばれる。
18-24ヶ月毎に集積回路に載せられるトランジスタ数は倍増する、というICの集積度に関する成長予測。1960年代にIntel社を設立したメンバーの1人であるGordon Mooreが予想を行った。
演算と制御を司る中央演算処理装置。演算部は算術などの演算処理を行う部分を指し、制御部はプログラムの命令に従って演算と主メモリと入出力装置に指示をする部分を指す。
制御部 | 役割 | 補足 |
---|---|---|
命令解読器=デコーダ | 機械命令文を解読する。 | (instruction) decoder |
レジスタ | 主記憶から取ってきた機械命令文を記憶する。 | 演算部 | 役割 |
ALU | 実際に演算を行う装置。 |
1つのピンが1bit情報に対応する。
名前 | 役割 | 例、補足 |
---|---|---|
アドレスピン | アドレスバスを通して主メモリに信号を送りそのアドレスの位置を指定する。 | |
データピン | データバスを通して主メモリに信号を送りデータの読み書きを行う。 | |
割り込み受信ピン | 割り込み信号を受信する。 |
CPUの動作サイクルは機械命令文を1文実行することである。動作サイクルは命令文を取ってくるフェッチサイクルと命令文を実行する実行サイクルに分けられる。
名前 | 役割 | |
---|---|---|
フェッチサイクル | 主記憶に格納された機械命令文を取ってくる。 | |
実行サイクル | とってきた機械命令文を解読し実行する。 |
プロセッサ内の特殊な記憶領域。電子回路でできたそろばん=「電子そろばん」。各レジスタのデータ長は32bit/64bitからなり、その本数は各コンピュータでしばしば32本/64本である。コンピュータのアーキテクチャを実装(implement)する。
名前 | 役割 | 例、補足 |
---|---|---|
命令レジスタ=コードレジスタInstruction Register=Code Register | 取り出した命令を保持する。実行中の命令を保持する命令部と次に実行する命令のアドレスを保持するアドレス部がある。 | |
命令ポインタ=プログラムカウンタInstruction Pointer=Program Counter | 実行中のプログラムの位置(⇆命令レジスタの先頭の命令)を指すポインタ。次に実行する命令の(オフセット)アドレスを格納する。 | |
ベースポインタ=フレームポインタ | スタックフレームの局所変数を指す。 | |
スタックポインタ | スタックセグメントの先頭アドレスを指す。 | |
コントロールレジスタ | システムの動作を制御する。 |
名前 | 役割 | 例、補足 |
---|---|---|
汎用レジスタ | 固定小数点数の演算(オペランド、作用素、算術結果)記憶を行う。 | |
浮動小数点レジスタ | 浮動小数点数の演算(オペランド、作用素、算術結果)の記憶を行う。 | |
フラグレジスタ=条件コードレジスタ | システムの動作を制御する。 |
SY:CPUとシステムの性能評価はほぼ同様に行うことが出来る。
名称 | 説明 | 補足 |
---|---|---|
スループット throughput | 単位時間に実行しうる機械命令文/ジョブ処理数(transaction number) | |
ターンアラウンドタイム Turn Around Time=TAT | 機械命令文/ジョブ処理要求の作業開始から処理結果の出力完了までの時間。 | |
応答時間=経過時間 response time=elapsed time | 機械命令文/ジョブ処理要求の送信から処理結果の出力開始までの時間。 |
名称 | 説明 | 補足 |
---|---|---|
MIPS Million Instructions Per Seconds | 1秒間に実行しうる機械命令文の数を100万単位で表す。 | 1MIPS=100万機械命令文/秒 |
FLOPS FLoating Operations Per Seconds | 1秒間に実行しうる浮動小数点演算の回数を表す。 | 1MFLOPS=100万浮動小数演算/秒 |
(命令実行時間)=(CPI)x(クロックサイクル時間)=(CPI)/(クロック周波数)
名称 | 説明 | 補足 |
---|---|---|
CPI Clocks Per Instruction | 1機械命令文の実行に要するクロック数。 | |
クロック周波数 | 1秒間に発生する信号(クロック)の数を表す。 | cf. C言語-CLOCKS_PER_SEC |
クロックサイクル時間 | 1クロックに要する秒数を表す。 | =1/(クロック周波数) |
ある複数の大規模プログラムを使用してOSの処理時間を調べるOSの性能評価テスト。
実行中のプログラムやそのプログラムが必要とするデータを格納する半導体素子。
性質 | 役割 | 使用されるRAM |
---|---|---|
揮発性(V)/不揮発性(NV) | 電力が供給されている間だけ/されていなくてもデータを保持する性質。 | VRAM/NVRAM |
1次(主)/2次(副) | 実行中の/実行していないプログラムの保持に使用するメモリの分類。 | DRAM/SRAM |
一定時間経つと自然放電によりデータが消えてしまう性質。
揮発性記憶の保持を行うためのデータの読み込みと書き込み動作のこと。リフレッシュの頻度は数十回/秒である。
揮発性を持つRAM。DRAMやSRAMは通常VRAMに分類される。
実行中のプログラムの保持に使用するメモリを1次メモリ=主メモリ=実メモリという。これらはその用途から揮発性メモリが適切である。
データをメモリ内の自然な境界に合わせて配置して転送速度を速くするために、アドレスなどを4の倍数に整列しておくこと。
電力が供給されていなくてもデータを保持できる性質。
不揮発性を持つRAM。SRAMに小さな電池を付随させることで実現され、低消費電力を生かした携帯型機器、コンピュータ内時計、(BIOS設定情報の保持などの)バッテリーバックアップ機能などとして使用される。
実行していないプログラムの保持に使用するメモリを2次/補助メモリという。これらはその用途から不揮発性メモリが適切であり、しばしば磁気ディスクによって実装される。入力された情報がメインメモリに輸送される前に蓄えられたり、出力される情報が待機する場所でもある。
主メモリの領域は限られていることが多く、より記憶領域の大きい2次メモリに対し一時的にタスク=プロセスを退避させたさせるための記憶領域。
名前 | 解説 | 例、補足 |
---|---|---|
コードセグメント | CPUが実行するプログラムコードを格納する。 | 変数の割り当ては他のセグメントで行われる。テキストセグメントとも呼ばれる。 |
データセグメント | 初期化された大域変数・静的変数を格納する。 | サイズは固定。 |
bssセグメント Block Started by Symbol | 初期化されていない大域変数・静的変数を格納する。 | プログラムローダによって実行時に0がセットされる。サイズは固定。 |
ヒープセグメント | mallocなどによってプログラマが自由に使用できる領域。 | Heap形式で低位アドレスからデータが格納される。プログラム実行中に要求され動的に割り当てallocateと解放delocateに使用されるメモリ領域。サイズは可変。フラグメンテーションが発生する。 |
スタックセグメント | 関数の局所変数などを格納する。 | stack形式で高位アドレスからデータが格納される。スタックフレームというまとまりで情報が格納される。サイズは可変。 |
プログラム実行中に定義された局所変数や借り引数、演算(関数)の戻り値、関数の実行が終了した際に復元する命令ポインタの値の格納に使用される
フラグメンテーションが発生したヒープセグメントの記憶領域(=アロケータorデロケータ)を回収して再度使用可能にすること。
各記憶素子=メモリサイトにはアドレスと呼ばれる特定の整数が割り当てられており、このアドレスによってメモリサイトにアクセスしそこに格納されている情報を参照する。
特定の用途のために使われるメモリ、特にプロセスが参照可能なアドレスの集合のことをアドレス空間と呼ぶ。それぞれのアドレス空間に分割して互いが互いの領域にアクセスできないようにしておけば、バグの領域をそのアドレス空間に制限することができる。
名前 | 役割 | 補足 |
---|---|---|
カーネルアドレス空間 | カーネルが使うアドレスの集合。 | このアドレス空間へのアクセス権限は強く設定しておかないとシステムが誤作動した場合に被害が大きい。 |
ユーザアドレス空間 | ユーザアプリケーションが使うアドレスの集合。 | このアドレス空間へのアクセス権限は強くする必要は必ずしもない。 |
I/Oポートアドレス空間 | I/Oポートに割り当てられているアドレスの集合。 | このアドレス空間へのアクセス権限は強く設定しておかないとシステムが誤作動した際に被害が大きい。 |
(SY comment)
カーネルアドレス空間へのアドレスはシステムコールを用いて行い、I/Oポートアドレス空間へのアクセスはデバイスドライバを用いて行う、というのがUNIXの設計思想であるようだが、Linuxではiopermといった直にデバイスを操作するシステムコールが用意されており、Linuxの設計思想が必ずしもUnixのそれに完全に準拠しているわけではない。cf.『Linuxを256倍使うための本』
ある別の用途のために暫定的に情報を保管しておく機能や装置はバッファと呼ばれる。
名前 | 解説 | 補足 |
---|---|---|
アドレスバッファ | CPUから主メモリやI/Oポートへアドレスの情報を送る際に使われるバッファ。 | CPU内にある場合にはメモリアドレスレジスタと呼ばれる。 |
データバッファ | CPUから主メモリやI/Oポートへデータの情報を送る際に使われるバッファ。 | CPU内にある場合にはメモリデータレジスタと呼ばれる。 |
1度使った情報を素早く再利用できるように一時的に記憶しておくメモリ。プロセッサ内部に搭載されているSRAMを用いて構成される小さいが高速なメモリで構成される。DRAMなどの大きいが低速なメモリのためのバッファの役割を果たす。
主記憶装置と低速の出力装置との間のデータ転送を緩衝記憶装置を介して行うことでシステム全体のthoughputを上げることをスプーリングと呼ぶ。
マザーボードに対し外部の情報の入出力を行うインターフェースはチャネルとも呼ばれる。渉外する際内部の情報は抽象化される必要があるため、チャネル設計者は内部情報の抽象化について考える必要がある。そのコンピュータ固有のアーキテクチャなどを実装する。
CPUと最低水準のシステムソフトウェアとの間で情報をやりとりするためのインターフェース。機械語を正しく動作させるためにプログラマが知っていなければならない事柄の全てを含む。コンピュータ設計者は、アーキテクチャとそれを実際に実現する方法(implementation)とを区別して考える必要がある。
アーキテクチャは低水準言語を用いて記述されるため、アーキテクチャの学習は人間にとって負担が大きい。しかし豊かな構造をもつユーザユーザアプリケーションプログラムの作成には入出力処理やメモリの割当といった低水準システム機能が必要になる。アーキテクチャを知らなくとも低水準システム機能を使ったユーザアプリケーションを気軽に作ることができるような、アーキテクチャをカプセル化するソフトウェアサービス=ABIがOS間で統一され提供されている。
CPUに直接命令をくだす機械命令文(binary instruction)とユーザアプリケーションプログラムを仲介するOSのソフトウェアサービス。この機能により基本命令セットを知らなくとも低水準機能を呼び出すことができる。
ABIがない場合、ユーザアプリケーションプログラムはシステムソフトウェアやOSがバージョンアップされる度にコンパイルして再びリンクしなければプログラムに不具合が生じる。これはアプリケーションベンダやユーザにとって大きな負担である。ABIは動的リンクを採用することによりこの負担を取り除いている。動的リンクされる標準ライブラリはlibc(Cライブラリ),libsys(システムランタイム),libX(Xウィンドウ),libnsl(ネットワークサービス),...などである。
各種周辺機器を同一環境で結合するために、物理的仕様(ケーブル、コネクタ、電気信号など)と論理仕様(機器間のやりとり)からなる取り決め=仕様が定められている。
名前 | 役割 | 例、補足 |
---|---|---|
入力/出力機器 | コンピュータに/からデータを入力/出力する装置。 | スキャナ、プリンタ |
電源 | コンピュータに電力を供給する装置。 | |
外部記憶装置 | 入出力された情報を蓄える。 | ドライブ、磁気ディスク |
ファン | 熱散逸加速装置。 |
CPUを仲介せずにメモリや2次装置の間で直接データを転送する形式。DMA転送はCPUに負荷がかからずに高速かつ大量のデータの転送が可能になる。以下のIDEやATAなどはDMA転送が実装されたものである。一般に、それぞれの規格毎にそれ専用のバスが存在する。
名前 | 役割 | 例、補足 |
---|---|---|
IDE Intelligent Drive Electronics | コンピュータに磁気ディスクや光学ドライブを接続するための規格。デバイス制御のためにCPUに負荷がかかる。 | 1986年当時のCompaq Computer社などが開発。➡ [外部リンク2] |
ATA Advanced Technology Attachment | 各社が独自にIDEの拡張を行い互換性が損なわれたため、1994年ANSIが策定した標準IDE規格でパラレル通信を行う。 | 当初はパラレルATAと呼ばれた。現在では後継のSATAが使われる。 |
SATA Serial ATA | ATA規格の後継拡張仕様でシリアル通信を行う。 | リムーバブルメディアドライブで使用される。 |
SCSI Small Computer System Interface | IDEの後継規格。専用コントローラがデバイスを制御するためIDEに比べCPUに負荷がかかりづらい。 | ➡ [外部リンク] |
ISA Industry Standard Architecture | IBMのPC/AT互換機で使用されていたバス幅(=1回の転送データ量)16ビットの拡張カード用バススロット規格。 | 現在ではPCIやその後継が使われる。 |
AGP Accelerated Graphics Port | インテルが策定したグラフィックボード専用バススロット規格。 | 現在ではPCI-eやその後継が使われる。 |
PCI Peripheral Component Interconnect | Intel社を中心とするPCI SIGによって策定されたバス幅32ビットの拡張カード用バススロット規格。 | ISAに取って代わる。 |
PCIe PCI-Express | SATA接続より高速にシリアルデータ通信が行える拡張バススロット規格。 | 「M.2 SSD」→PCI-eを使用したSSD。現在主流の接続規格。 |
NVMe Non-Volatile Memory Express | PCleバスを介してSSDなどのデバイスからデータに素早くアクセスするための転送プロトコル。 | |
USB Universal Serial Bus | Plug&Playやホットプラグ(=電源が入った状態でのパーツの取り外し機能)といった特徴をもつインターフェース規格。 | 小型で携帯に便利。 |
名前 | 役割 | 例、補足 |
---|---|---|
ホストコントローラドライバ | 全てのUSBデバイスはComputerに搭載されているチップを介して制御される。 | USB1.1→UHCI、OHCI、USB2.0→EHCI |
クラスドライバ | 各USBデバイスの標準化されたデータ送受信形式の機能をデバイスクラスと呼び、これらに対し汎用のドライバが用意されている。 | |
ベンダーデバイスドライバ | デバイスクラスに属さないUSBデバイスはベンダー専用のドライバを利用する。 |
種類 | 解説 | 入力装置 | 出力装置 |
---|---|---|---|
キャラクタデバイス character device | 文字などのdigital情報を扱う。CUI入力装置。 | キーボード | プリンタ |
ポインティングデバイス pointing device | analog情報を扱う、GUI入力装置。 | マウス | タッチパネル、ディスプレイ |
オーディオデバイス audio device | 音声情報を扱う。 | マイク | スピーカー |
コンピュータの電源を切った後にデータを記憶しておくための装置。
外部記憶装置を認識するためのデバイス。内蔵型、外付け型、リムーバブル型(取り外し可能)がある。
disc(円盤)+desk(机)=disk(ディスク). 主要な内蔵型or外付け型不揮発性2次メモリ。
名前 | 容量 | 単価 | 衝撃による故障リスク | ランダムアクセス | 性能 |
---|---|---|---|---|---|
HDD Hard Disk Drive | 大 | 安い | 高い | 非常に遅い | 動作音や振動が発生 |
SSD Solid State Drive | 小 | 高い | 低い | 非常に速い | 動作音が静か。サイズが小さく軽い。 |
名前 | 役割 | 補足 |
---|---|---|
①ヘッド head | 各プラッタ表面からわずかに浮いた位置に配置された可動アームに取り付けられた電磁コイル。記憶の読み書きを行う。 | 各ヘッドにはヘッド番号が振られている。 |
プラッタ platter | 片面/両面に磁性体が塗布された回転する平滑な円盤。 | 回転数のオーダーは毎分~105である。 |
①記録面 surface | プラッタの表面が記録面となる。 | 各記録面はサーフェス番号をもつが、しばしば各面にヘッドが備えつけられヘッド番号と一致する。 |
②トラック track | 1枚のプラッタは上から見て同心円状に分割された記憶領域。 | 各トラックは外側から番号が振られたトラック番号を持つ。 |
シリンダ cylinder | プラッタを束ねたときに円筒状になる同じトラック番号をもつトラックのこと。 | このためトラック番号はシリンダ番号とも呼ばれる。 |
③セクタ sector | トラックをさらに円弧に分割した記憶単位で、ディスクアクセスの最小単位。 | 各セクタはトラック毎にセクタ番号が振られる。MBRでは512バイト/セクタだがGPTでは4KB/セクタも可能。 |
名前 | 役割 | 補足 |
---|---|---|
シーク時間 | データのあるトラックまで磁気ヘッドが移動する時間 | |
サーチ時間 | 求めるデータが磁気ヘッドに来るまでに回転する待ち時間 | |
データ転送時間 | 磁気ヘッドがデータを読み取る時間 |
名前 | 役割 | 補足 |
---|---|---|
CHS方式 | CHS情報でセクタにアクセスする。 | 8Gバイトの壁が存在。今日このアクセス方式は使用されない。 |
LBA方式 Logical Block Addressing | 論理ブロック番地を用いてセクタにアクセスを行う。 | 8Gバイトの壁が存在せず今日でもこの方式が使われる。 |
名前 | 役割 | 補足 |
---|---|---|
MBR形式 | 古くから使用されているパーティション形式でWindowsXP以前のOSでも使用可能。 | プライマリパーティション4つorプライマリパーティション3つと拡張パーティション1つまで作れる。 |
GPT形式 | MBR形式の後継で、WindowsXP以前のOSでは使用できず、また64bit環境が必要だが2TBを超える大容量ディスクを認識できる。 | プライマリパーティション128個まで作れる。 |
セクタ番号(LBA) | 00000000H | 開始セクタ(LBA)- | 開始セクタ(LBA)- | 開始セクタ(LBA)- | 開始セクタ(LBA)- | ||||
磁気ディスク | MBR | PBR | パーティション1 | PBR | パーティション2 | PBR | パーティション3 | PBR | パーティション4 |
バイト数 | 512B | パーティションサイズ | パーティションサイズ | パーティションサイズ | パーティションサイズ |
パーティション分割された記憶ドライブの先頭(シリンダ0、ヘッド0、セクタ1)に配置されるセクタ。電源投入直後ブートを行うためのプログラム=ブートローダとファイルシステムを含む論理パーティションの構成情報=DPTの2つを保持する。
先頭から | 内容 | 全512バイト | 例、補足 |
---|---|---|---|
ブート(ストラップ)ローダ boot(strap) loader | MBRからカーネルファイルを主メモリにロードしOSを起動するプログラム。電源投入直後BIOSによって読み込まれる。 | 446バイト | メインブートレコードとも呼ばれる。 |
パーティションテーブル Disk Partition Table=DPT | ディスクのパーティション情報を記述する。各エントリの長さは16バイトで最大4つのパーティションしか存在できない。 | 64バイト | |
ブートシグナチャ boot signature | ドライブが正当なものであることを保証するマジックナンバ=0xAA55の値を格納。この値が入っていないとMBR自体が無効なものとして扱われ、ブートローダが実行されずパーティションテーブルも読み込まれない。 | 2バイト |
先頭から | 内容 | 全16バイト | 例、補足 |
---|---|---|---|
ブートフラグ boot flag | 起動パーティション/それ以外のパーティションで0x80/0が通常入る。通常ブートローダはこのフィールドが0x80となるパーティションからOSを読み込む。 | 1バイト | =アクティブフラグ |
開始セクタ(CHS) | パーティションの開始セクタのCHSアドレスをその順序で格納。 | 3バイト | |
パーティションタイプ | フォーマット形式の識別子。 | 1バイト | ➡ [外部リンク] |
終了セクタ(CHS) | パーティションの終了セクタのCHSアドレスをその順序で格納。 | 3バイト | |
開始セクタ(LBA) | パーティションの開始セクタのアドレスをLBAかつリトルエンディアンで格納。 | 4バイト | |
パーティションサイズ | パーティションの全セクタ数をリトルエンディアンで格納。 | 4バイト |
記憶ドライブ中の各パーティションの先頭に配置されるセクタ。電源投入直後ブートを行うためのプログラム=ブートローダを保持する。
先頭から | 内容 | 全512バイト | 例、補足 |
---|---|---|---|
ジャンプ命令 | ブートローダへエントリポイントを指定する命令コードと実行アドレスが書かれている。 | 3バイト | |
OEM名前 Original Equipment Manufacturing | OSのOEMを格納する。 | 8バイト | |
パラメータブロック | ボリュームラベル、セクタ数、クラスタサイズなどのパーティション情報を格納する。 | 51バイト | |
ブートローダ | ➡ MBR-ブートローダ | 448バイト | |
ブートシグナチャ | ➡ MBR-ブートシグナチャ | 2バイト |
パーティションラベルにGUID=Globally Unique IDentifier(用途を表すID+特定のためのID)を用いている。
先頭から | 内容 | LBA | 例、補足 |
---|---|---|---|
MBR | ディスクの保護と互換性を目的に挿入されている。 | 0 | |
GPT header | OSのOEMを格納する。 | 1 | |
パーティションテーブルエントリ | 128bytes/パーティションテーブルエントリ、4パーティション情報/1セクタ。 | 2-33 | |
パーティション1-128 | |||
パーティションテーブルエントリ | パーティションテーブルエントリ1-128の情報を複製している。 | 32セクタ分 | |
GPT header | 1セクタ分 |
リムーバブル型ストレージ。書込みと読出しのメカニズムはEPROMと同じ。ただし、データの消去はブロック毎に可能になった。データ消去時にはメモリサイトにおけるFETのSに高電位、Gを接地、DをオープンにしてG酸化膜で生じるトンネル現象を利用して電子を引き抜く。
名前 | 役割 | 補足 |
---|---|---|
USBメモリ USBメモリ | コンピュータを内臓する機器にUSBポートをもったフラッシュメモリ。 | 小型で携帯に便利。 |
SDメモリカード Secure Digital | カード型のフラッシュメモリ。 | デジタルカメラや携帯、ラップトップパソコンで使用。 |
リムーバブル型ストレージ。個々のbitに対し1をディスク表面のピットと呼ばれる小さなくぼみに対応させて情報を格納。レーザー光を用いて書き込み、読み込みを行う。bitの読み込みは、ディスク表面にレーザー光を照射しその反射光を検出して表面がピットが平坦かで判定される。書き換え可能なものにするには、結晶質で反射性のある材料を使う。
名前 | 役割 | 補足 |
---|---|---|
CD Compact Disk | ||
DVD Digital Versatile Disc | ||
Blue-ray Disc |
SY:CPUが読み込むことのできる情報(=機械語)のうち、人にとって有意義な情報の単位(=単語)を一般にコード(code)と呼ぶ。コードを書くことを一般にコーディング(coding)と呼ぶ。
CPUが読み込むことができる情報は通常トランジスタによって実装される電気的なオン/オフで実現された2値の値を最小単位として構成されている。この機械が直接読み込みを行う2進数情報=バイナリ(binary)情報は機械語とも呼ばれる。
CPU内でやり取りされる電気的なオン/オフで実現された情報を構成する最小単位をビットと呼ぶ。特にNビット(N bit)と言った場合、N続きのビットで表される情報、すなわち、N桁からなる2進数を表す。chipの集積度を表す際の単位として用いられる。
略称 | K | M | G | T |
---|---|---|---|---|
名称 | Kilo | Mega | Giga | Tera |
対応数 | 210=1024 | 220=1048576 | 230=1073741824 | 240=1099511627776 |
1byte :=8bit. (SY: byte=bite+eight.) コンピュータの記憶容量を表す際の単位として用いられる。
通信の文脈において、1byteが8bitを表さないで使われることがあることを考慮し、厳密に8bitを意味する単位。コンピュータが通信する容量を表す際の単位として用いられる。
1packet :=1024bit=128octet. インターネット上でマシン情報を送受信する際の単位として用いられる。特に、インターネット通信における送受信データそのものを指すこともあり、その場合にはIPパケットとも呼ばれる。
ネットワーク上のnetwork interface層(主にEthernet上)においてデータを送受信する際のデータの単位として用いられる。
CPUが直接理解できる機械語で表現されたコードで終止符と呼ばれる特定の区切り文字によって区切られる。CPUの動作サイクルの単位をなす。
10...1 命令部 |
1001...01 レジスタ部 |
0010...11 アドレス部 |
⏎ 終止符 |
名前 | 解説 | 例、補足 |
---|---|---|
命令部 | 命令文の動詞にあたる部分。処理の内容を記述する。 | |
レジスタ部 SY:作用部 | データを転送するレジスタや番地部を変更する汎用レジスタを指定する。 | 特に、番地部に対する作用素として用いられる汎用レジスタは指標レジスタ(SY:作用レジスタ)と呼ばれる。 |
アドレス部 SY:オペランド部 | 主メモリのアドレスを指定する。 | 命令語にレジスタ部の指定がない場合、アドレス部の値がそのまま主メモリのアドレス=絶対アドレスを表す一方、レジスタ部の指定がある場合、番地部の値に作用レジスタの値を加えた値が主メモリのアドレス=有効アドレス(Effective address)を表す。 |
バイナリデータを並べる際の順序のこと。いくつか流儀がある。
名前 | 解説 | 利点 | 例 |
---|---|---|---|
ビッグエンディアン big endianness | 末尾のバイトがそのまま末尾に格納される方式。 | 人にとって読みやすい。 | 0xAA55→0xAA 0x55 |
リトルエンディアン little endianness | 末尾のバイトが最初に格納される方式。 | データの長さが変化した場合でもアドレスが変わる事なくアクセス出来るため計算の処理がしやすい。データの長さが分からない場合でもデータを読みやすい。 | 0xAA55→0x55 0xAA |
人が使う一つの文字や記号はコンピュータでは1byte=8bit単位でコード化される。
文字をコード化する際には7bit分=2^7(=128)通りだけ対応を定めておき、最上位の1bitをどのように使って1byte codeを作るかはしばしば使用者団体に委ねられることが多い。このことを便宜上7bit規則と呼んでおく。自由度が残された最上位1bitには様々な使用法がある。
最上位bitの値を0にとった1byte codeを7bit則で定められた意味と同等の意味を持つとして定義される1byteコードを7bitコードと呼ぶ。
7bitコードのうち最上位bitとして情報の送受信を行う際にノイズなどによってコードの破損がないかどうかを検査するために使う場合がある。そのときに用いられる最上位ビットを検査ビット(check bit)と呼ぶ。
ビット名 | 解説 |
---|---|
パリティビット | 検査ビットの値として1バイト中に含まれる1となるbit数を常に偶数となるように定めたものをパリティビットと呼ぶ。パリティビットは1字ずつ送信する調歩式伝送で用いられ、受信側は1byte中の1の数が偶数であれば正しく送られてきた情報なのでチェックビットを0にして7bitコードに帰着させて読み取り、奇数であれば異常があったことを発信し再転送するよう働きかける。 |
電子通信を行う場合、上記の理由で最上位ビットを検査ビットに変換してから送信することが多く、例えば電子メールのヘッダに上のような文字が使われている場合、上記のような変換を行っていることを表す。従って、変換後の文字コードは7ビットコードになるため、8ビットコードで書かれた文字は採用されている検査ビットの値に応じて文字化けを起こす。例えば半角カナはJIS8ビットで最上位が1で表現されるため、最上位ビットが0に変換される場合メールで用いると文字化けを起こす。
最上位bitの値として1にとった場合の1byte codeに対し別の文字コードを対応させた1byteコードを8bitコードと呼ぶ。別の文字コードとして通常その国で使われる言語を表した文字コードが使われる。
世界各国で用いられる英字、数字、特殊記号の標準化を行うために、ISOが定めた7bit ruleに基づく世界共通のコードをISOコードと呼ぶ。
ISOコードと別の文字コードに区別するために、ISOコードにはShift In/Shift Out機能をもったSI/SOコードが用意されている。Shift Inからの7bitコードはISO7bitコードとして読み込まれ、Shift Outからの7bitコードは別の規格の7bitコードとして読み込まれる。
略称 | 名称 | 解説 |
---|---|---|
SI/SO | Sfhit In/Shift Out | シフトイン/シフトアウト |
ACK/NAK | ACKnowledge/Negative ACK | 肯定信号/否定信号 |
SOH/EOT | Start Of Heading/End Of Transmission | 伝送開始信号/伝送終了信号 |
世界の主な国の文字を統一的に扱うためにISOによって考案されたコードで、英数文字も含めて全ての文字を2バイト(=2x28=65536通り)で表す。現在ではUnicode全体は4バイトで定義されている。
ASCIIコードと互換性があるように構成されている。
7bit則に基づいて定められたUnix用のコード。現在はUTF-8に取って代わられている。
アメリカでは英数文字として7bit則に基づいたASCIIコードを用いることが定められている。これは実質的にISO7bitコードと同じである。
日本語で用いられる文字や記号の標準化を行うために、日本産業規格=JISが定めた7bit則に基づくコードをJISコードと呼ぶ。
JISコードは漢字コードを内包しており、それらへの変換はKI/KO(Kanji In/Kanji Out)コードによって行われる。
JIS7bitコードはJISが定める7bitコードである。Shift Outされた場合に対する7bitコードには半角カタカナ文字や句読点が割り当てられている。
JIS7bitコードにはJIS漢字コードが含まれており、JIS漢字コードで表される文字は2バイトの全角文字で表されるという特徴がある。Kanji Inからの7bitコードはJIS漢字コードとして読み込まれ、Kanji Outからの7bitコードはISO7bitコードとして読み込まれる。
JIS8bitコードはJISが定める8bitコードである。最上位ビットが1の場合には半角カタカナ文字や句読点が割り当てられている。
JIS8bitコードにはシフトJIS漢字コードが含まれており、JIS漢字コード同様2バイトの全角文字で表される。Kanji Inからの8bitコードはシフトJIS漢字コードとして読み込まれ、Kanji Outからの8bitコードはJIS8bitコードとして読み込まれる。
種類 | 表現 |
---|---|
固定小数点数 | 2進数表現 |
浮動小数点数 | 16進数表現 |
ゾーン10進数 | 文字数表現 |
パック10進数 | 2進化10進数表現 |
(数)16 ⇆ 数h ⇆ 数H ⇆ h数 ⇆ H数 ⇆ 0x数
2進数 | 1 | 10 | 11 | 100 | 101 | 110 | 111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
10進数 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16進数 | 1H | 2H | 3H | 4H | 5H | 6H | 7H | 8H | 9H | aH | bH | cH | dH | eH | fH |
桁数が有限の2進数で表された整数のことを固定小数点数とも呼ぶ。
【 8bit固定小数点数の例 】
(0011000)2=0×27 + 0×26 + 1×25+ 1×24 + 0×23+ 0×22+ 0×21+ 0×20=(32+16)10
Xビット固定小数点数は最上位ビットの桁上がりで0に戻ることからmod 2でXとなる(代表)整数とみなすことが出来る。
固定小数点数では、Xビット固定小数点数の周期が2Xとなることから周期の上半分を負数として使用する。すなわち、100...00には±2X-1の2通りある解釈のうち、-2X-1を採用する。従って最上位ビットが1の場合にはそれらは負数となる。Xビット固定小数点数Nに対しその補数は-N=2X-N (≡ -N \mod 2X)
で表される。
Nの補数-Nの求め方は、まずNを2進数で表した後0を1に、1を0に置き換えた(bit flip)数Nを考える。N+Nは全てのビットが1の値を取るが、これは-1に相当する。したがってN+1が補数に相当する:-N=N+1
.
最上位ビットが1の場合それらを負数し、ある数の補数はbit flipした数-N=Nとする表現。特に全てのビットを1とした数は0と同じである。
浮動小数点数は、その表示において小数点が常に先頭に置かれ、それを指数の値の桁数だけ動かしたところにある。
【 4byte浮動小数点数の例 】
(3731.164)10=(E93.2A0)16
=+.E932A0×163=(0 1000011 1110 1001 0011 0010 1010 0000)2
∈ 符号部.仮数部×底指数部=(符号部 指数部 仮数部)2
名前 | 解説 | 例、補足 |
---|---|---|
符号部 | 浮動小数点数の符号を表す。 | 1bitで記述され+=0 ,-=1 である。 |
指数部 | 浮動小数点数の指数は2進数で表される。4byte=32bit数/8byte=64bit数であれば7bit/15bit使われる。したがって指数部は27=128の周期性がある。 | 慣例として(0000000)2=(-64)10 ,(1000000)2=(0)10 ,(1111111)2=(+63)10 のような対応を用いる。 |
仮数部 | 浮動小数点数の仮数は2進化16進数で表される。 | 4byte数であれば3byte、8byte数であれば6byte使われる。 |
10進数の各桁を2進数で表した2進化10進数で表し、最後に符号を示す4bitの符号コードを付けた数である。+=1100
,-=1101
である。最後が0か1かでプラスかマイナスかが判定される。
分類 | 解説 |
---|---|
1次元模様コード | バーコード |
2次元模様コード | QRコード |
縦線の幅、線と線の隙間の間隔によって情報をコード化する。
名前 | 解説 |
---|---|
JANコード Japan Article Number | JISによる規格 |
ISBNコード International Standard Book Number | 書籍のための規格 |
ITFコード Interleaved Two of Five | 物流用に作られた規格 |
名前 | 解説 | 補足 |
---|---|---|
スタック型 stack type | 1次元バーコードを縦に積み重ねて表現。 | |
行列型 matrix type | 黒と白で格子状に情報を格納。あらゆる方向から情報を読み取れる。 | 1994年現在のデンソーウェーブ社が開発した日本発の技術。 |
ICタグの情報を無線通信によって読み書きする自動認識技術。
データを管理するための無線チップと送受信するためのアンテナを内蔵したタグ。
名前 | 周波数 | 通信範囲 | 例、補足 |
---|---|---|---|
LF帯 Low Frequency | ~135kHz | 狭い。~10cm | 自動車のキーレスエントリ。環境非依存。 |
HF帯 High Frequency | 13.5MHz | 狭い。~10cm | 交通機関のICカード、回転ずしのお皿 |
UHF帯 Ultra High Frequency | 860-960MHz | 広い。1m~数10m | 在庫管理 |
マイクロ波帯 micro-wave Frequency | 2.45GHz | 中程度。~3m | 電波干渉を受けやすい。 |
CPUに行わせる命令文を一般にプログラム(program)と呼び、プログラムを書くことをプログラミング(programing)と呼ぶ。特にハードウェアと概念的に対比する場合やハードウェアを動作させる命令の集合のことをソフトウェア(プログラム)とも呼ぶ。プログラムは特殊な効果をもつ文字列であり、本ノートではこのような特殊な効果を持つ文字列のことを「spell(呪文=魔法=おまじない)」、spellを実行することを「(スペル)発動=詠唱」とも呼ぶ。
(SY comment)
魔法(spell)の用語の使い分けだが、「呪文」はとりあえず何か効き目が期待される文字列、「魔法」は使い慣れている、もしくはその作用機序が分かっている(つもりなっている)文字列、「おまじない」はとりあえずそう書いておくとご利益がある文字列、などというように自分の気分で使い分ける。気持ちとしては、「呪文」はおどろおどろしい文字列に、「魔法」は嬉しい文字列に、「おまじない」は意味を考えずにコピペで使うありがたい文字列に用いる。
ハードウェアとユーザが使用するアプリケーションプログラムとを仲介するインターフェースを一般にシステムソフトウェアと呼ぶ。しばしばユーザが直接扱うことなく背景で動作する。システムソフトウェアを統括するのがOSである。
電源投入時に自動的にすべてのハードウェアの初期化を行うシステム。
名前 | 解説 | 補足 |
---|---|---|
BIOS Basic Input Output System | MBR型ディスクパーティションに対応。ブートセクタはMBR内からメモリ=0000:7C00Hに読み込む。システムBIOSはメモリを1MBしか使用できないためインターフェースにGUIが使えないなどの制限がある。 | 「Ralf Brown's Interrupt List」にサービスがリストアップされている。 |
UEFI Unified Extensible Firmware Interface | BIOSの後継。GPT型ディスクパーティションに対応。システムBIOSにあった制約が無くなり様々な拡張機能が施されている。 | 古いタイプのデバイスをサポートする機能はCSMと呼ばれる。[外部リンク]、[外部リンク] |
コンピュータの電源投入やリセットによるコンピュータシステム起動後、自動でブートローダを読み込んでシステムソフトウェア、特にOSを主記憶に展開しユーザプログラムを実行できるようにするまでの一連の処理の流れのことをブート=ブートストラップと呼ぶ。
分類 | 解説 | 補足 |
---|---|---|
低水準言語 | 記述がハードウェアに依存する。 | 人間には読みづらい。 |
高水準言語 | 記述がハードウェアに依存しない。 | 人間には読みやすい。 |
プログラムのうち、特に代数計算を行うための一連の計算手続きのことをアルゴリズムと呼ぶ。
CPUに処理を行わせるためのプログラムが書かれた1次ファイル=大本になるファイルのこと。
ソースファイルを翻訳する際や実行ファイルを実行する際に指定されるパラメータを記述したファイル。
本ノートでは魔法を実行する環境のことを総じて魔法陣と呼ぶ。
ハードウェアに依存するプログラム言語。人間語に近いシンボル形式で書かれており、コンピュータのアーキテクチャを構成する。
機械命令文(binary instruction)に対応する低水準言語を構成する単語。短い英数字で書かれている。
アセンブリ: 説明: |
ADD 命令部 |
%ebp レジスタ部 |
, |
%esp アドレス部 |
⏎ 終止符 |
ハードウェアに依存しないプログラム言語。人間にとって分かり易くかつ扱いやすい文法をもつ。
実行方式 | 言語 |
---|---|
コンパイル | C・Java・Fortran |
インタープリト | JavaScript・Perl・HTML・python |
高水準言語によるプログラムを低水準言語としてコンパイル/インタープリトする際の細かな指示を与えるプログラム。ソースファイルだけでなく、初期設定ファイルに記述されることも多い。
高水準言語を低水準言語に翻訳することをコンパイルと呼び、そのためのソフトウェアをコンパイラという。
1 | 字句解析 | プログラムの文字列を規則に基づいて解析し、最小の字句単位tokenの切り出しを行う。 |
2 | 構文解析 | 字句解析が出力する字句を読み込みながら構文規則に従って2分構文木を作成する。 |
3 | 意味解析 | 構文解析で正しい文法に則った文の意味を解釈し、最適化処理がしやすいように同じ意味を持つ(後置表記などの)別の表現に書き直して中間コードを作成する。 |
4 | 最適化 | 実行時間や所要記憶容量が少なくなるようプログラムの再配置(変数のレジスタ割り当て、関数のインライン展開、マクロの代入、自明な演算の実行など)を行う。 |
5 | コード生成 | 実行ファイルを作成する。 |
演算で使用する2つのオペランドを演算子の後ろ《前》に記述する表記法。ある等式を前置《後置》表記するには、(比較子も含めた)演算子を節点とする2分構文木を構成し深さ優先の先行順《後行順》で文字を並べることで得ることが出来る。通常の記法は中置記法infix notationと呼ばれる。
ヒューレットパッカード社が作った初期の電卓(世界初の携帯電卓「HP-35」など➡[Wikipedia])は逆ポーランド記法で計算式を入力していたようである。➡計算機で試してみる
コンパイルされるプログラム、もしくはそのファイルのことをSY:コンパイリ(compilee)とも呼ぶ。コンパイリはソースファイルであることが多い。
コンパイルすることなく、命令を一つずつ機械語に翻訳しながら実行すること。インタープリトを行うソフトウェアプログラムをインタープリタ(interpreter)と呼ぶ。
コンパイルする必要がなく、インタープリタによって実行されるプログラム、もしくはそのファイルのことをスクリプト(script)と呼ぶ。
データを取り扱う際には、構造を持たせて特徴が同じものをひとまとまりで扱えるようにするのが便利である。そのようなデータの構造が(抽象的に)定義された集合をデータクラス(data class)と呼び、それに属するデータ要素⇄元elementのことをデータオブジェクト(data object)と呼ぶ。データオブジェクトが下位のデータ(オブジェクト)から構成されている場合、構成するデータのことをデータ成分(data compoenent)と呼ぶ。以下、適宜これらの用語のうち「データ」の部分を省略する。
(SY comment)
データクラス、データオブジェクト、データ成分の関係は、数学(線形代数)におけるベクトル空間、ベクトル、ベクトル成分の関係と同じである。この関係を言及した記述を私はこれまで見たことはなく(少なくとも明確には)認識されていないように思われるが、オブジェクト指向のプログラミング言語の理解を助けると思われる。(2018/2/26)以下により詳しい対応の説明がある。(追記:2021/9/13)
データクラス ∋ データオブジェクト → データ成分
ベクトル空間 ∋ ベクトル → ベクトル成分
演算が行われる対象はオブジェクトでなければならない。オブジェクト以外のものを演算するとError
を引き起こす。
データクラスに属する/値を取る要素のことを一般に(データ)オブジェクトと呼ぶ。
データオブジェクトは内部構造をもちさらに下位のデータ(オブジェクト)から構成することができる。このような場合、構成しているデータのことをそのオブジェクトの成分と呼ぶ。
オブジェクトに対し、特定の要素=具体的な値としてのオブジェクトのことを定オブジェクトと呼ぶ。
分類 | 解説 |
---|---|
リテラル構成 literal expression | 標準で搭載されている組み込みクラスに属するオブジェクトはしばしばそのクラス特有の表示をもつ。このような組み込みオブジェクト特有の表現をリテラル表示と呼ぶ。 |
抽出的構成 abstract expression | クラス() のように属するクラスを明示的に指定して定オブジェクトを構成するやり方を抽出的構成と呼ぶ。クラスにコンストラクタが定義されていると、() 内に引数を書くことで引数を値に持つオブジェクトを取ってくることができる。 |
オブジェクトに対し定オブジェクトを格納することができる非特定の要素のことを変オブジェクト(またはインスタンス)と呼ぶ。変オブジェクトに対しては、変オブジェクトはクラスに属するとは言わずに変オブジェクトはクラスに値を取るということにする。変オブジェクトはそれが属するクラスに応じて1次メモリ内にの一定数のメモリサイトを占有する。すなわち、変オブジェクトはメモリサイトに対応するアドレスとメモリサイトに格納される定オブジェクトの対で定まる:
変オブジェクト⇄(アドレス,定オブジェクト)
分類 | 解説 |
---|---|
SY:不変オブジェクト | 例えばc言語におけるconst修飾子によって修飾されたクラスから取り出された変オブジェクトは初期値を変更できなくなる。JavaScriptなど不変オブジェクトが複数の成分を持つ場合は成分は変更可能である場合がある。 |
大域変オブジェクト | どこからでも参照可能。 |
局所変オブジェクト | ブロック内でのみアクセスできブロックの外から参照できない。 |
変オブジェクトを構成する際に修飾子 変オブジェクト=定オブジェクト;
のような形で変オブジェクトの初期値を定めることを初期化と呼ぶ。初期化の作業は変オブジェクトが初めて構成されたときのみ行われる。したがって、loop処理などで再度出てきた場合には値の代入は行われずこの文は無視される。
変オブジェクトには一般に自由に名前を付けてよいが、基本的に同じ名前を使うとエラーとなるため、一定のルールで名前をつけるとよい。以下に一般的な名前の付け方のルールや慣習が知られている。
_
から始める。それ以降は数字、英字、アンダースコア_
を用いることができる。オブジェクトの抽象的集合としてのオブジェクトのことを集合オブジェクト=クラスと呼ぶ。
オブジェクトを構成する成分のうち、ピリオド.
によって参照される成分のことを一般に構成成分と呼ぶ。
名称 | 解説 | 補足 |
---|---|---|
クラス構成成分 | 集合オブジェクトの構成成分。 | |
オブジェクト構成成分 | 集合オブジェクトに属するオブジェクトの構成成分。 | 単に構成成分と言った場合にはこちらを指す。 |
名称 | 解説 | 補足 |
---|---|---|
SY:構成変数=メンバ=プロパティ | オブジェクトの構成成分となる変数はメンバ=プロパティとも呼ばれる。 | =member |
SY:構成関数=メンバ関数=メソッド | オブジェクトの構成成分となる関数はメンバ関数=メソッドとも呼ばれる。(演算の成分化) | =member function |
クラスとはベクトル空間に値をもつ関数に対応し、変オブジェクト=インスタンスとはその関数の切断面(切断地点における引数xとその値f(x)の組)に対応する。
ベクトル空間に値をもつ関数:f | |
---|---|
関数fの切断面:(x,f(x)) | |
変域(base space) | 値域(fiber space) |
引数:x | (ベクトル)値:f(x) → ベクトル成分:f(x)[1] |
(SY comment)
これがオブジェクト指向言語の最も重要な理解である。後は各言語で変オブジェクトの構成方法やそのアドレスと成分の参照の方法を覚えるだけである。この理解に到達するまでにだいぶ時間がかかった。(2021/09/10)
総合統括システムソフトウェア。マシン上で実行されるアプリケーションプログラムのためにハードウェアの資源を管理したり監視したりする。
|
高水準アクセス ---> API |
|
低水準アクセス ---> |
|
@入力機器 ジョブセット 魔法詠唱! |
ジョブマネジャ ---> |
@仮想メモリ ジョブ入力キュー ↓ タスク |
スワッパ ---> ページング |
@主メモリ タスクページ ↓ タスク待ち行列 |
タスクマネジャ ---> <--- タイムオーバー |
@CPU タスク実行 |
---> 成功 |
@仮想メモリ ジョブ出力キュー |
I/Oスケジューラ ---> |
@出力機器 魔法顕現! |
ハードウェアとソフトウェアの全ての情報のやりとりを統括する、OSの要であり頭脳でもある制御プログラムのことを監視プログラム(SY:監督)=カーネル(supervisor=kernel)と呼ぶ。ハードウェアとソフトウェアの情報連絡は全て監督を通して行われる。監督は配下に管理プログラムを組織している。
名前 | 解説 | |
---|---|---|
デバイスドライバ device driver | ハードウェアの監視や制御を行う。利用頻度に応じてカーネル組み込みかカーネルモジュールとして利用される。 | |
割り込みハンドラ inturrupt handler | ハードウェアとソフトウェアを監視し割り込み依頼が生じると監督下で緊急動作を行うプログラムを指す。 | |
ジョブマネジャ Job manager | 入力され補助(実質)メモリに移されたジョブに対し優先順位に従って実行順序を決めジョブの待ち行列(ジョブ入力キュー)を作る。待ち行列先頭のジョブをスケジューリング作業を行って実行に必要なファイルや周辺機器の利用が可能になり次第それを実行中のジョブ列に加えページをもつタスクに分解する。 | |
タスクマネジャ=プロセスマネジャ Task(process) manager | ジョブの優先度に応じてタスクのCPU待ち時間行列を作りその先頭のタスクの単位(=ページ)をCPUに転送して実行していく。スケジューラから時間切れ(タイムオーバー)が知らされるとタスクの実行を中断しタスクの待ち行列を優先度に応じて並べ替え先頭のタスクを実行する。 | |
メモリマネジャ memory manager | スワッパを使ってメモリ割り当てを制御する。 |
名前 | 解説 | |
---|---|---|
(CPU)スケジューラ | CPU下もしくは監督下である短い時間間隔(=quantum)でクロック割り込みを生成し、時間が来ると監督に時間が来たこと(time-over)を知らせる。 | |
SY:メモリスケジューラ=スワッパ swapper | スワッピングを制御するスケジューラ。プロセスをスワップ装置から主記憶へスワップインする唯一つのプロセス。 | |
I/Oスケジューラ | 入出力を制御するスケジューラ。 |
割り込み依頼には通常ハードウェアからの割り込みとソフトウェアからの割り込みの2種類がある。OSは起動時に各種割り込みに対してベクタと呼ばれる識別番号を割り当てると同時にベクタ番号と割り込みハンドラの対応表を作る。この番号が正しく割り当てられないとシステム障害を起こす。
外部周辺機器から割り込み受信ピンに送られてくる割り込み信号によって生じる。
名前 | 解説 |
---|---|
マシンチェック割り込み | ハードウェアに異常な動作が生じたときに発令される。監督はその異常状態を分析し修復できるならば修復を行うシステムタスクを作りタスクマネジャにタスクの実行を指令する。 |
クロック(タイマ)割込み clock tick | 処理にtime-overが生じるとスケジューラから監督に連絡が入りタスクマネジャに指令を出す。 |
入出力割込み | 入出力機器やデータ管理プログラムから入出力の処理の依頼が生じると監督は入出力処理装置に入出力指令を出す。 |
名前 | 解説 |
---|---|
システムコール=監督呼び出し | ユーザプログラムが監督の特定の機能を呼び出して実行を割り込み依頼できる。 |
プログラムエラー割込み | プログラムエラーやページ不在などのプログラムの実行中に異常事態が発生した場合に監督へ緊急連絡が行われる。 |
各種割り込みには優先順位が付けられており、優先順位の高い順位の割り込み(タイマ割り込みやディスクイベントなど)が優先順位の低い割り込み(キーボードイベントなど)に先だって実行される。特権レベルは0から3までの4段階あり数値が小さいほど高い権限を表す。
値 | 役割 | Linuxの場合 |
---|---|---|
0 | 最高レベル | カーネルプログラム |
1 | 高レベル | 使わない |
2 | 中レベル | 使わない |
3 | 弱レベル | ユーザアプリケーション |
コンピュータ利用者(ユーザ:user)がOSの管理の基にコンピュータに仕事をさせるためのプログラムやデータのことをジョブと言う。
ジョブはその処理方法によって電話型(=対話処理)と郵便型(=バッチ処理)とに分けられる。
種類 | 英名 | 解説 | 例、補足 |
---|---|---|---|
電話型、対話処理 | interactive processing | ユーザがその場でコンピュータにプログラムを入力を行うことで実行され通常即時に処理される。 | 複数のユーザがいてもスケジューラに従ってユーザを切り替えてTSS処理を行う。 |
郵便型、バッチ処理 | batch processing | 事前に準備された作業手順が書かれたプログラムファイルを束(batch)で入力して一括して処理させる。 | TATが長いことが欠点。 |
ハイブリッド処理 | Real-time/On-line processing | ユーザがその場でデータを入力すると、内部プログラムが即座に実行され実行結果が瞬時に出る。 | データ収集、問い合わせ、データ通信、取引処理 |
カーネルに直接処理を要求するジョブ。監督呼び出しSuperVisor Call(=SVC)とも呼ばれる。
低水準で行われる処理を抽象化して、ユーザにとって低水準の処理を扱いやすくするシステム設計やプログラムのことをAPIと呼ぶ。
ジョブは(実行ボタンを押すなどして)実行に移されるとまず磁気ディスクなどの補助(実質)メモリに輸送されジョブマネジャによってある実行単位に分解される。この分割された実行単位をタスク=プロセス(UNIX)と呼ぶ。
CPUは通常コンピュータ1つにつき1つしかなく、その動作サイクルも機械命令文を1つずつ処理するだけである。このような特性をもつCPUを効率よく作動させるためOSは仮想的な動作空間(ページ)を補助(実質)メモリに複数作成してこの空間を瞬時に切り替えながら(ページング)処理を行わせることで複数のことが同時に処理されているかのような動作環境を作り上げている。このような処理方式を時分割方式(TSS)と呼ぶ。時分割方式においては1つのプログラムの処理時間の最短化よりもスループットの最適化に重点が置かれる。
(SY comment)
裏方で超サイヤ人となった悟空が残像拳で調理をしているようなものである。
TSSにおいては、実行プログラムのためにプロセッサが割いた時間(=CPU実行時間)と、入出力待ち時間や他のプログラムを実行させるための時間を含むユーザがプログラムの実行開始から終了までに感じる応答時間(response time)を区別する。
名前 | 解説 | 例、補足 |
---|---|---|
ユーザCPU実行時間 | プログラム中で費やされたCPU実行時間 | |
システムCPU実行時間 | OSがタスクを遂行するために費やしたCPU実行時間 |
タスク=プロセスに割り当てられている仮想メモリの該当部分をページと呼ぶ。プログラムはページに分割されて仮想メモリにバラバラに入れられているため、それらを実行する際にはアドレス変換が行われた後にページ単位で主メモリに移される。特に主メモリに移されたページのことをページフレームと呼ぶ。
実メモリと仮想メモリに情報を出し入れする作業はスワッピングと呼ばれ、特にその情報単位がページとなるものをページングと呼ぶ。
タスク=プロセスに割り当てられたページをさらに複数に分割して処理を行う際の単位をスレッドという。
特に複数のスレッドをスケジューラに従って高速で切り替えながら並列処理を行う環境のこと。
要求が行われると同時に処理を行う。単位時間当たりの処理件数(=throughput)を大きくすることが重要。
種類 | 例、補足 |
---|---|
データ収集 | バーコードによる販売時点情報管理(POS=Point Of Sale system)、各種計測(雨量:AMEDAS=Automated MEteorological Data Acquisition System(外部リンク), 交通量,...) |
問い合わせ | 各種データベースへのアクセス(蔵書検索,...) |
取引 | 為替取引、座席予約、ATM |
リアルタイム処理では時々刻々とデータの処理が行われているため、その間にコンピュータの故障や停電などによって処理が中断すると、業務が滞るだけでなくその間に入力されたデータの損失も生じる。このような被害を最小限にするためにバックアップ体制を整え信頼性を向上させておくことはリアルタイム処理では重要になる。
名前 | 英語 | 解説 | 補足 |
---|---|---|---|
フォルトトレランス | fault tolerance | 耐故障。システムの構成要素を多重化して故障に備える。 | failsoft,failsafe. |
フォルトアボイダンス | fault avoidance | 故障排除。システムの個々の構成要素の信頼性を向上させ故障そのものの発生を抑える。 |
名前 | 英語 | 解説 | 例、補足 |
---|---|---|---|
フェイル | fail | 突然のトラブルが生じた場合、リアルタイム処理が中断される。 | |
フェイルソフト | failsoft | 故障が発生した部分を切り離し、処理能力を(大幅に)縮小して運転(フォールバック)しながらリアルタイム処理を続行する。 | |
フェイルセーフ | failsafe | 突然のトラブルに際し、ほぼ通常の処理能力でリアルタイム処理を続行するか、安全側にシステムを制御する。 | 交通管制システムにトラブルが発生した場合、信号機を常に赤に点灯させる。 |
フールプルーフ | foolproof | ユーザが誤った操作をしても事故が起こらないようにする。 |
名前 | 英語 | Computer数 | CPU数 | バックアップ体制 | 解説 |
---|---|---|---|---|---|
シンプレックス | simplex | 1 | 1 | fail | 1つのCPUをもつ1台のコンピュータでリアルタイム処理を行う。異常が生じた場合リアルタイム処理は中断される。 |
マルチプロセッサ | multi-processor | 1 | multi | failsafe | 1台のコンピュータに複数のCPUを搭載し、1つのCPUに異常が生じてもそのCPUに割り当てられたタスクを他のCPUに割り当ててリアルタイム処理を続行する。 |
デュプレックス | duplex | 2 | 2 | failsoft | 予備のコンピュータが待機し、稼働中のコンピュータに異常が生じたとき自動的に予備のコンピュータに切り替わりリアルタイム処理が続行される。 |
デュアル | dual | 2 | 2 | failsafe | 2台のコンピュータで同じリアルタイム処理を並行して行い、一方のコンピュータに異常が生じてもリアルタイム処理には何の影響もない。また一定時間ごとに処理結果を検証し誤動作の検査も行われる。 |
ロードシェア | load-share | multi | multi | failsafe | 複数のコンピュータでリアルタイム処理を分散並行して行い、1台のコンピュータに異常が生じてもタスクが残りのコンピュータに振り分けられる。 |
名称 | 解説 | シェルの名前 | 魔道書の名称 | 例、補足 |
---|---|---|---|---|
Linux | Unix系列 | terminal | shell script | Ubuntu,CentOS,RedHat Linux |
Mac | Unix系列 | terminal | shell script | |
Windows | DOS系列 | command prompt | batch file |
各OSにはシェル(Unix系:shell)=コンソール(console)=コマンドライン(Windows:command line)が実装され、そこに文字列を書いて(タイプして)プログラムをOSにジョブとして依頼し実行する。シェル=コマンドラインは魔法陣の一種であり主要なCUIである。
OS内で動くアプリケーションプログラムに付随するCUIはコンソールと呼ばれる。プログラムの出力を段階毎に詳しく追跡したい場合にしばしば用いられる。
OS上で動作するタスクがデータを共有して環境を整備するために利用できる変数。
コンピュータ内にあるチップ上には半導体によって構成される大量の電子スイッチと算術論理素子(ALU)によって構成される電子回路が組まれており、それらは大きく分けて算術論理回路と記憶回路に分けることが出来る。
非常に純度の高い半導体。自由電子と正孔がちょうど同じ数だけある。
純度の高い4価元素であるケイ素のことをシリコンという。
99.9999999999%のように9が12個並ぶ純度を表す。
シリコン結晶を溶かしたものに、少量の不純物元素を入れて結晶を作ることで不純物半導体が得られこれが電子部品が得られる。シリコン結晶だけでは電流がほとんど流れず電子部品にはならず、そこに価電子の異なる物質を少量混ぜることで電子部品になる。5価の元素(ドナー:donor)を入れると電子が一つ余ったN型半導体が得られ、3価の元素(アクセプタ:accepter)を入れると正孔が出来P型半導体が得られる。電荷の運び手となる粒子をキャリアと呼ぶ。
型 | キャリア | 価電子数 | 混入元素例 | 不純物名称 |
---|---|---|---|---|
P型 | 正孔(Positive) | 3価 | ホウ素(5B)、ガリウム(31Ga)、インジウム(49In)、これらの複合化合物 | accepter |
N型 | 電子(Negative) | 5価 | リン(15P)、ヒ素(33As)、アンチモン(51Sb)、複合化合物 | donor |
シリコン結晶 (真性半導体) |
溶かす ---> +不純物 |
シリコンインゴット (不純物半導体) |
輪切り ---> |
無地ウェハー |
回路焼付 ---> by ステッパー |
IC基板 |
切り出し ---> |
ダイ |
ボンディング ---> |
チップ |
不純物を入れて溶かしたシリコンを回転させながら引き上げると半導体インゴットが出来る。インゴットとは直径8/12インチ(20/30cm)、長さ12/24インチ程の巨大な円形柱の形をした物体で、より大きくより均一なインゴット程作成は難しくなる。
シリコンインゴットを輪切りにした厚さ2.5mmにも満たない薄い円盤。日本語のウェハースである。
ウェハーに回路を焼き付ける光学装置。ステッパー作業によってトランジスタ、導体、絶縁体などの電子回路素子を作成する。
電子回路が焼き付けられたウェハーを切り出した(dice)長方形の部分。この切り出しにより一連のパターン形成工程で生じる微細な傷、欠陥を分離することが可能となる。ウェハー上のダイの総数に対する良品の割合を歩留まり(yield)という。
良品のダイを選別してパッケージの入出力ピンに接続しチップを作る工程をボンディングという。この工程でも不良品が発生する可能性があり再度テストを行い、最後のテストに合格したダイが晴れてチップとして出荷される。
電気的なオンオフを実装する。整流作用をもった電子部品によって実現される。
名前 | 解説 |
---|---|
真空管 | グリッドにかける電圧によって電流を流したり止めたりする。 |
ダイオード | 両端にかける電圧の正負の違いで電流を流したり止めたりする。 |
トランジスタ | 3極管の現代版。現代のIC回路���主力となる。 |
エジソン効果を用いた電流整流作用装置。ガラス管の中にカソード電極とそれを覆うプレート電極の二つを封入し、カソード金属のみを電熱器(ヒーター)で熱することでカソードからプレートの一方向のみ電子がガラス管中を移動する。ガラス管の中を真空にすることで反跳電子を効率よく捕らえると同時に電熱器の燃焼を防ぐ。
カソードとプレートの間に電子がすり抜けられるよう格子(grid)状にした第3の電極(グリッド)をおいてグリッドの電圧を調節することで電気信号の制御を行った真空管。グリッドの部位が電子スイッチとしての役割を果たす。
P型半導体とN型半導体を接合してできる、di(二つの)ode(路)を持つ素子で、P型/N型に接続する路はアノード/カソードと呼ばれる。
電位の関係 | 電流 | 解説 |
---|---|---|
P (アノード) > N (カソード) | P → N | 正孔がNの方へ移動し電流がPからNへ流れる。 |
P (アノード) < N (カソード) | 流れない | 正孔がアノードの方へ移動し電流が流れない。 |
【 ダイオード回路記号 】
(SY comment)
水が高いところから低いところへ流れるように、電流は電位の高いところから低いところへ流れる。通常電圧をかけることは、水の例えで言えば堤防をつくって水位を上げることに相当する。水が流れてる=1,流れてない=0である。
電気的に制御されるオン(1)/オフ(0)の2値の値を取る動作をする半導体スイッチ。現代のコンピュータの基板を成す集積回路はこのトランジスタが集積されて出来たものである。
型 | 解説 | 動作速度 |
---|---|---|
バイポーラ | 電子と正孔の二つの極性の電荷で動作する。 | 普通。 |
ユニポーラ | 電子もしくは正孔どちらかの極性の電荷で動作する。 | 速い。 |
トランジスタと言えば、バイポーラトランジスタを指す。一方の極性をもつ薄い半導体の両側を逆の極性をもつ半導体ではさんで接合しそれぞれに電極をつけてできたトランジスタ。ベース電流を調節することでコレクタの電流を変化させる。
(SY comment)
大雑把にはB<Eだと水はCからBに流れ込んでもEの堤防を越えられないが、B>Eの場合はBの方がEより高所にあるので水がC->Eへ流れる。
【 NPN(バイポーラ)トランジスタ 】
設定電位 | B電位 | 電流 |
C>E | <E | 0 |
>E | C→E |
(SY comment)
大雑把にはB>Eの場合だとEに流れ込んだ水はBの堤防を越えられないが、B<Eの場合はBの方がEより低所にあるので水がE->Cへ流れる。
【 PNP(バイポーラ)トランジスタ 】
設定電位 | B電位 | 電流 |
E>C | <E | E→C |
】E | 0 |
半導体の中に逆の極性をもつ半導体を入れ、SiO2絶縁体を挟んで金属盤を接合して電極をつけたトランジスタ。
略称 | 解説 |
---|---|
JFET | Gateに小さな逆極性半導体。 |
MOSFET | SourceとDrainに小さな逆極性半導体。 |
N型半導体(S,D)の中にP型半導体(G)を入れた接合形FET。NPNJETとも呼ばれる。
【 NJFET 】
設定電位 | G電位 | 電流 |
D>S | G=S | D→S |
D>S | G<S | 減少 |
P型半導体(S,D)の中にN型半導体(G)を入れた接合形FET。PNPJETとも呼ばれる。
【 PJFET 】
設定電位 | G電位 | 電流 |
D>S | G=S | D→S |
D>S | G<S | 減少 |
MOSFETは集積化が容易であるという特徴があり、DRAMのメモリサイトなどに使われる。
P型半導体(G)の中にN型半導体(S,D)を入れたMOSFET。
【 NMOS 】
設定電位 | G電位 | 電流 |
D>S | Low | - |
D>S | G>S | D→S |
N型半導体(G)の中にP型半導体(S,D)を入れたMOSFET。
(SY comment)
PNPトランジスタと同様、G>Sの場合だとDに流れ込んだ水はGの堤防を越えられないが、G<Sの場合はGの方がSより低所にあるので水がD→Sへ流れる。
【 PMOS 】
設定電位 | G電位 | 電流 |
D>S | Low | D→S |
D>S | High | - |
NMOSとPMOSが同じ入力電圧に対して逆の動作をすることを利用して、それらを同一基板上に組み合わせて配置すると消費電力を小さくすることができ小型化に有利なIC回路を作ることができる。
プロセッサ、レジスタに用いられる。算術論理回路は大きく分けてDTLとTTLの2種類に分類される。
略称 | 名前 | 解説 |
---|---|---|
DTL | Diode-Transistor Logic | ダイオードとトランジスタの両方を用いて組まれた論理回路。 |
TTL | Transistor-Transistor Logic | トランジスタのみを用いて組まれた論理回路 |
高電圧/低電圧を1/0として行う論理演算を正論理と呼び、この逆を負論理と呼ぶ。これらは逆の関係にありMIL記号の小さな〇が負論理の印と考えることが出来る。実際の回路では正論理と負論理を混在させ信号の減衰を防いだり消費電力を減らして電気的に効率の良い回路が作られている。
算術論理素子(ALU)を生成する基本的なALUの組み合わせ(AND,OR,NOT)を基本ALUと呼ぶ。古くはGateとも呼ばれた。
bipolarトランジスタを用いたAND素子。
【 AND回路図 】
【 AND-MIL記号 】
AND素子は例えばプロセッサがレジスタからレジスタへのデータを転送する際のデータ転送回路=信号ゲートとして使われる。制御がゲート信号(B)を1(青)/0(赤)に設定すると入力信号(A)を出力(C)に通す/通さない。
A:入力 | --[ B:制御 ]--> | C:出力 |
0 | --[B=0]--> | 0 |
1 | 0 | |
0 | --[B=1]--> | 0 |
1 | 1 |
bipolarトランジスタを用いたOR素子。
【 OR-MIL記号 】
inverterともいう。bipolarトランジスタを用いたNOT素子。
【 NOT回路図 】
【 NOT-MIL記号 】
PMOSのgate=High(ON)/Low(OFF)の場合、sourceが閉じて電流が流れない/開いて電流が流れる。同時にNMOSのgate=ON/OFFとなり、電流が流れない/流れる。この性質により、Vo=OFFのときVpから電流は流れず無駄な電力を消費しない。
【 CMOS inverter 】
Vi | Vp | Vo | bit |
L(OFF) | V | V | 1 |
H(ON) | L | 0 |
基本ALUを用いて初等的ALUであるNAND,XOR,NORが次のように構成される。
【 NAND-回路図 】
【 NAND-MIL記号 】
addition mod2: A ⊕ B ≡mod2 A + B
【 XOR-回路図 】
【 XOR-MIL記号 】
【 NOR-回路図 】
【 NOR-MIL記号 】
1bitを比較し同じであれば1を返し異なれば0を返す。
【 比較一致回路 】
A | --[ B ]--> | O=δA,B |
0 | --[B=0]--> | 1 |
--[B=1]--> | 0 | |
1 | --[B=0]--> | 0 |
--[B=1]--> | 1 |
1bitと1bitの桁上がりの加算を行わない回路を半加算回路と呼ぶ。XORゲートによって和を計算し、ANDゲートによって桁上がりを計算する。
A | B | ---> | S=[A+B]0 | C=[A+B]1 |
0/1 | 0/1 | ---> | 0 | 0/1 |
1/0 | 0/1 | ---> | 1 | 0 |
【 半加算器回路 】
【 簡略図 】
最初の半加算器で各桁のビットを加算して和と桁上がりを求め、もう1つの半加算器で下の桁上がり(C-1)を考慮しながら計算を行う。
A | B | --[C-1]-> | S | C |
0/1 | 0/1 | --[C-1]-> | C-1 | 0/1 |
1/0 | 0/1 | --[0]-> | 1 | 0 |
--[1]-> | 0 | 1 |
【 全加算器回路 】
【 簡略図 】
メモリを構成する回路。読み出し専用の不揮発性メモリであるROMと読み書き両用の揮発性メモリであるRAMから成る。
入力だけでなく出力側の状態値の出力の次の値が決定される回路を一般に順序回路という。順序回路は構成素子の出力情報がその素子の入力に入るような特徴を持っている。入力が0の場合に出力の値が保持される特性を持つ順序回路は記憶回路として実用的に好ましい。
【 1を記憶する回路 】
I | --[ O ]--> | O |
0 | --[O=0]--> | 0 |
--[O=1]--> | 1 | |
1 | --[O=*]--> | 1 |
1ビット情報を記憶する最小単位はメモリセル=SY:メモリサイトと呼ばれる。メモリの内部ではメモリサイトが格子状に規則正しく配列され、セル格子を選択するためのデコーダとセルへの読み書きを行うI/Oコントローラ回路で制御されている。慣習で行/列の線はワード線(W線)/ビット線(B線)と呼ばれている。各メモリサイトはアドレスをもちこれによってそのメモリサイトにアクセスされるようになっている。
(SY comment)
サイトと呼ぶ理由は格子理論において格子状の系に対しその最小単位をサイトと呼ぶためである。セルというとさらに複雑な内部構造がある印象を受けるため、文脈に応じて使い分ける。
名称 | bit=1/0 |
---|---|
コンタクト方式 | ビット線に電流を流す/流さない。 |
拡散方式 | 格子にトランジスタを付ける/付けない。 |
注入方式 | メモリサイトトランジスタのしきい電圧を高く/低く設定。 |
1ビット情報(0と1の両方)を記憶する順序回路でレジスタやカウンタに用いられる。
略称 | 名前 | 解説 | |
---|---|---|---|
RS-FF | Reset-Set FF Unit | Sで値がセットされ、Rで値がリセットされる。 | |
JK-FF | Jack-King FF | RS-FFのR=S=1が改善され出力が反転する。 | |
T-FF | Toggle FF | 入力がある度に出力が反転する。 | |
D-FF | Delayed FF | 出力の状態によらず入力と同じ値を返す。 |
S(Set)が書き込み、R(Reset)が読み出し、Qが記憶する1bitの出力に対応する。S→1を送るとビットがセット(Q→1)される一方、R→1を送ることでビットがリセット(Q→0)される。S=R=1はinconsistent circuitで禁止する。
【 RS-FF回路 】
S | R | --[Q]--> | Q | Q |
0 | 0 | --[Q=0]--> | 0 | 1 |
--[Q=1]--> | 1 | 0 | ||
1 | 0 | --[Q=*]--> | 1 | 0 |
0 | 1 | --[Q=*]--> | 0 | 1 |
1 | 1 | --[Q=*]--> | - | - |
【 簡略図 】
RS-FFにおいてSとRを接続(S=R=:D)した回路がD-FF回路である。RS-FFの真理値表の黄色部から見て分かるように、出力が出力の状態に依存せず入力と同じ値を返す。名前はクロック波形の中にこのFFをと1クロック分遅れて(Delay)出力されることに由来する。
RS-FFにおいてS=R=1がinconsistentであったものを改善し、出力結果をQ,Qで反転されるよう機能を変更した回路がJK-FF回路である。JackとKingがQueenを奪い合うことからその名前が付けられたそうである。(➡ [外部リンク])
【 JK-FF回路 】
J | K | --[Q]--> | Q | Q |
0 | 0 | --[Q=0]--> | 0 | 1 |
--[Q=1]--> | 1 | 0 | ||
1 | 0 | --[Q=*]--> | 1 | 0 |
0 | 1 | --[Q=*]--> | 0 | 1 |
1 | 1 | --[Q=0]--> | 1 | 0 |
--[Q=1]--> | 0 | 1 |
【 簡略図 】
JK-FFにおいてJとKを接続(J=K=:T)した回路がT-FF回路である。JK-FFの真理値表の黄色部から見て分かるように、入力がある度(T=1)に出力が反転する(Toggle)。
1bitの移動を行う回路。信号ゲートが開く(SS=1)と最初のRS-FFで蓄えた1bitの情報が次のRS-FFへ転送される。
【 シフト回路 】
【 簡略図 】
不揮発性を実装したメモリ。電源を切っても失いたくない情報の保持に使用される。
略称 | 名前 | 解説 | 用途、補足 |
---|---|---|---|
MROM | Mask ROM | 追加書き込み不可。 | フォントメモリ、電子辞書。単にROMと言った場合MROMを指す。 |
〖E〗PROM | 〖Elasable〗 Programable ROM | 一度だけ書き込み〖と消去〗が可能。 | ブートローダ、BIOS。フラッシュメモリはEPROMの原理で作動している。 |
EEPROM | Electorically EPROM | 書き込みと消去が可能。 | メモリサイトが大きいものは大容量にはしづらい。 |
名前の由来はデータを焼き付ける写真製板の原版がマスクと呼ばれたことに由来する。チップ(ウェハー)を製造する段階で形状によってバイナリ情報を確定する。
ユニポーラトランジスタ/バイポーラトランジスタを使う場合にはゲート/エミッタの回路を切断することで情報が書き込まれる。
PROMのメモリサイトであるMOSFETのゲート部分には他所と絶縁した浮遊ゲート(Floting Gate=FG)に制御ゲート(Control Gate=CG)と呼ばれる電極が取り付けられている。
書き込みには、SからDに電流が流れている状態でCGに高い電圧を加えると電子がDの近くで大きな運動エネルギーを獲得して高熱電子(Hot Electron=HE)になり、その一部がG酸化膜を飛び越えてFGに注入される。注入された電子の負電荷によってFGは負電位になるので、CGから見たセルトランジスタの電圧のしきい値は初期値よりも高くなり、これが1として記憶される。(注入方式)
メモリ消去にはFG内に紫外線を照射し注入された電子にゲート酸化膜を飛び越えさせて基板に放出させるとFGの電圧が初期値に戻り0となる。紫外照射は石英窓を取り付けることで実現されこれが可能となったPROMはEPROMと呼ばれる。紫外線照射は特定のメモリサイトだけに行うことは難しくデータが一括して消去される。
一方、読み出しはCGにセルトランジスタのしきい電圧と初期値の中間の電圧を加えた際のオン/オフによって判断することができる。
【 EEPROM-回路図 】
格納されたデータに任意の順序で読み込みと書き込みができる性質をもつ揮発性記憶装置(VRAM)。どの部分にも同じ時間でアクセスすることが出来る。
略称 | 名前 | 解説 | 例、補足 |
---|---|---|---|
DRAM | Dynamic RAM | データをコンデンサの電荷として蓄えるため常時リフレッシュが必要でこのことからDynamicの名がついた。実行中のプログラムの命令とデータを保持する1次メモリとして使用される。 | メモリサイトが最も少ない回路素子で構成されるため、生産量が最も多く技術進歩の指標にもなる。 |
SRAM | Static RAM | データをFF回路を用いて蓄えるためリフレッシュが不要。アクセス動作が無ければ極く少量の電力で記憶を保持でき、かつ高速な情報の出し入れが可能で2次メモリとして使用される。 | DRAMよりも高価。NVRAMとして使用もされる。 |
DRAMのメモリサイトは、1個のMOSFETとこれに直列接続しかつ設置されたコンデンサ(C)からなる。1bitの情報はコンデンサが充電されていれば/されていなければ1/0として蓄えられる。
書き込みは、W線の電圧を上げて(W=High)MOSFETのゲート電圧をかけた状態でビット線の電圧を上げて/下げてキャパシタを充電する/放電することで1/0を書き込む。
読み出しは、W線を高電圧(High)にした時にCondenserからB線に電荷が流れ出すこと/出さないことを検出(sense)すれば1/0と判断する。
【 DRAM-メモリサイト 】
Word | Bit | Condenser |
H | H | 1 |
H | L | 0 |
H=High, L=Low
FF回路をメモリサイトに用いることによりリフレッシュを行うことなくバイナリ情報を蓄えることが可能になった。
名前 | メモリサイト | 解説 | 例、補足 |
---|---|---|---|
bipolar SRAM | バイポーラトランジスタ x 2 | アクセス速度は速いがより大きなスペースを必要とする。 | |
MOS SRAM | MOSFET x 6 | アクセス速度は遅いがより集積化を容易とする。 | こちらが主流。 |
【 bipolar SRAM-メモリサイト 】
CMOSインバータ(CMOS1=N1+P1,CMOS2=N2+P2)をFF化することでbit情報を蓄える。データ書き込み・読み出しのための転送用のMOSFET(N3,N4)を合わせると計6個のMOSFETからなる。
【 MOS SRAM-メモリサイト 】
名前 | 用途 | 例、補足 |
---|---|---|
スーパーコンピュータ | 大規模科学計算 | ヒトゲノム計画 |
メインフレーム | 科学計算、事務処理 | サーバ |
ミニコンピュータ | PC | デスクトップ、ラップトップ |
マイクロコンピュータ | 組み込み用 | iphone、車載コンピュータ、現金自動預払機(ATM) |
名前 | 用途 | 例、補足 |
---|---|---|
Raspberry Pi | ARMプロセッサを搭載したシングルボードコンピュータ。 |
小さな組み込みコンピュータに搭載されているプロセッサのことをマイクロプロセッサ(MP=MPU)という。
データをリスト=配列の各成分にどのように配置するかは重要な問題であり、そのための基本的な考え方が知られている。
名称 | 解説 | 例、補足 |
---|---|---|
木 | 2次元平面上に配置された点が線分でつながれた集合。 | UNIXファイルシステムは多分木multi-tree構造をしている。➡C-2分木 |
stack | 新規データの格納pushと取り出しpopがデータの最上段で行われる。 | よく食堂の皿やトレイで例えられる。LIFOの処理に適したデータ構造。➡C-スタック |
queue | 待ち行列。データの格納enqueue/取り出しdequeueは配列の左端/右端で行われる。 | FIFOの処理に適したデータ構造。➡C-キュー |
2次元平面上に配置された点が線分でつながれた集合。図示する場合上下を逆さまに書いて根が最上部になるように書くことが多い。
名称 | 解説 | 例、補足 |
---|---|---|
枝 branch | 点と点を結ぶ線分のこと。枝の上部/下部の点を親/子と呼ぶ。 | |
節点 node | 下部に枝をもつ点のこと。SY:節点につながれた枝のうち上部/下部の枝を親枝/子枝という。 | |
根 root | 木の最深部(=最上部)にあり上部に親(枝)を持たない節点のこと。 | |
葉 leaf | 下部に子(枝)を持たない点のこと。 |
節点(node)がN個の子(枝)で構成されている木のことをN分木と呼ぶ。
名称 | 説明 | 補足 |
---|---|---|
深さ優先 | 節点を基点に隣接点(子)を再帰的に訪問し、終わったら一つ前の節点(親)に戻って他方に訪問する。 | stackを使用。 |
幅優先 | 浅い節点から同じ深さを左から右に順に走る。 | queueを使用。 |
名称 | 説明 | 補足 |
---|---|---|
先行⇄行きがけ順 | 節点→左部分木→右部分木 | pre-order |
中間⇄通りかけ順 | 左部分木→節点→右部分木 | in-order |
後行⇄帰りかけ順 | 左部分木→右部分木→節点。 | post-order |
ページングなどにおけるデータ(ページ)の入れ替えを行う処理にはいくつかの方法が知られている。
名称 | データアウト対象 | 例、補足 |
---|---|---|
LIFO《FIFO》 Last《First》-In-First-Out | 最後《最初》にデータインしたデータ。 | 後入れ先出し《先入れ先出し》。データの参照頻度が全く考慮されていない。 |
LFU《LRU》 Least Frequently《Recently》 Used | 最も参照されていない《古い》データ。 | 参照頻度《時間》を考慮しているが、優先順位の低いジョブが常に追い出される。 |
WS Working-Set | 各ジョブ毎にCPU使用時間を基に一定時間内に参照されなかったデータ。 | ジョブ単位でLRU方式でデータの入れ替えを行う。 |
時代 | 年代 | 素子 | 処理速度 | 相対コスト性能比 |
---|---|---|---|---|
歯車時代 | 1642-1833 | 歯車 | - | - |
電動時代 | 1884-1943 | 歯車、パンチカード | - | - |
真空管時代(第1世代) | 1949-58 | 真空管 | 1ms | 1 |
トランジスタ時代(第2世代) | 1958-65 | トランジスタ | 10μs | 35 |
IC時代 (第3世代) | 1965-71 | IC | 1μs | 900 |
LSI期(第3.5世代) | 1971-80 | LSI | 10ns | |
VLSI期 (第4世代) | 1980-90 | VLSI | 10ns | 2,400,000 |
ULSI期(第5世代) | 1990-2005 | ULSI | 100ps | 6,200,000,000 |
物理学者B.Pascalが世界で初めてピン歯車式加算器の開発に成功した。パスカルはこの加算器で2の補数を使った減算を行っていた。
数理物理学者LeibnizはB.Pascalの作成した加算器の原理を応用し、加減算を繰り返すことで乗除算を可能にする乗算器を開発した。この計算機には1つのハンドルがついていて順回転と逆回転を行うことで加減算を実装していた。
フランス人J.M.Jacquardはパンチカードに穴を空けることでカラーの模様の型や色を定めるペダル式自動織器を開発した。今日のコンピュータプログラムの元祖と言える。
イギリスのケンブリッジ大学の数学者C.Babbageは、ジャカールが自動織器で用いたパンチカード方式を採用し、計算手続きとデータを蓄える「貯蔵装置」とそれに計算を行う「加工装置」を内蔵した歯車式計算機械「解析エンジン」を開発した。解析エンジンは今日のコンピュータが有する基本的性能であるメモリ、プロセッサ、システムソフトウェアを備えており、バベッジは「現代コンピュータの父」と呼ばれている。
バベッジの助手だったエイダ女史は解析エンジンのプログラムを作成、世界最初のプログラマとされている。
アメリカの商務省国勢調査局に勤めていたH.Hollerithはパンチカードでデータを入力する電動会計機を発明し、1890年に行われた国勢調査の集計に用いられた。その後間もなくしてHollerithはTabulating Machine Company(TMC)を設立しこれが現在のIBM社に発展、Hollerithが考案したパンチカードや文字コード(Hollerithコード)は現在のIBM社に引き継がれている。
イギリスのA.M.Turingは1936年計算可能性に関する論文を提出し、ハードウェアとして読み書き可能なテープとヘッド、ソフトウェアとしてテープに印字する記号と状態と状態間の遷移を表すオートマトンによって、コンピュータ構成要素を備えた理論的機械を考案した。(Cf. Mathematica/TuringMachine)
ハーバード大学の物理学者H.AikenがIBM社と共同で電気リレー式計算機Mark Iを開発、プログラムが印字された穿孔テープを用いて処理を実行した。
ペンシルバニア大学の電気技術者J.P.Eckertと物理学者J.W.Mauchlyが陸軍兵器局とIBM社の全面協力を得て真空管を用いた計算機ENIACを開発、Mark Iで2時間かかった弾道計算が数秒で計算できるようになった。メモリはまだ搭載されておらず、プログラムは外付けのプラグボード(コントロールパネル)の配線によって実現されていた。
1947年のクリスマスイヴにベルシステムに所属するショックレー(W.Shockley)、バーディーンらが開発。(cf. 朝永『紀行と閑談』)
Cambridge大学のM.V.WilksがENIAC開発中のペンシルバニア大学に訪問しイギリスに帰国後、プロセッサ内蔵方式の計算機開発に着手、コンピュータ構成要素を実装する世界最初のコンピュータEDSACをEDVACより1年速く完成させた。
ENIAC開発後間もなくプロセッサ内蔵方式の計算機の開発が行われ、Princeton大学の数理物理学者J.von.NeumannがRCAの資金協力を得てコンピュータ構成要素を実装する世界最初のコンピュータEDVACを開発、陸軍兵器局で使用された。主メモリの素材には水銀遅延装置が用いられた。
J.P.EckertとJ.W.MauchlyはENIAC開発後大学を辞め1946年会社を設立、国勢調査局から新しい計算機の注文を受け開発に取り掛かった。しかし資金繰りが悪化し当時のレミントンランド社(→スペリランド社→現ユニバック社)に吸収されるも、1951年世界最初の商用コンピュータUNIVAC Iを完成させた。UNIVAC Iは国勢調査局に納入され国勢調査の集計に用いられ、1950年代性能面でコンピュータ業界をリードした。
ユニバックに後れを取ったIBM社は50年代に続々と新機種を打ち出し販路を広げていった。この頃から主メモリとして磁気ドラムではなく磁気コアが初めて用いられ補助記憶装置に磁気テープが用いられた。
ユニバックはIBM650の対抗機種としてトランジスタを初めて用いたコンピュータUNIVAC80を開発した。
TI社のJ.Kilbyとフェアチャイルド社のR.Noyceは1959年独立に集積回路(IC)の開発に成功した。
60'前半になると大型機ではCDC社が1963年CDC3600,6600を、中型機ではハネウェル社がH200を出荷しIBMの対抗機種が続々と出現し始めた。市場を脅かされた IBM社は他社の追随を断ち切る対抗機種としてICを初めて用いたコンピュータIBM360を開発し1965年に初出荷、生産が追い付かないほどの大成功を収めた。
IBM社はIBM360の改良機種としてLSIを搭載したコンピュータIBM370を1971年に初出荷、主メモリとして半導体メモリが実装され仮想記憶が実現された。
1978年にUCB(University of California, Berkeley)に客員教授として着任したK.Thompsonが中心となってBSD-UNIX(Berkeley Software Distribution)の開発が行われた。
SUN-OS社がTCP/IPプロトコルを実装したネットワークSunOS1.0を開発した。
スイスにある素粒子物理学の研究機関である欧州合同原子核研究機構(CERN➡[外部リンク])に集まった各国の研究者の間で文書情報を簡単にやり取りする目的で、Tim Berners-Leeがハイパーリンク構造をもつネットワークを開発、その基本仕様が1989年に公開され、今日のWWW=インターネットの土台を築いた。当時は米NeXT社(後にApple社が買収)のSTEPというOS環境を用いる必要があったため、CERNはSGMLを基にHTML0の開発を始め1990年にHTML/0.9を公開、これをきっかけとしてWWW利用におけるOSに依存しないためのプロトコルが整備されていった。
詳しくは『IA-32 インテル® アーキテクチャ・ソフトウェア・デベロッパーズ・マニュアル』[上巻][下巻])
名前 | 解説 | 例、補足 |
---|---|---|
x86 | インテル初期のCPU=Intel 8086互換の32bitCPU。互換メーカーのCPUやその関連技術もx86で総称される。 | Intel 8086、AMD |
x64=x86-64 | x86を64bitに拡張したCPUおよびその技術の総称。 | Intel 64 |
IA-32 | Intel Architecture 32bit CPU。 | Pentium |
IA-64 | Intel Architecture 64bit CPU。IA-32の後継。 | Itanium |
チップ CPU ピン |
== |
|| || || || ロー カル バス || || || || |
== == |
アドレスバッファ データバッファ |
== == |
====== || A0-31情報 || 主メモリ || D0-31情報 || ====== |
====== アドレスバス データバス ====== |
====== || A0-15情報 || I/Oポート || D0-31情報 || ====== |
名前 | ニーモニック《bit数》 | |
---|---|---|
実モード | 保護モード | |
汎用レジスタ | AX,BX,CX,DX,SI,DI《16》 | EAX,EBX,ECX,EDX,ESI,EDI《32》 |
ベースポインタ | BP《16》 | EBP《32》 |
コントロールレジスタ | CR0-CR4《32》 | |
命令ポインタ | IP《16》 | EIP《32》 |
スタックポインタ | SP《16》 | ESP《32》 |
フラグレジスタ | FLAGS《16》 | EFLAGS《32》 |
セグメントレジスタ | CS,DS,ES,SS,FS,GS《16》 | |
IDTレジスタ | IVTR《64》 | IDTR《48》 |
GDTレジスタ | TR《64》 | GDTR《48》 |
ニーモニック | 解説 | 例、補足 |
---|---|---|
A0-A31 | 32本のアドレスピン。 | 32bit=4GB=00000000H-FFFFFFFFH |
D0-D63 | 64本のデータピン。 | 64bit=8GB=000000000000H-FFFFFFFFFFFFH |
INTR | 割り込み受信ピン。EFLAGSのIFフラグによってCPUが割り込みを受信するか否かが決まる。 | 8259A(補助機器)や外部割込みコントローラに接続されている。 |
NMI | 不可避割り込み受信ピン。CPUはNMI信号による割り込み受信を拒否できない。 | Non-Maskable Interrupt.メモリモジュールに接続されている。 |
ニーモニック | 意味 | 補足 |
---|---|---|
int ベクタ番号 | ベクタ番号に相当するソフトウェア割り込みの発生 | 対応するハンドラが呼び出される。 |
lidt | IDTRにIDTの32bitの先頭アドレスと16bitの上限サイズが書き込まれる。 | =Load IDT. この命令以降CPUは割り込みと例外を処理できるようになる。 |
cli | EFLAGSのIFフラグのクリア | INTR信号をマスクする。 |
lea | Load Effective Address |
命令後 操作対象, 参照元
である。名前 | 役割 | アクセスメモリ | 例、補足 |
---|---|---|---|
リアル(アドレス)モード real-address mode |
主にMS-DOSなどの8086用に書かれたプログラムを実行させるためのモードで、上位互換性をもつ。 | A0-A19 | 電源投入後やリセット後はこのモードで動作する。 |
プロテクトモード protect mode |
80386で追加された機能であるセグメントによるメモリやタスクの管理保護機能やページング機能を使うためのモード。 | A0-A31 | x86用OSの大半はこのモードで動作する。 |
仮想8086モード virtual 8086 mode |
プロテクトモードの機能を働かせたまま8086用プログラムが実行できる互換環境をもつモード。 |
セグメントの属性情報を記述した8バイト=64bitのデータ構造体。
名前 | 役割 | bit数 | 例、補足 |
---|---|---|---|
ベースbase | セグメントが始まる場所のこと。そのアドレスを表す。 | 32bit | 住所でいえば、役場や県庁所在地に相当。 |
リミット | セグメントのサイズ。Gフラグ=0/1の場合1MB/4GB。 | 20bit | プログラムがリミットを超えた領域のアドレスにアクセスしようとするとセグメンテーションフォルトを発行する。 |
Gフラグ | リミットの単位。Gフラグ=0/1の場合1B/4KB。 | 1bit | |
Dフラグ | データサイズの指定。Dフラグ=0/1の場合16bit/32bit。 | 1bit | 保護モードにおけるオプション。 |
Pフラグ | セグメントがメモリ上に存在する/しないとき1/0になる。 | 1bit | =Present. Linuxではセグメント全体がスワップアウトすることはないので常に1となる。 |
DPL | セグメントへのアクセスに必要なCPUの特権レベルを表す。 | 2bit | =Descriptor Privilege Level |
タイプ | セグメントのタイプを指定。 | 3bit |
値 | 役割 | 補足 |
---|---|
0/1 | 読み出し専用/読み書き可能データセグメント |
2/3 | 読み出し専用/読み書き可能スタックセグメント |
4/5 | 実行専用/実行と読み出し可能コードセグメント |
6/7 | 実行専用/実行と読み出し可能近フォーミングコードコードセグメント |
セグメントディスクリプタからなる配列。システムに一つだけ準備する。
セグメントディスクリプタからなる配列。プロセスに一つだけ準備する。
各セグメントがベースアドレス=0から始まりその大きさを4GB(リミット=FFFFFHかつGフラグ=1)としてセグメントディスクリプタによって管理される設定。そのため仮想メモリ空間内のすべてのアドレスが32bitのリニアアドレスで表現される。
ニーモニック | 名前 | bit数 | セグメントタイプ | 例、補足 | |
---|---|---|---|---|---|
CS | Code Segment | 16bit | 4-7 | CSレジスタが指すコードセグメントのDPL=CPL | |
DS | Data Segment | 16bit | 0-3 | ||
SS | Stack Segment | 16bit | 1,3 | ||
ES/FS/GS | 16bit | 0-3 |
名称 | 説明 | 補足 |
---|---|---|
オフセット offset | メモリサイトがもつアドレスのセグメントベースからのずれのこと。セグメントの大きさ分だけある。 | 住所で言えば番地に相当。 |
論理アドレス | セグメントレジスタとオフセットの組によって特定されるアドレス。 | セグメントレジスタ(値):オフセット、で表示される。 |
リニアアドレス | セグメントベースにオフセットを加えたものとして指定されるアドレス。 |
論理アドレス |
セグメンテーション変換 ---> ↓アクセス違反↓ セグメンテーションフォルト |
リニアアドレス 一般保護例外 |
ページング ---> ↓アクセス違反↓ ページフォルト |
物理アドレス |
最初のページングアドレス変換の情報を記述した32bit=4byteのデータ構造体。
名前 | 役割 | bit数 | 例、補足 |
---|---|---|---|
ページ表ベースアドレス | ページ表のベースアドレスを表す。 | 20bit | |
R/Wフラグ | ページの読み書き権限の設定。R/W=0/1の場合読み出し専用/読み書き両用。 | 1bit | =Read/Write flag. |
U/Sフラグ | ページにアクセスできる特権レベルの指定。 | 1bit | =User/Supervisor flag. |
1024個の4bytePDEからなる4KBの配列。ページングによる最初のアドレス変換の変換表を構成する。
2番目のページングアドレス変換の情報を記述した32bit=4byteのデータ構造体。
名前 | 役割 | bit数 | 例、補足 |
---|---|---|---|
ページベースアドレス | ページフレームのベースアドレスを表す。 | 20bit | |
R/Wフラグ Read/Write | ページの読み書き権限の設定。R/W=0/1の場合読み出し専用/読み書き両用。 | 1bit | |
U/Sフラグ User/Supervisor | ページにアクセスできる特権レベルの指定。 | 1bit |
1024個の4bytePTEからなる4KBの配列。ページングによる2番目のアドレス変換の変換表を構成する。
プロテクトモードにおけるCPUが検出したプログラムエラーによるソフトウェア割り込みやハードウェアの異常な動作によるマシンチェック割り込みによって生じる。
名前 | 解説 | 原因 | 例、補足 |
---|---|---|---|
fault | プロテクトモードにあるCPUはフォルトを起こした命令を実行する直前の状態に戻し割り込みハンドラを呼び、ハンドラから戻って来た時の実行ポインタ(IPレジスタ)はフォルトを起こした命令を指す。そのため同じ場所からプログラムの実行を再開できる。 | セグメントやページの保護機能。 | ページフォルト、セグメンテーションフォルト |
trap | CPUは割り込みハンドラを呼びだしハンドラから戻って来た時の実行ポインタはトラップを起こした次の命令を指す。そのため例外となったプログラムは再実行を行わない。 | INTOやint3命令の実行。 | プログラムのデバッグなど。cf.linux-trap |
abort | Pentium以降のCPUはチップの内部状態をチェックする機構を備えており、この機構がアボートを発生させる。 | 致命的なエラー。 | ハードウェアエラー、システムが参照する表の不一致など |
割り込み | 解説 | 原因 | 例、補足 |
---|---|---|---|
ソフトウェア割り込み | int ベクタ番号命令の実行。 | ||
ハードウェア割り込み | INTRやNMI信号の受信。 |
値 | 意味 | タイプ | 原因 |
---|---|---|---|
0 | 除算エラー | fault | 0で除算するDIV/IDIV命令を行った |
1 | debug | fault/trap | EFLAGSレジスタのTフラグ=1 |
2 | NMI信号 | 割り込み | 強制割り込み |
3 | ブレークポイント | trap | デバッガがプログラム中に埋め込む |
4 | オーバーフロー | trap | EFLAGSレジスタのOFフラグ=1でINTO命令を実行 |
5 | BOUND範囲外 | fault | 有効範囲外のアドレス値を指定してBOUND命令を実行 |
6 | 無効オペコード | fault | CPUが無効なマシン語を検出 |
7 | デバイス使用不可 | fault | CR0レジスタのTSフラグ=1でMMX命令を実行 |
8 | ダブルフォルト | abort | ハンドラを実行中に別の例外が発生しそれを順番に実行できない状態に陥る |
10 | 無効TSS | fault | 無効なTSSをもつプロセスに切り替えようとした |
11 | セグメンテーション不在 | fault | リミットを超えてアクセス範囲外のメモリにアクセスしようとした |
12 | スタック不在 | fault | Stack segmentを超える命令を実行しようとした |
13 | 一般保護例外 | fault | 保護モードの保護機能に反する命令を実行しようとした |
14 | ページ不在 | fault | 実メモリ空間に存在しないページフレームにアクセスした |
16 | 浮動小数点エラー | fault | 浮動小数点回路がエラーを検出した |
17 | 整列化確認 | fault | オペランドのアドレスが正しく整列されていない |
18 | マシンチェック | abort | chipに依存。 |
異なる特権レベルのコードセグメントに制御を移すために用いるデータ構造体。保護モードで使われるハンドラの仮想アドレスや実行権限を設定する。
名前 | 役割 | 例、補足 |
---|---|---|
タスクゲート | タスク・スイッチングに使用される。 | Linuxでは使わない。 |
コールゲート | 特権レベルを変更しながらプログラムを実行する。 | Linuxでは使わない。 |
割り込みゲート | 特殊なコールゲート。ハンドラを呼び出す際FLAGSのIFフラグをクリアする。 | Linuxでは割り込みに対処する。 |
トラップゲート | 特殊なコールゲート。ハンドラを呼び出す際FLAGSのIFフラグをクリアしない。 | Linuxでは例外に対処する。 |
名前 | 役割 | bit数 | 例、補足 |
---|---|---|---|
オフセット | セグメント内でのハンドラのオフセットアドレスを表す。 | 16bit | |
セグメントセレクタ | ハンドラが格納されているコードセグメントのセレクタを表す。 | 16bit | LinuxではKERNEL_CSを指す。 |
ゲートデスクリプタを並べた配列。
主要参考文献・役立ちサイト ⇧ top ⇧
D.A.Patterson+J.L.Hennessy | 『コンピュータの構成と設計』 | 著者らが手がけたMIPSを使ったハードウェアの解説。「パタヘネ」 |
パソコン初心者講座 | 『目指せ!PCマスター』 | 用語解説から自作パソコン入門まで。 |
定道 宏 | 経営情報学講座1『情報処理概論』オーム社 | 古い記述が見受けられるが、入門書として良書ではないかと思う。 |
白崎博生 | 『Linuxのブートプロセスをみる』 | ASCII出版。KADOKAWAで復刊されている。 |
Lecture Notes of NAGASAKA Yasunori | 『デジタル電子回路』 | |
EdrawMax | プロな電気回路図作成ソフト | 部分的にフリーで使える。 |
水魚堂の回路図エディタ | 回路図エディタBSch3V | フリーで使える。 |
(SY comment)
会社単位で例えるとインターフェースは営業と言える。