备份操作系统镜像文件需要多久(30天操作系统映像文件的组成以及启动时的运行流程)

第三天, 一共写了4份代码:这四部分代码最后编译成了系统盘,也就是操作系统映像,我来为大家讲解一下关于备份操作系统镜像文件需要多久?跟着小编一起来看一看吧!

备份操作系统镜像文件需要多久(30天操作系统映像文件的组成以及启动时的运行流程)

备份操作系统镜像文件需要多久

第三天, 一共写了4份代码:

  1. ipl10.asm,引导区代码
  2. asmhead.asm 进入32位模式
  3. bootpack.c 操作系统
  4. naskfunc, bootpack.c需要调用的汇编函数

这四部分代码最后编译成了系统盘,也就是操作系统映像。

这个操作系统映像被我们放在了软盘里。

电脑开机后,BIOS程序读区软盘的512字节内容到内存的0x7c00处去执行。

这512四节就是映像文件的第一部分代码ipl10.ams的机器码,引导区的代码,

这个代码主要是把软盘上的系统映像除了启动区程序的其他部分复制到内存的0x8200处。 复制完成后,asmhead.asm的机器码所在内存地址为0xc200。

所以,ipl10.asm最后,跳转到了0xc200处,去执行了asmhead.asm,也就是系统映像的第二部分。

asmhead.asm的机器码所在的内存地址为0xc200处,所以asmhead.asm中有一句:org 0xc200

asmhead.asm 同样还是先复制。把映像的第三部分bootpack.c以及第四部分naskfunc复制到了内存的0x00280000处。然后跳转到了0x0028 0000 0x0000001b处,去执行bootpack.c.这就是说跳转到了c代码中去执行。到这里,我们就可以在这个c代码中,去实现操作系统的功能了。

也就是说,用c来完成操作系统的功能。

当然,asmhead.asm还完成了cpu工作模式切换为32位,开启地址线A20,内存使用全局段内存管理表 GDT来管理的方式,这些设置,都是为了能够使用C语言来编写代码所做的准备。

总结:

操作系统映像一共四部分组成:引导区代码,32位模式切换代码,操作系统代码,依赖的汇编函数库。

引导区程序首先被 BIOS程序复制到内存0x7c00处运行。

引导区程序又把32位模式切换代码asmhead,操作系统代码bootpack.c,依赖的汇编函数库 naskfunc复制到内存0x8200处,复制完成后,asmhead执行代码的地址为0xc200,所以,引导区程序的最后,为了去执行asmhead,就跳转到了0xc200处去执行asmhead.

asmhead执行完本来就顺序执行bookrack.c就可以了,但是因为我们要用C 来完成的操作系统的功能,所以需要做一些设置,比如将cpu切换到32位模式,使用全局段内存记录表的形式来管理内存管理。在全局段内存管理表GDT中设置了代码段的地址为0x00280000,所以,就需要将bootpack.c复制到0x00280000处了,这种内存管理的方式,要求把操作系统bootpack.c代码一定要放在GDT规定的内存地址0x00280000处才安全。

设置完,按规定地址复制完,就跳转到了 0x00280000 0x0000001b处去执行bootpack.c了。

其实代码中的2*8:0x0000 001b 值的就是0x00280000 0x0000001b。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页