第6章 可执行文件的装载与执行
?
?? ? ? 2. 页映射:
?? ? ? ? ? 下图中P0~P7是“进程虚拟地址空间”中的“虚拟页”(VP, Virtual Page),右边F0~F3是“内存”中的“物理页”(PP, Physical Page)。“OS”中的“存储管理器”需要管理调入缺少虚拟页到物理页等。
?? ? ??
?? ? ? ?查看“页的大小”: $getconf PAGE_SIZE
?? ? ? ?查看“OS位数”:$getconf LONG_BIT
?? ? ? ?查看“CPU位数”: $arch ? ? ==> i686或x86_64则表明机器是64位的
三、从操作系统的角度看可执行文件
?? ? ?由于使用了“分页机制” ,所以提到“可执行文件的装载”并不是一次性完成的,而是分了两步:
??
?? ? ?1. 进程建立时,为“分页装载”做了一些准备,还未真正装载; (1)(2)(3)
?
?? ? ? ? ? ? ? ?(1)分配一个页目录Page Directory,用来记录Virtual Page(进程虚拟地址空间中)到Physical Page(内存中)的映射关系。等执行时发生缺页(Page Fault)时,由OS安排处理调用、填充页目录等。
??? ? ? ? ? ? ? ?(2)在进程数据结构中构造一些VMA(Virtual Memory Area),VMAs保存了Disk Page(磁盘上的可执行文件中)到Virtual Page(进程虚拟地址空间中)的映射关系。注:VMA是OS内部的一个数据结构。
?? ? ? ? ? ? ? ?(3)将CPU指令寄存器设置为可执行文件入口,启动运行
??
?? ? ?2. 缺页(产生页错误)时,才真正地去装载。(4)
?? ? ? ? ? ? ? ?(4)缺少进程虚拟空间的某个VP时,
?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 分配一个物理页PP;
?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 查询VMA,将该VP对应的DP装入PP;
?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 在目录表Page Dir中添加一个“VP->PP”的对应关系。
?
四、进程虚存空间分布
五、Linux内核装载ELF过程
六、Windows PE的装载