为什么EOS操作系统从软盘启动时要使用boot.bin和loader.bin这两个程序?

 我来答
求真实验室
2022-11-17 · 探索生活中的科学奥秘
求真实验室
太平洋电脑网是专业IT门户网站,为用户和经销商提供IT资讯和行情报价,涉及电脑,手机,数码产品,软件等。
向TA提问
展开全部

在IDE环境启动执行EOS操作系统时,会将boot.bin、loader.bin和kernel.dll三个二进制文件写入软盘镜像文件中,然后让虚拟机来执行软盘中的EOS操作系统。


仅使用其中一个是不能运行的。


Boot程序的功能是:在Boot程序执行的过程中,CPU始终处于实模式状态。Boot程序利用BIOS提供的int 0x13中断服务程序读取软盘FAT12文件系统的根目录,在根目录中搜寻loader.bin文件。如果Boot程序找到了loader.bin文件,会继续利用int 0x13功能将整个loader.bin文件读入从地址0x1000起始的物理内存,最后跳转到0x1000处开始执行 Loader程序,Boot程序的使命到此结束。


Loader程序的功能是:Loader程序的任务和Boot程序很相似,同样是将其它的程序加载到物理内存中,这次加载的是EOS内核。接下来Loader程序从软盘的根目录中将内核文件kernel.dll载入物理内存0x10000处。然后Loader程序会启动分页机制,将物理内存最开始的约1/8(最小4M)映射到虚拟地址0x80000000处,这样kernel.dll就位于虚拟内存0x80010000处了,这正好是kernel.dll的运行基址。在Loader程序对内核文件进行节对齐操作后,Loader程序就可以跳转到kernel.dll的入口点继续执行,从而将控制权交给内核,Loader程序的使命到此结束。


如果将loader.bin的功能移动到boot.bin文件中,则boot.bin文件的大小仍然能保持小于512字节。 Boot程序的大小被限制在一个软盘扇区(512字节)之内,所以必须非常短小,除了加载并执行Loader程序之外不做任何其它事情。


答:在IDE环境启动执行EOS操作系统时,会将boot.bin、loader.bin和kernel.dll三个二进制文件写入软盘镜像文件中,然后让虚拟机来执行软盘中的EOS操作系统。


仅使用其中一个是不能运行的。


Boot程序的功能是:在Boot程序执行的过程中,CPU始终处于实模式状态。会继续利用int 0x13功能将整个loader.bin文件读入从地址0x1000起始的物理内存,最后跳转到0x1000处开始执行 Loader程序,Boot程序的使命到此结束。


Loader程序的功能是:Loader程序的任务和Boot程序很相似,同样是将其它的程序加载到物理内存中,这次加载的是EOS内核。然后Loader程序会启动分页机制,将物理内存最开始的约1/8(最小4M)映射到虚拟地址0x80000000处,这样kernel.dll就位于虚拟内存0x80010000处了,这正好是kernel.dll的运行基址。


如果将loader.bin的功能移动到boot.bin文件中,则boot.bin文件的大小仍然能保持小于512字节。 Boot程序的大小被限制在一个软盘扇区(512字节)之内,所以必须非常短小,除了加载并执行Loader程序之外不做任何其它事情。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式