首页 理论教育 操作系统核心模块开发示例

操作系统核心模块开发示例

时间:2023-10-21 理论教育 版权反馈
【摘要】:在这一部分中,我们按照上面介绍的方法创建一个简单的操作系统映像。这不是问题,因为realinit.bin和miniker.bin等模块是首先被加载运行的,这些模块会初始化硬件,并把CPU切换到保护模式。

操作系统核心模块开发示例

在这一部分中,我们按照上面介绍的方法创建一个简单的操作系统映像。这个操作系统映像非常简单,引导计算机后清屏,然后在屏幕的顶端打印出“ABCDE……WXY”,然后进入死循环。

1.创建一个名字为OSIMG_1的DLL工程

如图C-6所示。

2.添加一个源程序文件,并编辑实现代码

在新建的工程中,增加一个C++源文件,并键入以下代码:

图C-6 创建一个新的工程

这段代码的功能是,调用ClearScreen函数清屏,然后打印出“ABCD……WXY”,之后,进入死循环。在清屏幕和输出字符的时候,都是采用直接写显存的方法实现的。需要注意的是,在上述代码中,不要调用任何C语言库函数。

3.设置编译链接选项,并进行编译链接

根据上面的叙述,设置下列编译和链接选项。

1.入口点,设置为“?__init@YAXXZ”(__init函数编译后的内部标号);

2.设置加载地址:/BASE:0x00110000,即该程序段从1MB+64KB开始加载。1MB开始的64KB代码,用于miniker.bin模块的加载;(www.xing528.com)

3.设置对齐选项:/ALIGN:16,这样可以导致文件内的节对齐方式,和内存中的节对齐方式一致。如图C-7所示。

设置完后,选择“build->Batch Build…”菜单,出现如图C-8所示对话框。

图C-7 设置工程的编译链接选项

图C-8 选择Release模式对工程进行编译

单击“Rebuild All”按钮,编译这个DLL工程。

4.处理目标文件

使用process工具处理生成的DLL文件,并把文件重新命名为master.bin:

5.创建虚拟引导盘

经过上述步骤之后,读者就已经创建了自己的操作系统映像了,剩下的任务就是创建虚拟引导磁盘了。把bootsect.bin、realinit.bin、miniker.bin以及上述步骤生成的master.bin,复制到同一个目录下,同时也把vfmaker工具复制到这个目录下,运行vfmaker,即可生成一个vfloppy.VFD文件。这个文件就是虚拟引导软盘,使用该文件启动虚拟机,即可看到预期的运行结果。

最后需要说明的是,采用上述方法开发出来的二进制模块,是完全的32位可执行代码,需要CPU运行在保护模式之下。这不是问题,因为realinit.bin和miniker.bin等模块是首先被加载运行的,这些模块会初始化硬件,并把CPU切换到保护模式。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈