0章 linuxカーネルを読む前に最低限知っておくべきこと

47
Linux カーネルのソースコードを読む前に 最低限知っておくべきこと mao Web >http://www.pridact.com Twitter >https://twitter.com/rivarten Blog >http://rivartender.blog.fc2.com Mail >[email protected]

Upload: mao999

Post on 23-Feb-2017

1.467 views

Category:

Software


0 download

TRANSCRIPT

Linuxカーネルのソースコードを読む前に最低限知っておくべきこと

mao

Web >http://www.pridact.comTwitter >https://twitter.com/rivartenBlog >http://rivartender.blog.fc2.comMail >[email protected]

はじめに

カーネルのソースコードを読むのはダレ得?

・カーネルの動作を知らなくても仕事は出来る・カーネルソースを読まなくても仕事は出来る

…etc 読まなくていい理由が沢山

Just for Fun(Just for Fun: The Story of an Accidental Revolutionary より )

純粋な好奇心と楽しさを大切に

はじめに

概要 – 最低限知っておくと       ハッピーになれること

1.カーネル理解の方法色んな人がカーネルの理解をしようと挑戦している。色んな方法、とっかかりがある。

2.コンピュータアーキテクチャの概要各概念やキーワードの位置づけが分かる。知識を体系的に整理できる。徐々に覚えていくもの。

3.CPUのことレジスタは、メモリ管理・プロセス切り替え等で頻出。特にx86(i386)や ARMにおける構造を知っておくと良い。

4.マザーボードの構成PCの全体像を捉えるのにちょうど良い。

概要 – 知らなくてもハッピーになれること

● コンピュータ関係の歴史基本的には知らなくても大丈夫

ただし知っていれば理解は深まるだろう

必要と感じた時に調べよう

カーネル参考文献

<参考書> ~基本的に古い情報だが、基本は学べる~  ・詳解LINUXカーネル 第3版(O'REILLY  ・Linuxカーネル2.6 解読室(Softbank Creative  ・Linuxカーネル解析入門(工学社  ・Modern Operating Systems 3e International              (Pearson,Andrew S.Tanenbaum) ~初期化部分を知りたいなら~  ・新装改訂版Linuxのブートプロセスを見る         (KADOKAWA/アスキー・メディアワークス)<参考Web>・ Linux Cross Reference[http://lxr.free-electrons.com]  最新カーネルのソースコードをブラウザで読める。

この資料について

● 間違っていたらご指摘をお願い致します。● アセンブラや CPUの詳細が気になる人は、各自調べて下さい。

1.カーネル理解の方法 (1) - 心構え1.【ソース解析】 linuxカーネルソースを読む 先人の苦労

  - NAVER まとめ

http://matome.naver.jp/odai/2134411943144485801

2.Yakst - Linuxカーネルハッカーになる4つの方法

https://yakst.com/ja/posts/156

3.Linuxカーネルの読み方 - Naoya Ito

http://image.gihyo.co.jp/assets/files/event/2008/24svr/report/2-24svr-TechMTG-ito.pdf

4.はじめてのカーネルソース

  - 第 1回 どうしたら読めるようになるのか: ITpro

http://itpro.nikkeibp.co.jp/article/COLUMN/20071024/285378/

1.カーネル理解の方法 (2) - 方法

1.システムコールから読む

2.ブートから読む (非推奨 )

3.本で概要を掴んでから読む

4.テストプログラムをトレース

5.カーネルモジュールを作成

6.カーネルビルド

7.勉強会に参加…etc

私は本で概要を掴んでからソースを読んでいます。状況に応じて方法を変えましょう。

1.カーネル理解の方法(3) - ソースコードを読むコツ

● 読む対象を絞る テーマを決める

● 全体を把握する ソースツリー

● 概要を掴んでおく● データ構造を把握● ソースを読みやすくしてくれるツールの利用GNU GLOBAL,Linux Cross Reference etc...

2.コンピュータアーキテクチャ(1) - 概要

コンピュータ(主にハード)における基本設計・設計思想などの基本設計概念

● 命令セットアーキテクチャ  RISC、 CISC、 VLIW、 EPICアーキテクチャ

● マイクロアーキテクチャ 演算アーキテクチャ、CPU制御アーキテクチャ、CPU高速化アーキテクチャ CPUバスアーキテクチャ、マルチプロセッサアーキテクチャ、 マルチスレッドアーキテクチャ

● システムアーキテクチャ 制御アーキテクチャ、バスアーキテクチャ、メモリアーキテクチャ、 ネットワークアーキテクチャ、オペレーティングシステムアーキテクチャ、 分散処理アーキテクチャ

 それぞれの詳細を知っていればカーネルの理解は深く早くなる。私は、殆ど理解していない。

2.コンピュータアーキテクチャ(2) -        マイクロアーキテクチャ

● マルチプロセッサアーキテクチャ ・SMP(Symmetric Multiprocessing)   対称型マルチプロセッシング    多くのマルチプロセッサはこの方式

 ・NUMA(Non-Uniform Memory Access)

● マルチプロセッサにおいての説明は、基本的に SMP前提の説明となっている。

● 今のところ CPUは基本的に SMPだという事を覚えておけば、特に意識する必要は無い。

3.CPUのこと(1) - CPUアーキテクチャ

● alpha● arm,aarch64,arm26● cris● frv● h8300● i386,x86● x86_64● ia64,itanium64● m32r● m68k,m68knommu

● mips● parisc● ppc,ppc64● s390● sh,sh64● sparc,sparc64● um● v850● powerpc, power● avr32        ...etc

コンピュータにおいて、これだけのコンピュータアーキテクチャの組み合わせがある。

3.CPUのこと(2) - x86のレジスタ

● レジスタCPU内部にある高速なメモリ。メインメモリとは違い、用途が限られているものが殆ど。論理回路において、フリップフロップなどにより状態を保持する装置。 ・汎用レジスタ・セグメントレジスタ・命令ポインタ・フラグレジスタ・制御レジスタ・メモリ管理レジスタ・モデル固有レジスタ・その他レジスタ デバッグレジスタ、x87FPUレジスタ、 MMXテクノロジレジスタ、XMMレジスタ etc...

3.CPUのこと(3) - x86 - 汎用レジスタ

8bit 16bit 32bit 名前 特徴・説明

AH,AL AX EAX Accumulator 汎用レジスタ

BH,BL BX EBX Base メモリアドレスを指定する場合に使用

CH,CL CX ECX Counter転送や繰り返しの回数を数えるカウンタとして使用

DL,DL DX EDX Data 汎用レジスタ

SI ESI Source Indexストリングス命令で移動元のアドレスとして使用

DI EDI Destination Indexストリングス命令で移動先のアドレスとして使用

SP ESP Stack Pointer スタックのトップアドレス

BP EBP Base Pointer スタックのベースアドレス

3.CPUのこと(4) - x86 - セグメントレジスタ(1)

● セグメントレジスタセグメント(領域 )を指定する為の16bitのレジスタcs,ds,ss,es,fs,gs

● セグメント可変長のまとまったメモリ空間のこと。情報の属性などによって分類されたグループのこと。セグメントに分割して管理する方式をセグメント方式という。  

 ※セグメント方式 - Wikipedia   https://ja.wikipedia.org/wiki/%E3%82%BB%E3%82%B0%E3%83%A1%E3%83%B3%E3%83%88%E6%96%B9%E5%BC%8F

3.CPUのこと(5) - x86 - セグメントレジスタ(2)

16bit 名前 特徴・説明

cs Code Segment

実行コード領域のセグメント下位2bitを RPL(Requestor Privilege Level)/リクエスタ特権レベルという。Linuxカーネルでは、CPL(Current Privilege Level)/現行特権レベルとして扱っている。0:カーネル 3:ユーザ

ds Data Segmentデータ領域のセグメント。グローバルな静的データが置かれる。

ss Stack Segmentスタック領域のセグメント。現在実行中のプログラムのスタック。

es Extra Segment それ以外のセグメント。汎用セグメント。

fs Eに続く。汎用セグメント。

gs Fに続く。汎用セグメント。

3.CPUのこと(6) - x86 - 命令ポインタ

● 命令ポインタ IP,EIP次に実行する命令を指し示すポインタ。(現在のコードセグメント内 )・基本的には順番に進められるが、  jmp,call,retなどの命令で色々な場所に移動する。・EIPレジスタに直接アクセスすることはできないが、  jmp,call,retなどで、暗黙的に制御することが可能。

16bit 32bit 名前 特徴・説明

IP EIP Instruction Pointer

次に実行する命令を指し示すポインタ。現在のコードセグメント内のオフセット

3.CPUのこと(7) - x86 - フラグレジスタ(1)

● フラグレジスタ EFRAGS32bitで構成されるレジスタ。各種演算結果、制御フラグ、システムフラグ等が格納される。

・フラグ種別 S:ステータスフラグ。   演算結果の状態。 C:制御フラグ。    bit10のDFのみ該当。 X:システムフラグ。   OSやアプリケーションの動作を制御する。   このフラグをアプリケーションが変更してはいけない。※以降、赤字ビットのみ注目すればよい

3.CPUのこと(8) - x86 - フラグレジスタ(2)

bit 種別 flag 名前 説明 関連命令

0 S CF Carry Flag キャリーフラグ

MSBで carry(桁上がり)か borrow(桁下がり)が生じたときに1がセットされる。符号なし演算のoverflowの発生

stc,clc,cmc

1 1 予約

2 S PF Parity Flag パリティフラグ

演算結果の最下位バイトで、値が 1 のビットが偶数個なら 1 がセットされる

3 0 予約

4 S AF Auxiliary Carry Flag

補助キャリーフラグ

ビット 3 で carry か borrow が生じた時に 1 がセットされる。 BCD 演算で使用。

5 0 予約

6 S ZF Zero Flag ゼロフラグ 演算結果が 0のとき 1 がセットされる

7 S SF Sign Flag 符号フラグ 演算結果の MSB がそのままセットされる

8 X TF Trap Flag Debug用フラグ1:Single Step Modeが有効 ,0:無効

9 X IF Interrupt Enable Flag

割り込み許可フラグ

1: 割り込み許可 0: 割り込み禁止 sti,cli

3.CPUのこと(9) - x86 - フラグレジスタ(3)

bit 種別 flag 名前 説明 関連命令

10 C DF Direction Flag 方向フラグ ストリング命令を、1:上位(マイナス)に向かって処理0:下位(プラス)に向かって処理

std,cld

11 S OF Overflow Flag オーバーフローフラグ

計算結果がoverflowもしくはunderflowした時に1がセットされる

12X IOPL

I/O Privilege Level

I/O特権レベル

現在実行しているプログラムのI/O特権レベル13

14 X NT Nested Task Flag

ビット3で carryか borrowが生じた時に1がセットされる。BCD演算で使用。

15 0 予約

16 X RF Resume Flag

17 X VM Virtual-8086 Mode

仮想 8086モード

18 X AC Alignment Check

アラインメントチェック

1:アラインメントチェック有効 CPL=3のときアラインメントチェック例外を 発生させる事が出来る

3.CPUのこと(10) - x86 - フラグレジスタ(4)

bit 種別 flag 名前 説明 関連命令

19 X VIF Virtual Interrupt Flag

20 X VIP Virtual Interrupt Pending

21 X ID Identification Flag

識別フラグ このビットを変更出来れば、CPUID命令を実行できる

22~31

予約

3.CPUのこと(11) - x86 - 制御レジスタ(1)

● 制御レジスタCPUを制御する各32bitのレジスタ。cr0,cr1,cr2,cr3,cr4(Control Register)・cr0 プロセッサの動作モードと状態を制御するシステム制御フラグ・cr1 全て予約済み・cr2 ページフォルトを発生させた命令がアクセスしようとしたメモリの リニアアドレス・cr3 ページディレクトリのベースの物理アドレス、PCDフラグ、PWTフラグ・cr4 アーキテクチャ上の各種拡張機能の設定。 拡張機能の為、CPUID命令でそのフラグが使用可能か確認してから使用。※以降、赤字ビットのみ注目すればよい

3.CPUのこと(12) - x86 – 制御レジスタ(2) – cr0 (1)

bit flag 名前 説明0 PE Protect Enable 1: 保護モード  0: 実アドレスモード

1 MP Monitor Coprocesser WAIT( または FWAIT) 命令と TS フラグ (cr0の bit3) との相互作用を制御する  MP=1 & TS=1 ⇒ WAIT 命令はデバイス使用不可能例外を生成  MP=0 ⇒ WAIT 命令は TS フラグの設定を無視

2 EM Emulation 1: プロセッサは内部または外部の FPU を持っていない0:FPU を持っているEM=1 の時に浮動小数点命令を実行すると、デバイス使用不可能例外が発生

3 TS Task Switch FPU が新しいタスクによって実際にアクセスされるまで、タスク切り替え時の FPU コンテキストの保存を遅延させることができるTS=1 ⇒ 浮動小数点命令の実行前に、デバイス使用不可能例外が発生TS=1 & MP=1 ⇒ 浮動小数点命令または WAIT/FWAIT 命令の実行前に、 デバイス使用不可能例外が発生

4 ET Extension Type 拡張タイプ。最近の CPU では 1 で予約されている。

5 NE Numerical Error 1:FPU エラーをレポートする為の標準メカニズム Enable0:PC スタイルの FPU エラーレポートメカニズム Enable

3.CPUのこと(13) - x86 – 制御レジスタ(3) – cr0 (2)

bit flag 名前 説明

6~15 予約

16 WP Write Protect 1: 特権レベルプロシージャのユーザレベル読み取り専用ページへの書込み禁止0: 許可Unix 系 OS で使用され、コピーオンライト方式による新しいプロセス生成の際のフォークを簡単にする。

17 予約

18 AM Alignment Mask AM=1 & EFLAGS:AC=1 ⇒ アラインメントチェック有効          CPL=3のときアラインメントチェック例外を            発生させる事が出来る

19~28 予約

29 NW Not Write Through NW=0 & CD=0 ⇒ キャッシュをヒットする書込みに対してライトバックまたはライトスルーが有効になり、無効かサイクルが有効になる

30 CD Cash Disable CD=0 & NW=0 ⇒ プロセッサの内部(および外部)キャッシュにある物理メモリ全体のメモリ一のキャッシングを有効

31 PG Paging 1:ページング有効0:無効。全てのリニアアドレスを物理アドレスとして扱う。※cr0:PE=0 ⇒ PGフラグは無効

3.CPUのこと(14) - x86 – 制御レジスタ(4) – cr3

bit flag 名前 説明

0~2 予約

3 PWT Page Write Through 現在のページディレクトリのライトスルー / ライトバックキャッシュポリシーを制御1: ライトスルーキャッシング有効0: ライトバックキャッシング有効内部キャッシュ ( 存在するなら L1,L2 の両方 ) だけに影響を与える。cr0:PG=0 or cr0:CD=1 ⇒ PWT フラグは無効

4 PCD Page level Cache Disable

現在のページディレクトリのキャッシングを制御1: ページディレクトリのキャッシングが抑制される0: ページディレクトリをキャッシュできる内部キャッシュ ( 存在するなら L1,L2 の両方 ) だけに影響を与える。Cr0:PG=0 or cr0:CD=1 ⇒ PCD フラグは無効

5~11 予約

12~31 Page Directory Base ページング機能を ON にする前に、ページディレクトリテーブルのアドレスの上位 20bit をセット

3.CPUのこと(15) - x86 – 制御レジスタ(5) – cr4

bit flag 名前 説明

0 VME 仮想 8086 モード拡張

1 PVI 保護モード仮想割り込み

2 TSD タイムスタンプディスエーブル

3 DE デバッグ拡張

4 PSE Paging Size Extensions 1:4MB ページ  0:4KB ページ

5 PAE Physical Address Extensions

1:36bit 物理アドレスを参照するページングメカニズムが有効0:32bit 物理アドレス

6 MCE マシンチェックイネーブル

7 PGE ページグローバルイネーブル

8 PCE 性能モニタリングカウンタイネーブル

9 OSFXSR

10 OSXMMEXCPT

11~31 予約

3.CPUのこと(16) - x86 – メモリ管理レジスタ(1)

● グローバルディスクリプタテーブルレジスタgdtrメインメモリ上のグローバルディスクリプタテーブル(GDT)のアドレス、大きさ。48bit(6byte)。lgdtアセンブリ命令で値をセットする。

● ローカルディスクリプタテーブルレジスタldtr現在使用しているローカルディスクリプタテーブル(LDT)のアドレス、大きさ。48bit(6byte)lldtアセンブリ命令で値をセットする。

bit 内容

47~16 GDTのベースアドレス

15~0 GDTのリミット

bit 内容

47~16 LDTのベースアドレス

15~0 LDTのリミット

3.CPUのこと(17) - x86 – メモリ管理レジスタ(2)

● 割り込みディスクリプタテーブルレジスタidtr割り込みディスクリプタテーブル(IDT)のアドレス、大きさ。48bit(6byte)。lidtアセンブリ命令で値をセットする。

● タスクレジスタtr現行タスクのTSSの 32bitのアドレス、大きさ。48bit(6byte)ltrアセンブリ命令で値をセットする。

bit 内容

47~16 IDTのベースアドレス

15~0 IDTのリミット

bit 内容

47~16 TSSのベースアドレス

15~0 TSSのリミット

3.CPUのこと(18) - x86 – モデル固有レジスタ

● モデル固有レジスタ(MSR:Model Specific Register)アドレス番号でアクセスできる64bitレジスタ。読み込み  ECXレジスタにアドレスを設定してrdmsr命令を実行すると、  結果がEDXと EAXレジスタに読み込まれる。書き込み  ECXレジスタにアドレスを設定して、EDXと EAXレジスタにデータを設定し、  wrmsr命令を実行すると、MSRに書き込まれる。

アドレス 用途

0xC0000080 拡張イネーブルレジスタ(EFER)

0xC0000081 システムターゲット・アドレスレジスタ (STAR)

0xC0000082 ロング STAR(LSTAR)

0xC0000083 互換 STAR(CSTAR)

3.CPUのこと(19) - x86 - その他レジスタ

● デバッグレジスタdr0~dr7プロセッサのデバッグ動作の監視機能を制御

● x87FPUレジスタ浮動小数点データレジスタ(80bit)×8個、コントロールレジスタ(16bit)、ステータスレジスタ(16bit)、タグレジスタ(16bit)、オペコードレジスタ(11bit)、FPU命令ポインタレジスタ(48bit)、FPUオペランド(データ)ポインタレジスタ(48bit)

● MMXテクノロジレジスタ64bitの SIMD(Single Instruction,Multiple Data)演算をサポートするレジスタ。64bitレジスタ×8個。

● XMMレジスタ128bitの SIMD演算をサポートするレジスタ。128bitレジスタ×8個、MXCSRレジスタ(32bit)

3.CPUのこと(20) - x86 - 動作モード(1)

IA-32モードリアルモード

プロテクトモード

仮想 8086モード

IA-32eモード64bitモード

互換モード

PC起動直後

3.CPUのこと(21) - x86 – 動作モード(2)IA-32モード

● リアルモード・8086(16bitCPU)用に書かれたプログラムを実行させる為のモード。・完全な上位互換。・PC/AT互換機は、電源投入後やリセット後はリアルモードで動作。・メモリ空間は、20bitで (16bitではない)表現できる 0x00000~0xFFFFF=1MB  8086はアドレスバスがA0~A19の20本ある。・8086は、アクセス違反を保護する機能が存在しない。・レジスタは16bitなのに20bitのメモリ空間を利用できるカラクリ アドレス変換器は、セグメントベースを16倍してオフセットを足す事で20bitリニアアドレスを算出。

 リニアアドレス=セグメントベース:0x2222 × 0x10+ オフセット:0x1111        =セグメントベース:0x2222 << 4 + オフセット:0x1111        = 0010 0010 0010 0010 << 4 + 0001 0001 0001 0001        = 0010 0010 0010 0010 0000 + 0001 0001 0001 0001        = 0010 0011 0011 0011 0001 (20bit幅 )        = 0x23331・80286以降のCPUでは、特別な操作をすると上位のハイメモリ領域 (~0x10FFEF) までもアクセス可能。しかしそれに対応したプログラムが必要。 ・ブートローダは最初はリアルモードで動き、途中でプロテクトモードに切り替える。・ファームウェアアップデートがMS-DOSでしか動かなかったり、まだ活躍の場あり。

※PC/AT互換機 :https://ja.wikipedia.org/wiki/PC/AT%E4%BA%92%E6%8F%9B%E6%A9%9F

3.CPUのこと(22) - x86 – 動作モード(3)IA-32モード

● プロテクトモード・メモリ管理、タスク管理、保護機能など、80386(32bitCPU)で拡張された機能を 利用する為のモード。・メモリ空間は、32bitで表現できる 0x00000000~0xFFFFFFFF=4GB  80386はアドレスバス32本。・アドレス変換、割り込み処理手順などリアルモードと全く異なる。・メモリ、I/Oデバイスへのアクセス保護機能が常に働く。 アクセス違反で割り込み発生。・ページング機能、アドレス変換機能 ⇒仮想的に連続したメモリ空間や他のプログラムから独立したメモリ空間を提供・ページング機能を応用すると、仮想記憶の実現も可能。

● 仮想 8086モード・プロテクトモードのメモリ管理や保護機能を働かせたまま、8086用プログラムが実行で きる互換環境を提供。・アクセス違反で割り込み発生。・ハードウェア割り込みやBIOSサービスを利用するソフトウェア割り込みは、OSがエミュ レートして結果を8086プログラムに返す。

3.CPUのこと(23) - x86 – 動作モード(4)IA-32eモード

● 64bitモード・プロテクトモードのアドレスサイズを64bitに拡張。64bit空間全ては使えない。・レジスタ幅 64bit・ R8~R15レジスタ追加・物理アドレスは下位40bit(1TB)。 EM64T/x86_64の規格上の上限は 52bit(1PB)。・仮想アドレスは下位48bit(256TB)。 上位16bitは符号拡張0x00007FFFFFFFFFFF→0xFFFF80000000000。 規格上の上限は48bit。

● 互換モード・64bitモードの中で動くプロテクトモード。・32bit環境での物理アドレス拡張 PAEもサポート。

3.CPUのこと(24) - x86 – 動作モード(5)遷移手続き

● リアルモード   → プロテクトモード● プロテクトモード → リアルモード● IA-32モード  → IA-32eモード● IA-32eモード  → IA-32モード

動作モード間の遷移には、手続き/お作法がある。

3.CPUのこと(25) - x86 – 動作モード(6)遷移手続き

● リアルモード   → プロテクトモードCR0レジスタのPEフラグ=1にする前に色々準備する。1. GDTの作成

2. gdtrレジスタの設定

3. IDTの作成

4. idtrレジスタの設定

5. A20マスクの解除

6. CPUへの割り込みを禁止

7. CR0制御レジスタのPEフラグ=1

8. パイプラインの内容をフラッシュ

9. セグメントレジスタの設定

3.CPUのこと(26) - x86 – 動作モード(7)遷移手続き

● プロテクトモード → リアルモードCR0レジスタのPEフラグ=0にする前に色々準備する。1. セグメントレジスタの設定

2. CR0レジスタのPEフラグ=0

3. パイプラインの内容をフラッシュ

4. セグメントレジスタの再設定

5. A20マスクの有効化

3.CPUのこと(27) - x86 – 動作モード(8)遷移手続き

● IA-32モード  → IA-32eモードIA-32eのページングはPAEのさらなる拡張の為、事前にPAEを有効化。CR0レジスタのPGフラグ=0にするのは、ページテーブルを変更する為。

(このとき仮想アドレス=物理アドレスにしておく)1. CR0レジスタのPGフラグ=0

2. PAE有効化

3. ページングテーブルをロード

4. IA32_EFER.LME=1にして、IA-32eモードを有効化

5. CR0レジスタのPGフラグ=1

6. 64bitコードセグメントにジャンプ

コードセグメントの内容によって、64bitモード/互換モードを判定。

L D 動作モード アドレスサイズ

0 0 互換モード 16bit

0 1 互換モード 32bit

1 0 64bitモード 64bit

1 1 予約 -

3.CPUのこと(28) - x86 – 動作モード(9)遷移手続き

● IA-32eモード  → IA-32モード1. CR0レジスタのPGフラグ=0

2. ページングテーブルをロード

3. IA32_EFER.LME=0にして、IA-32eモードを無効化

4. CR0レジスタのPGフラグ=1

5. 32bitコードセグメントにジャンプ

3.CPUのこと(29) – x86 - 参考文献

● x86 - Wikipediahttps://ja.wikipedia.org/wiki/X86

● レジスタ - OS Project Wikihttp://www.wiki.os-project.jp/?x86%2FRegister#wfdf5844

● Intel 8086 Family Architecturehttp://caspar.hazymoon.jp/OpenBSD/annex/intel_arc.html

● IA-32 インテル ® アーキテクチャー・ソフトウェア・デベロッパーズ・マニュアル、上巻: 基本アーキテクチャーhttp://www.intel.co.jp/content/dam/www/public/ijkk/jp/ja/documents/developer/IA32_Arh_Dev_Man_Vol1_Online_i.pdf

● IA-32 インテル ® アーキテクチャー・ソフトウェア・デベロッパーズ・マニュアル、中巻 A: 命令セット・リファレンス A-Mhttp://www.intel.co.jp/content/dam/www/public/ijkk/jp/ja/documents/developer/IA32_Arh_Dev_Man_Vol2A_i.pdf

● IA-32 インテル ® アーキテクチャー・ソフトウェア・デベロッパーズ・マニュアル、中巻 B: 命令セット・リファレンス N-Zhttp://www.intel.co.jp/content/dam/www/public/ijkk/jp/ja/documents/developer/IA32_Arh_Dev_Man_Vol2B_i.pdf

● IA-32 インテル ® アーキテクチャー・ソフトウェア・デベロッパーズ・マニュアル、下巻: システム・プログラミング・ガイドhttp://www.intel.co.jp/content/dam/www/public/ijkk/jp/ja/documents/developer/IA32_Arh_Dev_Man_Vol3_i.pdf

● Intel 日本語技術資料のダウンロードhttp://www.intel.co.jp/content/www/jp/ja/developer/download.html

4.マザーボードの構成(1) - 構成部品

・チップセット・CPUソケット・メモリソケット・バッテリー・ATX電源コネクタ・スピーカー・IDEコネクタ/SATAコネクタ

・PCIスロット・PCI Expressスロット・イーサネット端子・IEEE 1394ポート・IDE(パラレル、シリアル)・オーディオ端子・USBポート

※レガシーデバイスPS/2コネクタ、シリアルポート、パラレルポートISAスロット、AGPスロット

4.マザーボードの構成(2) - ブロック図

※2000年代初頭の代表図

4.マザーボードの構成(3) - チップセット(1)

● チップセットある機能を実現するのに、複数の集積回路 (IC)を組み合わせて機能を実現する構成の場合、それら一連の関連のある複数の集積回路のことCPU周辺 ICと複数の汎用 ICの組合せをLSI化したもの。

・2チップ構成が主流 ノースブリッジ、サウスブリッジ (開発サイクルや発熱・歩留りを考慮

4.マザーボードの構成(4) - チップセット(2)

・ノースブリッジ  ・CPUインターフェイス  ・メモリインターフェイス  ・グラフィックインターフェイス(AGP,PCI-Express)  (・ GPU)  ※以前はメモリコントローラも内蔵していたが、  CPUにメモリコントローラを内蔵する傾向に

・サウスブリッジ  ・PCI  ・IDE  ・Ethernet   etc...

4.マザーボードの構成(4) - チップセット(3)

・ワンチップセット  ノースブリッジとサウスブリッジを一つにまとめたチップセット。  SoC(System on a Chip)

・統合チップセット  ノースブリッジにグラフィックス機能を統合したチップセット。  グラフィックス統合チップセット/オンボードグラフィックス。

   

Let's enjoy Linux Kernel

おわりに