如何保留低内存(操作系统前)?

发布于 2024-07-05 20:11:28 字数 514 浏览 9 评论 0原文

背景:在操作系统启动之前,我需要保留低于 0xA0000 的内存量。 为此,我更改了 0040:0013 (或 0x413)字,它是低的数量可用内存(以 KiB 为单位)。

然而,Windows和其他操作系统使用E820h/INT15h来查询内存布局并且某些 BIOS:es 不反映对 E820h/INT15h BIOS 功能的 0x413 更改。 因此,如果需要的话,我还必须挂钩 E820h 功能。

问题:是否有另一种(更可靠的)方法在操作系统之前保留低内存? 或者除了挂钩 INT15h 之外的任何其他更改 E820h/INT15h 结果的方法(也许通过戳 EBDA?)

Background: I need to reserve an amount of memory below 0xA0000 prior to my operating system starts. To do this I change the 0040:0013 (or 0x413) word which is the amount of low memory available in KiB.

However, Windows and other operating systems use E820h/INT15h to query the memory layout and some BIOS:es doesn't reflect 0x413 changes to the E820h/INT15h BIOS function. Therefore I also have to hook the E820h function if needed.

Question: Is there another (more reliable) way to reserve low memory prior to the OS? Or any other way of changing the E820h/INT15h results other than hooking INT15h (by poking EBDA perhaps?)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

有深☉意 2024-07-12 20:11:28

我不这么认为,但如果你不做引导加载程序,你可以对操作系统进行半虚拟化。 您可以查看 Xen 虚拟机管理程序。

I don't think so, but if you are not doing a bootloader, you could para-virtualize the os. You could look at Xen hypervisor for it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文