基本概念
1.存储器的层次结构
CPU寄存器-主存-辅存
2.程序的装入
在编辑源程序时,用户通常使用符号名(即符号地址)来访问指令和数据,符号名的集合被称作命名空间。
源程序必须经过编译,链接,装入内存后才能运行,内存中的地址称为绝对地址
(1)绝对装入方式:编译时预先知道程序驻留在内存的什么位置,编译时直接将符号地址转化为绝对地址,在多道程序的环境下,编译程序通常不直接将符号地址翻译为绝对地址,而是从0开始编址,然后重定位到内存中具体计算其绝对地址(大多编程语言均才用此方法)。
重定位分为静态和动态两种:
静态是指在装入时每个模块的地址(绝对地址)都被计算好了。
动态是指即使在装入内存后也能移动,但需要重定位寄存器。
3.程序的链接:
链接是将编译后得到的各个目标模块以及所需的库函数链接在一起,形成一个完整的装入模块。
(1)静态链接方式:
静态链接在程序运行之前,将目标模块和所需的库函数链接成一个完整的装入模块,不管用不用得到,都装内存中,且不再拆开。
(2)装入时动态链接:
装入时链接是指链接在装入时进行,即在在装入一个目标模块时,若在程序中出现就装进去,但不一定调用。
(3)运行时动态链接:
只有调用某个函数时才会装入,不然不装。