Linux/UNIXの勉強メモ1 カーネル起動するまで追っかける、バスとかPCIまわり
電源入れる→MBRが"/boot"にある「initrd-2.6.18-***.***.img」と「vmlinuz-2.6.18-***.***」を読み込む→カーネルが使えるようにする色々な準備をしてくれる
カーネル起動するまで追っかける
/var/dmesg で起動するときバーっと出てくる起動時メッセージを見れる。
一番最初からわかる範囲で書いてみると(大雑把):
・/boot のLinux version 2.6.18-398.e15.img(数字はCentOS5.11を意味しているらしい)を読み込む
・「BIOS-provided physical RAM map: ~なんか色々書いてる~」
BIOSが物理メモリのどの住所がudableまたはreservedなのか表示する
・「HIGHMEM 0MB, LOWMEM 503MG available」
カーネルが物理メモリにストレートマップできるのはこの場合は503MGで、それを超えるとHIGHMEMにマップするらしい。でも0MGしかavailableなので、実質unavailableだ。
・「DMI 2.3 present, Dell Inc. **** 」とか「Using APIC(割り込みコントローラの種類)
」とか調べ始めて、
「Memory: ********k/********k available (****k Kernek code, *****k reserved. ***k data, ***k init, 0k highmem)」
とか、メモリの現状について書いてくれる。
とりあえず自分の置かれている環境について調べて表示しまくる。
・「CPU L1 I cache: 32k, L1 D cache: .....」
今はL1,L2,L3まであるのが主流らしい。(→バスとかPCIまわりへ)
・「ACPI:bus type pci registered, PCI: Using ********」
ここからACPIとかPCIのことを羅列し始める。詳しいことはよくわからない。
これが終わったら普通はrun level 3 とかになってusernameとpassword聞かれてloginする。
・メモリとCPUの間にバスというモノがある。DDRとか規格が色々ある。
本数で32bitとか64bitとか決まる。一本につき1bitだから64bitは64本以上あるらしい。
CPU 2GHzでメモリが1MHzだとメモリが遅くてCPUの待ち時間がもったいないから、CPUにon boardしてるL1 cacheに”よく使う処理”を記録させておくことができる。
CPUの性能 = bit数×クロック周波数(一秒間に計算出来るビット数)
8bit = 1byte
1MHz = 100,000Hz
64bitで1MHzなら、64*10の6乗回を1秒間で振動してることになる。めちゃくちゃ早い。早い分だけ一度に沢山のbitを送れるから、コンピュータの性能をみる時はこの早さをチェックすると良い。
・PCI(Peripheral Component Interconnect)という、コンピュータと周辺機器との間の通信をやってくれるバスがある。
PCI以下には入出力装置がくっついてる。USBだったりHDD ControllerやらSound,VideoControllerとかいっぱいある。
例)
HDDから動画を再生するときの順路(大雑把)
HDD Controller→PCI→CPU(ここをすっ飛ばすこともできる:DMA)→メモリ→CPU→PCI→Sound/Video Controller→スピーカーとモニタ
動画再生という処理は、この動作を何億回も超高速でやってるってことだそうだ。
バスの長さや本数、クロック周波数の違いでこの動画再生のスピードが変わってくる。
今ならザックリとだが理由がわかる。
次はinitについての勉強。
理由:プロセスの概念がわからないから。