2

私は実際には OS やブートローダーをプログラミングしていませんが、Oses について読んでいて、ブートローダーが BIOS システムコールなしで機能することに興味をそそられました.すべてのディスクにアクセスして、すべてのパーティションから起動したり、GPT をサポートしたりできます。

したがって、int 13hをバイパスしてディスクコントローラーに直接アクセスする方法を誰でも言うことができます(LBAを使用して適切なパーティションを自分で解決するため)B8000アドレスをビデオカードにマップし、保護モードで引き続き機能する人を教えてください? 保護モードはまだ存在しますか? 最近、下位互換性が必要なのは誰ですか?int 16h をバイパスするにはどうすればよいですか (本当にしたいのかどうかはわかりませんが、知っているなら、WTH :-) 理由はありません...) キーボード コントローラーを直接操作するにはどうすればよいですか?

4

1 に答える 1

2

1) BIOS は LBA アクセスをサポートするようになりました (AH=42h AH=43h Extended_Read_Sectors_From_Drive、Extended Write Sectors to Drive)。最新のすべての OS が行うように BIOS を直接バイパスし、IDE コントローラを直接プログラムすることができます。http://bochs.sourceforge.net/cgi-bin/lxr/source/bios/rombios.cの例については、Boch BIOS ソース コードを参照できます。Linuxカーネルと言うよりも、単純で抽象化されていないはずです。たとえば、セクターを書き込むコードは 6512 行あたりにありoutbます。呼び出しに興味があります。

2) B8000 はおそらく VGA bios のモード設定コードによってマップされますが、それは気にする必要のない実装の詳細です。プロセッサによって (仮想メモリを使用して) マップされるのではなく、IO サブシステムによってマップされるため、プロテクト モードで動作します。もちろん、保護モードはまだ存在します。

3) 下位互換性が必要なのは誰ですか? それが役に立たないなら、チップのスペースを節約するために Intel によって切り捨てられたでしょう。

于 2012-08-25T16:20:30.680 に答える