4.2.1 程序的装入
1 绝对装入方式:绝对装入程序便可按照装入模块中的地址,将程序和数据装入内存,装入模块被装入内存,由于程序中的相对地址(即逻辑地址)与实际内存地址完全相同,故不需对程序和数据进行修改。??(只能将目标模块装入到内存中指定的位置,只适合于单程序环境)
2可重定位装入方式:程序1000号单元处有一条指令load,1, 2500(将2500单元中的整数365取至寄存器1)将此用户程序装入到内存中的10000-15000中,指令地址变成了load,1,12500,。(改装入方式不允许程序运行时在内存中移动位置)
3动态运行时的装入方式:只有在程序真正执行时才进行地址转换(由装入模块中的逻辑地址转换成物理地址),因此装入内存后的所有地址都仍是逻辑地址。
4.2.2 程序的链接
源程序经过编译后,得到一组目标模块,链接程序的功能是将这组目标模块以及它们所需要的库函数装配成一个完整的装入模块,根据时间的不同分为:
1 静态链接方式:在程序运行之前将目标模块和所需库函数链接成一个完整的模块(事先进行链接),以后不再拆开。
装配成一个装入模块时,要解决连个问题:(1)对相对地址进行修改:每块起始地址不再是0,而是0,L,L+M。 (2)变换外部调用符号:有call B变成了JSR “ L”
2装入时动态链接:程序编译后得到一组目标模块:边装入边链接:即在装入一个目标模块时,若发生一个外部模块调用事件,将引起装入程序去找出对应的外部目标模块,并将其装入内存。并修改目标模块中的相对地址。 优点:便于修改和更新,便于实现对目标模块的共享。(???静态链接方式每个应用模板都可以)
网友评论