reactos操作系统实现(7)

l FreeLoader 内存布局

0000:0000 - 0000:0FFF: 中断向量表和BIOS数据

0000:1000 - 0000:6FFF: 实模式的栈内存

0000:7000 - 0000:7FFF: 命令行 (multiboot)

0000:8000 - xxxx:xxxx: FreeLoader程序和数据

xxxx:xxxx - 7000:7FFF: 随机分配的堆内存

7000:8000 - 7000:FFFF: 保护模式的栈内存

8000:0000 - 8000:FFFF: 文件系统读取的内存缓冲区

9000:0000 - 9000:FFFF: BIOS 中断13h读取数据缓冲区

A000:0000 - FFFF:FFFF: 保留

l ntoskrnl.exehal.dll内存布局

Freeldr.sys会把ntoskrnl.exe加载到内存物理地址<chmetcnv unitname="m" sourcevalue="8" hasspace="False" negative="False" numbertype="1" tcsc="0" w:st="on"><span lang="EN-US" style="mso-fareast-language:ZH-CN">8M</span></chmetcnv>开始位置,它的虚拟地址是0xC0000000。接着会加载分析ntoskrnl.exe文件,从ntoskrnl.exe文件里分析它,并找到所有需要加载的动态连接库,把这些库全部加载到后面,也就是跟着ntoskrnl.exe,具体内存位置如下图所示:


当然在加载ntoskrnl.exe之前,已经进入保护模式状态,否则是访问不了大于1M的内存空间的。加载ntoskrnl.exe和它所依赖的dll文件之后,就把很多参数传送给ntoskrnl.exe,跳转到ntoskrnl.exe里面运行,这样就进入操作系统内核运行了。

ntoskrnl.exe所依赖的DLL如下图所示:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值