1.程序的链接和装入
1)源程序装入主存的步骤:
- 编译:由编译程序(Compiler)将用户源代码编译成若干目标模块;
- 链接:由链接程序(Linker)将编译后形成的一组目标模块以及它们所需要的库函数链接在一起,形成一个完整的装入模块;
- 装入:由装入程序(Loader)将装入模块装入主存
2)程序的链接方式:
- 静态链接:在程序运行前,将各个目标模块以及所需的库函数链接成一个完整的装入模块,又称为可执行文件。
- 装入时动态链接:在装入主存时,采用边装入边链接的方式。即在装入一个目标模块时,若需要调用另一个模块,则找出该模块,将它装入主存,并修改目标模块的逻辑地址。
- 运行时动态链接:指在程序执行过程中当需要该目标模块时,才把它装入主存并进行链接,而不是把所有模块一起装入主存。
3)装入主存的方式:
- 绝对装入方式:如果在编译时就知道程序驻留在主存的具体位置,则编译程序将产生物理地址的目标代码。绝对装入程序按照装入模块的地址,将程序和数据装入主存。模块装入后,由于程序中的逻辑地址和与实际主存地址一致,所以不需要进行地址修改。只适合于单道程序环境。
- 静态重定位装入:在装入作业时,把作业中的指令地址和数据地址一次性全部转换成物理地址,这样在作业执行过程中无无需再进行地址转换。
- 动态重定位装入:在装入时,直接把作业装入主存中。在作业执行时,随着每条指令的访问,由硬件地址转换机制自动将指令中的逻辑地址换成物理地址。地址转换机制由一个基地址寄存器和一个地址转换线路组成。在该方式下,作业可以改变存储区域,则成程序是可浮动的。
2.连续的存储管理
1&#x