TOPに戻る
▼Processor
プロセッサの初期化
┣ BISTとは?
┣ CS:IPレジスタの
┃ 用途と初期値
┣ BIOS〜OS起動
┣ マスターブート
┃ レコード1
┗ マスターブート
レコード2
Copyright(C) 2001-2002.ugpop. All rights reserved.
■ BIOS〜OS起動 ■
前回はプロセッサが命令を実行する時にPC(Program Counter)
と呼ばれる物を使用する事の解説を行ないました。
プロセッサは内部で持っているPCを参照して、メモリ上の何番
目の命令を実行すれば良いのか判断するのでした。
また、このPCは1つの命令の実行が完了する度に自動的にカウ
ントアップされていく事の説明も行いました。
インテルプロセッサの場合は、PC(Program Counter)のことを
IP(Instruction Pointer)とも呼び、CS(Code Segment)の値と
組み合わせて使用される事の解説も行いました。
今回は、電源投入直後のCSとIPの初期値を利用してどのように
プロセッサが動作するのか解説を行ないます。
まず、電源投入直後のCSとIPの初期値を見てみましょう。
CS IP
┌────┬────┐
│FFFF│FFF0│
└────┴────┘
このFFFFFFF0という値は16進数といってコンピュータが処理
しやすい表現形式でした。
この値を人が見て理解しやすいように10進数で表現しなおす
と、42億9496万7280となります。
つまりプロセッサは電源投入直後には42億9496万7280番目の命
令を実行しようとします。
とてつもなく大きな値ですが、この「42億9496万7280番目」と
いうのはどこを表しているのでしょうか?
また、こんな所に命令が存在しているのでしょうか?
みなさんの中でパソコンケースのふたを開けて中をのぞいて見
てみた方はいるでしょうか?
メモリを増設したり、新しくビデオカード等を買ってきて増設
した事がある方は知っているかもしれませんが、パソコンには
メモリやプロセッサ、さまざまなカード類がささる一番大きな
基盤があります。
この基盤の事をマザーボードと呼びます。
実は、この「42億9496万7280番目」という所は、マザーボード
上に搭載されているROMを表しています。
ROMというのは、Read Only Memoryの略で、読み出しのみ可能
なメモリの事です。
例えばプレーステーション2のDVD-ROMと言ったりCD-ROMと言
ったりしますよね。あれは読み出ししか出来ないからROMと呼
ばれているのです。
このROMの中にはプログラムが入っていて、プロセッサはその
プログラムを最初に実行します。
このプログラムの事を一般にBIOS(Basic Input Output System)
といいます。
パソコンの電源を入れてしばらくすると一番最初に真っ暗な画
面に文字が表示されますよね。
あれは全てBIOSのプログラムが動作しているから表示されるの
です。
よく見ると画面に「BIOS」という文字が表示されるので分かる
と思います。
さて、BIOS(バイオスと読みます)はその他にもとても大切な
処理を行ないます。
各種ハードウェアの初期化を行なったり、コンピュータ起動の
仕方を設定したり等。
その中でも特に重要な仕事は、「ブートローダ」を起動する仕
事です。
このブートローダというプログラムは、ハードディスクやフロ
ッピーディスク、CD-ROM等の決められた場所に格納されていま
す。
決められた場所というのは、例えば、フロッピーディスクとか、
CD-ROMとかの複数あるドライブの一番先頭の場所です。
なお、ハードディスクに関してはほんの少しですが異なる部分
がありますので、ここからブートローダが起動するまでの解説
についてはハードディスク以外のデバイスに関して書かれてあ
るものとして読んでください。
ハードディスクからブートローダを起動するまでの処理につい
ては次回に解説します。
このブートローダが格納されている場所の事を「ブートセクタ
ー」と呼びます。
以下に各ドライブに存在しているブートセクターのイメージを
示します。
フロッピー CD−ROM
先頭→┌───────┐ ┌───────┐
│ブートセクター│ │ブートセクター│
├───────┤ ├───────┤
│ │ │ │
│ │ │ │
└───────┘ │ │
│ │
│ │
└───────┘
BIOSはフロッピー、ハードディスク、CD-ROMのブートセクタを
それぞれ1つ1つ読み取っていきます。
そして、例えばCD-ROMのブートセクタが読出し可能となってい
た場合、CD-ROMのブートローダをメモリに転送します。
BIOSから読み出されたブートローダはメモリに転送された後、
BIOSから「後の処理はまかせた。」と制御を移行されます。
ここでBIOSの処理は完了し、ブートローダの処理が走ることに
なります。
以下にパソコン電源投入直後からブートローダが起動するまで
の図を示します。
┌─────────────┐
│ パソコンの電源投入 │
└──────┬──────┘
│
┌──────┴──────┐
│プロセッサの自己診断(BIST)│
└──────┬──────┘
│ CS:FFFF IP:FFF0
┌──────┴──────┐
│ BIOS起動 │ フロッピー等
└──────┬──────┘ ┌────┐
│ブートセクター読出 │ │
│←─────────┤ │
│ └────┘
┌──────┴──────┐
│ブートセクターの内容(ブー │
│トローダ)をメモリに格納 │
└──────┬──────┘
│
┌──────┴──────┐
│ ブートローダ起動 │
└─────────────┘
ブートローダは何をするのかと言うと、OSを起動する為に、
「OSローダ」と呼ばれるプログラムを起動します。
「OSローダ」はブートローダのようにハードディスクやフロッ
ピーディスク、CD-ROM等の先頭に格納されているわけではなく、
普通のファイルとして存在しています。
windows9x系の場合「IO.SYS」というファイル名で、windowsNT
系の場合「NTLDR」というファイル名で存在しているようです。
このファイルを逆アセンブラツールにかけるとwindowsが起動
する仕組みが分かるはずです。興味のある方はためしてみては
いかがでしょうか。
OSローダは何をやるプログラムかというと、名前の通りwindows
などのオペレーティングシステムを起動する処理を行ないます。
windowsを起動する時にメニューが現れてnormal modeで起動と
かsafe modeで起動とか選択できたりする事がありますよね。
あれはOSローダが行なっているのです。
(そんな画面出ないよ、という方は電源を入れてからしばらく
して「PF8」キーを押してみてください。ちゃんとOSローダが
動作してメニューが表示されるはずです。この「PF8」キーが
押されているかを判定してるのもOSローダなんですけどね。)
このOSローダの実行を経て、やっとオペレーティングシステム
が正常に起動するのです。
以下にOSが起動するまでの図を示します。
┌─────────────┐
│ パソコンの電源投入 │
└──────┬──────┘
│
┌──────┴──────┐
│プロセッサの自己診断(BIST)│
└──────┬──────┘
│ CS:FFFF IP:FFF0
┌──────┴──────┐
│ BIOS起動 │ フロッピー等
└──────┬──────┘ ┌────┐
│ブートセクター読出 │ │
│←─────────┤ │
│ └────┘
┌──────┴──────┐
│ブートセクターの内容(ブー │
│トローダ)をメモリに格納 │
└──────┬──────┘
│
┌──────┴──────┐
│ ブートローダ起動 │ フロッピー等
└──────┬──────┘ ┌────┐
│OSローダ読出 │ │
│←─────────┤ │
│ └────┘
┌──────┴──────┐
│ OSローダをメモリに格納 │
└──────┬──────┘
│
┌──────┴──────┐
│ OSローダ起動 │ フロッピー等
└──────┬──────┘ ┌────┐
│ OS読出 │ │
│←─────────┤ │
│ └────┘
┌──────┴──────┐
│ OSをメモリに格納 │
└──────┬──────┘
│
┌──────┴──────┐
│ OS起動 │
└─────────────┘
BIOSからOS起動までの間には何段階かステップを踏んでいます。
これは、昔のパソコンからの互換性を保つ為に仕方なく段階を
踏んでいるのです。
さて、以上で電源投入してからOSが起動するまでの解説はおお
かた終わりました。
おおかた、と書いたのには理由があって、もう少し解説が足り
ない事で大切な部分が残っているからです。
今回の講座でまだ出てきていない言葉に、「マスターブートレ
コード」という言葉があります。
この「マスターブートレコード」という言葉はハードディスク
からブートローダを起動する事と非常に密接に関わりがあるも
のです。
次回は「マスターブートレコード」の解説を行い、ハードディ
スクからブートローダを起動する仕組みについて解説します。
←前へ戻る ▲このページの上へ 続きを読む→