我已经基于MikeOS引导加载程序(Link做了一个非常基本的引导加载程序。我正在使用NASM和QEMU进行组装和测试。我正在尝试为我的操作系统启用保护模式。因此,我开始在网上搜索更多详细信息,并进一步了解BIOS中断。我遇到了维基百科,并阅读了一篇文章。...
许多现代操作系统(例如Linux和Windows的较新版本)完全绕过内置的BIOS中断通信系统,宁愿使用自己的软件直接控制连接的硬件。最初的原因主要是这些操作系统在保护模式下运行处理器,而调用BIOS则需要切换到实模式并再次切换,而切换到实模式的速度很慢。但是,出于严重的安全原因,请不要切换到实模式,并且BIOS代码在功能和速度上都有局限性(来源:Wikipedia(Link))
维基百科上的文章说
.....主要是这些操作系统在保护模式下运行处理器,而调用BIOS则需要切换到实模式并再次切换,并且切换到实模式很慢...
(资料来源:维基百科(Link))
根据我的了解,建议不要在保护模式下为all
过程使用大量的BIOS中断,对吗?如果我是对的,那么我的引导加载程序还会使用许多BIOS中断来在屏幕上打印字符...是好是坏?如果不好,为什么?以及创建打印字符过程需要做哪些更改?
由于要将操作系统设置为保护模式,因此我是否应该使用BIOS中断感到困惑?目前,我只制作了一个引导加载程序,该引导加载程序在屏幕上显示字符串,而目前,我的引导加载程序中没有使用任何BIOS中断的任何其他功能。如果将BIOS中断用于保护模式不是很好,那么在以保护模式加载内核时(当使它成为:p时)我应该对打印字符串功能做什么?
还
许多现代操作系统(例如Linux和Windows的较新版本)完全绕过内置的BIOS中断通信系统,宁愿使用自己的软件直接控制连接的硬件。 (资料来源:维基百科(Link))
那些开发人员如何开发这些软件?这些软件是用Assembly还是任何其他语言制作的?他们需要深入的软硬件知识吗?如果可以在我的OS中制作这些软件,那么我正在考虑添加这些软件。...建议这样做,还是仅使用BIOS中断?
答案 0 :(得分:4)
您可以在实模式下使用BIOS中断,但是进入保护模式或长模式后,将无法以与实模式下相同的方式进行操作。据我所知,这实际上是为了安全;保护模式的全部目的是增强安全性和稳定性(还消除了实模式中存在的许多限制),并且长模式比保护模式还具有自己的一套好处(因为长模式适用于64位) )。
您有几种选择:
如果我是对的,那么我的引导加载程序还会使用许多BIOS中断来在屏幕上打印字符...好还是坏?
如果要在退出实模式(例如进入保护模式或长模式)后在屏幕上打印字符,则可以直接写入视频存储器。就是这样。
回到BIOS中断,这很好,因为您将在此阶段处于实模式,在该阶段您可以执行BIOS中断。但是,如果您尝试在“保护模式”或“长模式”下执行此操作,则它将不起作用(没有实模式仿真或暂时切换回实模式)。
BIOS为您提供了中断功能,使您能够依靠其内部功能来帮助您站起来,所以不,在实模式下使用BIOS中断也不错。
请参见以下链接。
https://wiki.osdev.org/Real_Mode
https://wiki.osdev.org/Virtual_8086_Mode