程序的重定位问题(程序装入)
来源:互联网 发布:浙江cnc编程招聘信息 编辑:程序博客网 时间:2024/05/06 21:53
在多道程序环境下,要使程序运行,必须先为程序创建进程。而创建进程的第一件事就是:将程序和数据装入内存。如何将一个用户源程序变成可在内存中执行的程序,通常都要进过几个步骤:1.编译:由compiler将源程序编译成若干个目标模块(Object Module);2.链接:由Linker将编译后形成的一组目标模块以及他们所需要的库函数连接在一起,形成一个完整的装入模块(Load Module);3;装入:由Loader将装入模块装入内存。
程序的装入方式一本可分为以下3种:
1.绝对装入方式(Abosolute Loading Mode)
在编译时,如果程序知道将驻留在内存的什么位置,那么,编译程序将产生绝对地址的目标代码。绝对装入方式按照装入模块中的地址,将程序和数据装入内存。装入模块被装入内存后,由于程序中的逻辑地址和实际内存地址完全相同,所以不需要对程序和数据的地址进行修改。
2.可重定位装入方式(Relocation Loading Mode)
绝对装入方式能将目标模块装入到内存中事先指定的位置。在多道程序环境下,编译程序不可能预知所编译的模块应该放在内存的何处,因此,绝对装入方式只适用于单道程序环境。在多道程序环境下,所得到的目标模块起始地址通常从0开始,程序中的其他地址都是相对于起始地址0计算的,此时应该采用可重定位装入方式,根据内存当时的情况,将装入模块装入到内存的合适位置。
值得注意的是:在采用重定位装入方式将程序装入内存后,会使装入模块中的所有逻辑地址和内存的物理地址不同,解决方法是:在装入的时候,将装入模块中指令和数据的逻辑地址修改为物理地址,这一过程就叫重定位。又因为地址变换是在装入时一次性完成的,以后不会再改变,所以称为静态重定位。
3.动态运行时装入方式(Dynamic Run-time Loading)
- 程序的重定位问题(程序装入)
- 程序的重定位问题(程序装入)
- 程序的链接与装入(动、静态重定位)
- 程序的链接与装入(动、静态重定位)
- 程序的重定位
- 程序的装入方式
- 程序的装入和链接
- 程序的装入和链接
- 程序的装入和链接
- 程序的装入和链接
- 操作系统装入程序的方式?
- 程序的装入和链接
- 程序的装入和链接
- 程序的装入和链接
- 程序装入的具体过程
- 程序的装入和链接
- 程序的装入和链接
- 程序问题的定位
- KDevelop开发经验,一个容易出错的地方。
- 某二叉树的前序遍历序列为-+a*b-cd/ef,后序遍历序列为abcd-*+ef/-,问其中序遍历序列是
- 第六周(项目一)——体验常成员函数。
- 儿童大锅饭
- NoSQL for MySQL [HandlerSocket] 之安装与使用
- 程序的重定位问题(程序装入)
- TCP/IP详解--五层协议的作用以及对应的设备
- cf——C. Insertion Sort
- My97DatePicker的使用(弹出日历)
- 一种将二维表转换为一维表的方法
- 一步步学习微软InfoPath2010和SP2010--第十章节--与SharePoint Designer工作流的InfoPath集成(2)--工作流初始化
- 关于一条sql条件查询+排序 如何加索引最合适
- 指针的指针-----《C和指针》98页
- 我独饮却仍然有些念念不忘。