|
|
发表于 2006-2-17 09:41:34
|
显示全部楼层
这个涉及到对虚拟内存管理和程序执行加载过程的理解。对于有虚拟内存管理机制的计算机,一个程序在运行时并不是全部将硬盘上的可执行文件全部装入内存后,才开始执行程序。而是由一个内核中的函数loader(也被称为加载器)来执行这个加载过程。加载器利用虚拟内存管理机制,利用mmap函数直接将硬盘文件映射到内存线性地址空间中。然后初始化程序运行环境,使程序进入运行状态。当内核正式调度程序运行时,由于程序没有被真正装入内存,就会发生缺页异常。此时虚拟内存机制将发挥作用,将所需要的那个页面装入内存。然后程序就可以接着正常运行了。
这个过程对于静态链接和动态链接的程序都是一样的。但静态链接的程序加载后不需要进行动态符号解析,执行的速度要比较动态链接快一些。 |
|