首页 理论教育 操作系统实现之路:HelloChina的内存布局

操作系统实现之路:HelloChina的内存布局

时间:2023-10-21 理论教育 版权反馈
【摘要】:最后,我们再看一下Hello China V1.75初始化完成、进入稳定运行阶段后的内存布局图,如图3-9所示。因此在Hello China稳定之后的内存布局中,是没有这个模块的。从1MB开始,首先是miniker.bin模块,占用64KB空间,紧接着是master.bin模块,占用了320KB的空间。然后就是应用程序的加载空间,所有Hello China V1.75版本的应用程序,都被加载到这64KB的空间中运行。需要注意的是,这个64KB的空间,只是应用程序的固定代码和全局变量所占空间。

操作系统实现之路:HelloChina的内存布局

最后,我们再看一下Hello China V1.75初始化完成、进入稳定运行阶段后的内存布局图,如图3-9所示。这个布局图包含了所有核心模块,有些模块是在其他章节中进行讲解的,目前不理解没有关系。

978-7-111-41444-5-Chapter03-51.jpg

图3-9 启动完成后的内存布局

在PC版的实现上,最低的1MB内存是预留的。看起来或许有点浪费,但实际上这样的操作机制带来了非常大的便利。比如在后续开发中,需要从保护模式重新切回实模式,并调用BIOS的功能。正是保留了这1MB的预留空间,才使得这个过程变为可能。(www.xing528.com)

REALINIT.BIN模块是实模式的初始化模块,一旦完成实模式的初始化,这个模块就没有用处了。因此在Hello China稳定之后的内存布局中,是没有这个模块的。从1MB开始,首先是miniker.bin模块,占用64KB空间,紧接着是master.bin模块,占用了320KB的空间。当前版本的master.bin模块没有这么大,预留320KB的空间是为了将来扩展该模块使用的。master模块之后是GUI模块,包含GUI的功能代码模块、汉字库、ASCII字符库等。然后就是应用程序的加载空间,所有Hello China V1.75版本的应用程序,都被加载到这64KB的空间中运行。需要注意的是,这个64KB的空间,只是应用程序的固定代码和全局变量所占空间。应用程序可以调用操作系统提供的API函数,从动态内存池中申请更多的空间使用。

部分页目录和页表被固定在0x001F0000处,这只有在起用了VMM(虚拟内存管理功能)之后才有效。从2MB开始,就是可供内核和应用程序使用的动态内存空间了。

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

我要反馈