2 assembly operating-system interrupt nasm bootloader
我基于 MikeOS 引导加载程序(链接)制作了一个非常基本的引导加载程序。我使用 NASM 和 QEMU 进行组装和测试。我正在尝试为我的操作系统启用保护模式。因此,我开始在网上搜索更多详细信息并了解有关 BIOS 中断的更多信息。我偶然发现了维基百科并阅读了一篇文章......
许多现代操作系统(例如 Linux 和较新版本的 Windows)完全绕过内置 BIOS 中断通信系统,更喜欢使用自己的软件直接控制连接的硬件。最初的原因主要是这些操作系统以保护模式运行处理器,而调用 BIOS 需要切换到实模式并再次返回,而切换到实模式的速度很慢。然而,也有严重的安全原因不切换到实模式,并且 BIOS 代码在功能和速度上都有限制(来源:维基百科(链接))
维基百科上的文章说
.....主要是这些操作系统以保护模式运行处理器,而调用BIOS需要切换到实模式并再次返回,而切换到实模式很慢......
(来源:维基百科(链接))
根据我的理解,在保护模式下的程序中不建议使用太多BIOS中断all,对吗?如果我是对的,那么我的引导加载程序还使用许多 BIOS 中断在屏幕上打印字符......这是好是坏?如果不好,为什么?我需要进行哪些更改才能创建打印字符程序?
由于我想让我的操作系统进入保护模式,我很困惑是否应该使用 BIOS 中断?目前我已经制作了一个仅在屏幕上打印字符串的引导加载程序,目前我的引导加载程序中没有使用任何 BIOS 中断的任何其他功能。如果在保护模式下使用 BIOS 中断不好,那么当我在保护模式下加载内核时(当我创建它时:p),我应该如何处理打印字符串功能?
还,
许多现代操作系统(例如 Linux 和较新版本的 Windows)完全绕过内置 BIOS 中断通信系统,更喜欢使用自己的软件直接控制连接的硬件。(来源:维基百科(链接))
这些开发人员如何能够开发这些软件?这些软件是用汇编语言还是其他语言制作的?他们需要深厚的硬件软件知识吗?如果可以在我的操作系统中制作这些软件,那么我正在考虑添加这些...是否建议这样做,或者我应该只使用 BIOS 中断?
您可以在实模式下使用 BIOS 中断,但在进入保护模式或长模式后,您将无法像在实模式下那样使用 BIOS 中断。据我所知,这实际上是为了安全;保护模式的全部目的是增强安全性和稳定性(还消除了实模式中存在的许多限制),而长模式也比保护模式有自己的一系列好处(因为长模式适用于 64 位) )。
您有多种选择:
如果我是对的,那么我的引导加载程序还使用许多 BIOS 中断在屏幕上打印字符......这是好是坏?
如果您想在退出实模式(例如进入保护模式或长模式)后将字符打印到屏幕上,可以直接写入显存。只是让你知道。
回到讨论 BIOS 中断,这很好,因为在那个阶段您将处于实模式,这是允许您执行 BIOS 中断的地方。但是,如果您尝试在保护模式或长模式下执行此操作,它将无法工作(没有实模式仿真或暂时切换回实模式)。
BIOS 提供中断,让您能够依靠其内部功能来帮助您站稳脚跟,所以不,在实模式下使用 BIOS 中断也不错。
请参阅以下链接。
https://wiki.osdev.org/Real_Mode
https://wiki.osdev.org/Virtual_8086_Mode
https://en.wikipedia.org/wiki/Virtual_8086_mode
https://wiki.osdev.org/Protected_Mode