装载、链接与库

来源:互联网 发布:淘宝助理mac官方版 编辑:程序博客网 时间:2024/04/30 06:11

第四部分 装载

1、windows把4G 的虚拟空间分成两部分高2G地址由系统用,低2G地址由自己用

2、装入内存分覆盖装入和页映射

一、覆盖装入  在嵌入式系统中当内存限制的时候,采用的这种方法,当程序分成好几个模块的时候,公用的模块装入,正要用的装入,不用的等待

二、页映射 内存分页然后整页的装入与交换

3、进程的建立

一、建立独立的虚拟空间   建立一个映射函数所需要的数据结构,由虚拟空间到物理地址的映射关系

二、读取文件头,建立虚拟空间和可执行文件的映射关系,当发生页错误的时候,操作系统取物理页,把磁盘中的缺页装载到这个物理页,然后建立物理页和虚拟页的关系,这时候操作系统记录了缺页在文件中的位置也是偏移,

三、将CPU寄存器设置成可执行文件的入口地址,启动运行

4、页错误

当CPU想执行一个页文件的时候,发生页错误,把控制权交给操作系统,操作系统根据页错误处理函数和建立的文件与虚拟空间的映射结构,找到虚拟空间中的空白页,然后建立物理内存和虚拟地址的映射,程序继续执行

5、PE文件的装载

读取第一个页,包含了PE头和段尾等信息,.................检查要装载的地址空间是否可用,不可用换地址.................根据PE头提供的信息把各个段映射到地址空间去........

装载PE所需要的DLL文件...........对所有的导入符号进行解析..........初始化堆栈.........建立主线程启动程序