分かりやす〜い
コンピュータ技術情報

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が起動するまでの解説はおお
かた終わりました。

おおかた、と書いたのには理由があって、もう少し解説が足り
ない事で大切な部分が残っているからです。

今回の講座でまだ出てきていない言葉に、「マスターブートレ
コード」という言葉があります。

この「マスターブートレコード」という言葉はハードディスク
からブートローダを起動する事と非常に密接に関わりがあるも
のです。

次回は「マスターブートレコード」の解説を行い、ハードディ
スクからブートローダを起動する仕組みについて解説します。



←前へ戻る    ▲このページの上へ    続きを読む→