[PR]当たる!無料占いで運命鑑定:プロの占い師による本格運命鑑定が無料で
今回から、実際の OS 開発に移っていきます。
はじめに、OS 起動の仕組みについて解説します。
PC を起動すると、
マザーボード上の ROM に保存された BIOS という
プログラムが実行されます。
BIOS は主に以下のことを行います。
- メモリ、周辺機器をチェックする。
- 割り込みベクタ、BIOS ワークエリアを初期化する。
- メモリ、周辺機器をチェックし、各種ハードウェアを初期化する。
- 各種ハードウェアを初期化する。
- 起動デバイス(フロッピーやハードディスクなど)の先頭セクタをメモリに読み込む。
- メモリに読み込んだ先頭セクタが起動可能マークを持つか調べる。
- 起動可能の場合は、読み込んだ先頭セクタにジャンプする。
そうでない場合は、別の起動デバイスを探す。
起動デバイスは、PC 起動時に DEL などを押すと
表示される BIOS 設定メニューで変更できます。
以下ではフロッピーを使いますので、フロッピーから
起動できるように設定しましょう。
(メニューの出し方は機種により違います)
したがって、
以下のように準備すれば BIOS から OS を起動させることができます。
- ディスクの先頭セクタに OS の起動コードを書き込んでおく。
- 先頭セクタには起動可能マークをつけておく。
用語がいくつか出てきましたので、解説しておきます。
- 「ディスクの先頭セクタ」とは?
セクタというのはディスクへの記録単位のことです。
例えば 1.44MB フロッピーなら 512 バイトのセクタが 2880 個あります。
先頭セクタというのは、文字通りこの最初のセクタ(第1セクタ)ことです。
このセクタは、マスタブートレコードと呼ばれています。
通常、ディスクはファイルの内容のほかに、管理情報も書き込まれています。
この仕組みをファイルシステムと呼びます。
例えば DOS などで使われる FAT というファイルシステムでは、
ディスクの先頭数十セクタには管理情報を書き込みます。
従って、単にファイルを explorer などでコピーしても、
先頭セクタには絶対に書き込まれません。
フロッピーの場合、
2880 セクタ分のプログラムやデータをファイル化しておき、
専用の書き込みを使えば書き込めます。
例えば、
WinXP/2000/NT ではNTRawriteが
使えます。
- 「起動可能マーク」とは?
セクタはフロッピーや ATA HDD では 512(200h) バイトです。
(200hのように最後に h をつけた場合は16進数を表します)
起動可能な場合は
第1セクタの 510(1FEh)バイトに 55h、511(1FFh)バイト目に AAh を
書いておきます。
これを見て BIOS は起動可能と判断します。
- 先頭セクタはメモリ上のどこに読み込まれるのか?
一般的な PC (AT 互換機) では、0000h:7C00h に読み込まれます。
PC-98x1では、
1.25MB FDD のとき 1FC0h:0000h に、
1.44MB FDD のとき 1FE0h:0000h に読み込まれるようです。
- BIOS はメモリのどこにジャンプするのか?
読み込んだメモリの先頭にジャンプします。
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.