宁波企业建站系统,wordpress滑验证,招商外包公司,jsp网站建设项目实战总结在多道程序环境下#xff0c;要使程序运行#xff0c;必须先为程序创建进程。而创建进程的第一件事就是#xff1a;将程序和数据装入内存。如何将一个用户源程序变成可在内存中执行的程序#xff0c;通常都要进过几个步骤#xff1a;1.编译#xff1a;由compiler将源程序… 在多道程序环境下要使程序运行必须先为程序创建进程。而创建进程的第一件事就是将程序和数据装入内存。如何将一个用户源程序变成可在内存中执行的程序通常都要进过几个步骤1.编译由compiler将源程序编译成若干个目标模块Object Module2.链接由Linker将编译后形成的一组目标模块以及他们所需要的库函数连接在一起形成一个完整的装入模块Load Module3装入由Loader将装入模块装入内存。 程序的装入方式一本可分为以下3种 1.绝对装入方式Abosolute Loading Mode 在编译时如果程序知道将驻留在内存的什么位置那么编译程序将产生绝对地址的目标代码。绝对装入方式按照装入模块中的地址将程序和数据装入内存。装入模块被装入内存后由于程序中的逻辑地址和实际内存地址完全相同所以不需要对程序和数据的地址进行修改。 2.可重定位装入方式Relocation Loading Mode 绝对装入方式能将目标模块装入到内存中事先指定的位置。在多道程序环境下编译程序不可能预知所编译的模块应该放在内存的何处因此绝对装入方式只适用于单道程序环境。在多道程序环境下所得到的目标模块起始地址通常从0开始程序中的其他地址都是相对于起始地址0计算的此时应该采用可重定位装入方式根据内存当时的情况将装入模块装入到内存的合适位置。 值得注意的是在采用重定位装入方式将程序装入内存后会使装入模块中的所有逻辑地址和内存的物理地址不同解决方法是在装入的时候将装入模块中指令和数据的逻辑地址修改为物理地址这一过程就叫重定位。又因为地址变换是在装入时一次性完成的以后不会再改变所以称为静态重定位。 3.动态运行时装入方式Dynamic Run-time Loading 静态重定位方式可将装入模块装入到内存中任何允许的位置所以可以用于多道程序环境但是这种装入方式并不允许程序运行时在内存中移动位置。因为程序一旦移动的话就必须修改程序和数据的绝对地址。然而实际情况是程序在运行的过程中在内存的位置可能经常要改变此时就应该采用动态重定位的方式。动态重定位的装入程序在把模块装入内存后并不会立即把模块中的相对地址转换为物理地址而是把这种地址转换推迟到程序真正要执行时才进行。因此装入内存后的所有地址仍然是相对地址为了使地址转换不影响指令的执行速度这种方式需要一个重定位寄存器来存储模块在内存中的起始地址。