|
2:Re: CPUのお勉強 hideyosi 09/24 00:44 リアルモードとプロテクトモード。 (例によって大雑把だよ) インテルのCPUは、幸か不幸か、8086という16ビット版のCPUが大ヒットした。そして、その上で動くことを前提にしたMS-DOSも大ヒット。沢山の資産が生まれた。 時代が進み、16ビットじゃ足りないってことで、インテルは32ビットの高機能な新型CPU、80386を開発!。これで今までの面倒な問題も一気に解決。高速・大容量のメモリも使える。ばんざーい! ・・・と思ったら、あまりにもMS-DOSがヒットしすぎていた。いまさらMS-DOSがまったく動かないCPUじゃ売れない。MS-DOSの32ビット版を作ったって、みんながその新MS-DOSを買って使ってくれるとは限らない。こまった・・・ で、しょうがない。せっかくの32ビットだけど、16ビット(8086)とまったく同じに動く機能を追加しよう。これなら古いMS-DOSしか使いたくない人にも安心して買ってもらえるぞ! うーん。いろいろとリサーチしたら、なんかみんなMS-DOS以外、あんまし使いたがっていないようだ。32ビットのまんまだと、「動かねーじゃねーか!」とか苦情きそう・・・ じゃ、こうしよう。80386は本来は32ビットだけど、電源を入れた瞬間は8086ってことで動く。で、プログラムとかである特別なスイッチを入れれば、32ビットに切り替わるというように設計する。 ・・・っとまあ、こういう感じだったようです。(本当の経緯は違いますよ!念のため) で、その、電源を入れたばっかりの状態(8086として動く、16ビットの状態)、これを、「リアルモード」といい、なんらかの方法でスイッチが入れられ、32ビットになった状態を、「プロテクトモード」と言うわけ。 この、80386で定められた動作の規格は、今でもずーっと受け継がれている。80486・80586(Pentium)・80686(Pentium2)・・・・ OSはいろいろあるけど、インテルのCPUで動くものは、みなこの仕様(というか、制約?)に縛られる。なので、動作までは、 1、電源投入 2、いやおうなしに、CPUは8086(リアルモード)になる。 3、CPUの仕様として、決まった番地のアドレスにジャンプして実行する 4、この決まった場所は普通、ROMになっている。ここにBIOSというプログラムが書いてあって、これを実行する。(BIOSが壊れているとかでない限り、これは回避できない) 5、BIOSには、FDのある部分を読んできて実行しろというプログラムが書かれている。(これがIPL) 6、IPLが実行される。(へ理屈だが、このIPLに全ての命令を書き込むことが出来れば、この時点でOSということになる。IPLには大きさの制限があるので、普通はここには、xxxを読み込んで実行しろという程度の命令だけしか書かれていない) 7、IPLによって、OSの本体が読み込まれ、実行される。(OSが起動!) 8、この時点では、どんなOSでも16ビット。MS-DOSと大差なく、低性能。 9、LinuxやOSASKなどの32ビットOSの場合は、この16ビットの状態の時に、あるスイッチを入れて32ビット状態(プロテクトモード)に切り替えられる。 10、ここで初めて、マシンは32ビットになる。あとは、16ビットの時にあらかじめ読み込んでおいた32ビットでプログラムが書かれている場所にジャンプし、それを32ビットのCPUとして実行を開始する。 11、32ビットOS、起動・初期化処理開始!!!! ・・・っとまあ、大変大雑把だがこんな感じなのだろうなぁ。きっと。 |