程序的加载和动态加载

程序的加载(loading)的意思是
把指令和数据装入到内存中

其中一件重要的事情是把程序里用到的
虚拟地址(virtual address)映射到物理地址上(physical address)。每个进程的virtual address可能都从0开始,所以在执行时要把它们映射到不同的physical address上,以免内存空间出现交叠。

简单的做法是利用重定位寄存器为进程存放一个基准地址(base address),然后让 physical address =  base address + virtual address.

如果程序比较大,那么整个加载到内存里会消耗太多内存。 所以可以延迟加载子程序,即直到需要用时再加载子程序,这就是
动态加载 (Dynamic Loading)

还有一个节省内存的方案是覆盖(overlay). 举例来说就是:程序第1部分占用第1段内存,第2部分占用第2段内存, 第3部分发现第1部分程序已经不需要再占用第1段内存,就自己把这段内存占了。

Leave a Comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.