加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

reactos操作系统实现(7)

发布时间:2020-12-15 05:02:43 所属栏目:百科 来源:网络整理
导读: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:8
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加载到内存物理地址 8M 开始位置,它的虚拟地址是0xC0000000。接着会加载分析ntoskrnl.exe文件,从ntoskrnl.exe文件里分析它,并找到所有需要加载的动态连接库,把这些库全部加载到后面,也就是跟着ntoskrnl.exe,具体内存位置如下图所示:


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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读