第四部分 装载
1、windows把4G 的虚拟空间分成两部分高2G地址由系统用,低2G地址由自己用
2、装入内存分覆盖装入和页映射
一、覆盖装入 在嵌入式系统中当内存限制的时候,采用的这种方法,当程序分成好几个模块的时候,公用的模块装入,正要用的装入,不用的等待
二、页映射 内存分页然后整页的装入与交换
3、进程的建立
一、建立独立的虚拟空间 建立一个映射函数所需要的数据结构,由虚拟空间到物理地址的映射关系
二、读取文件头,建立虚拟空间和可执行文件的映射关系,当发生页错误的时候,操作系统取物理页,把磁盘中的缺页装载到这个物理页,然后建立物理页和虚拟页的关系,这时候操作系统记录了缺页在文件中的位置也是偏移,
三、将CPU寄存器设置成可执行文件的入口地址,启动运行
4、页错误
当CPU想执行一个页文件的时候,发生页错误,把控制权交给操作系统,操作系统根据页错误处理函数和建立的文件与虚拟空间的映射结构,找到虚拟空间中的空白页,然后建立物理内存和虚拟地址的映射,程序继续执行
5、PE文件的装载
读取第一个页,包含了PE头和段尾等信息,.................检查要装载的地址空间是否可用,不可用换地址.................根据PE头提供的信息把各个段映射到地址空间去........
装载PE所需要的DLL文件...........对所有的导入符号进行解析..........初始化堆栈.........建立主线程启动程序