[PR]当たる!無料占いで運命鑑定:プロの占い師による本格運命鑑定が無料で

今回から、実際の OS 開発に移っていきます。
はじめに、OS 起動の仕組みについて解説します。

PC を起動すると、 マザーボード上の ROM に保存された BIOS という プログラムが実行されます。
BIOS は主に以下のことを行います。

  1. メモリ、周辺機器をチェックする。
  2. 割り込みベクタ、BIOS ワークエリアを初期化する。
  3. メモリ、周辺機器をチェックし、各種ハードウェアを初期化する。
  4. 各種ハードウェアを初期化する。
  5. 起動デバイス(フロッピーやハードディスクなど)の先頭セクタをメモリに読み込む。
  6. メモリに読み込んだ先頭セクタが起動可能マークを持つか調べる。
  7. 起動可能の場合は、読み込んだ先頭セクタにジャンプする。 そうでない場合は、別の起動デバイスを探す。
起動デバイスは、PC 起動時に DEL などを押すと 表示される BIOS 設定メニューで変更できます。
以下ではフロッピーを使いますので、フロッピーから 起動できるように設定しましょう。
(メニューの出し方は機種により違います)

したがって、 以下のように準備すれば BIOS から OS を起動させることができます。

  1. ディスクの先頭セクタに OS の起動コードを書き込んでおく。
  2. 先頭セクタには起動可能マークをつけておく。
用語がいくつか出てきましたので、解説しておきます。
  1. 「ディスクの先頭セクタ」とは?

  2. セクタというのはディスクへの記録単位のことです。
    例えば 1.44MB フロッピーなら 512 バイトのセクタが 2880 個あります。
    先頭セクタというのは、文字通りこの最初のセクタ(第1セクタ)ことです。
    このセクタは、マスタブートレコードと呼ばれています。
    通常、ディスクはファイルの内容のほかに、管理情報も書き込まれています。
    この仕組みをファイルシステムと呼びます。
    例えば DOS などで使われる FAT というファイルシステムでは、 ディスクの先頭数十セクタには管理情報を書き込みます。
    従って、単にファイルを explorer などでコピーしても、 先頭セクタには絶対に書き込まれません。
    フロッピーの場合、 2880 セクタ分のプログラムやデータをファイル化しておき、 専用の書き込みを使えば書き込めます。
    例えば、 WinXP/2000/NT ではNTRawriteが 使えます。

  3. 「起動可能マーク」とは?

  4. セクタはフロッピーや ATA HDD では 512(200h) バイトです。
    (200hのように最後に h をつけた場合は16進数を表します)
    起動可能な場合は 第1セクタの 510(1FEh)バイトに 55h、511(1FFh)バイト目に AAh を 書いておきます。
    これを見て BIOS は起動可能と判断します。

  5. 先頭セクタはメモリ上のどこに読み込まれるのか?

  6. 一般的な PC (AT 互換機) では、0000h:7C00h に読み込まれます。
    PC-98x1では、 1.25MB FDD のとき 1FC0h:0000h に、 1.44MB FDD のとき 1FE0h:0000h に読み込まれるようです。

  7. BIOS はメモリのどこにジャンプするのか?

  8. 読み込んだメモリの先頭にジャンプします。
    PC (AT 互換機) では、0000h:7C00h に far jmp します。
    PC-98x1では、1FC0h:0000h や 1FE0h:0000h を far call するようです。

OS 起動のしくみが明らかになりましたので、 次回は実際に先頭セクタを作ってみましょう。

2005-08-27: ChangeLog作成 (最終更新)
Copyright (C) 2005 hoverkid, all rights reserved.
[PR]≪占い奇跡の恋愛術≫初回無料:幸せな結婚へ導きます。本格結婚鑑定