重定位----操作系统做的事情

原创 2013年12月05日 21:39:04
1.逻辑地址空间
  
  在多道程序设计中,往往会有多个作业同时存放在内存中,而每个用户预先无法知道他的作业被装在主存的什么位置,为了方便编程,每个用户可以认为自己的程序和数据放在从O地址开始的一组连续地址空间中,该地址空间就是逻辑地址空间。
  
  2.逻辑地址
  
  逻辑地址空间中,地址单元的编号称为逻辑地址。
  
  3.绝时地址空间
  
  绝对地址空间就是主存中一系列连续存储信息的物理单元的集合,也称存储地址空间或物理地址空间。
  
  4.绝对地址
  
  绝对地址空间中物理单元的编一号称为绝对地址。
  
  5.重定位
  
  由于程序中的逻辑地址和实际分配后主存储器的绝对地址不一致,为使处理器能按实际地址正确地访问主存,必须进行地址转换。逻辑地址转换成绝对地址的过程称为重定位,也称为地址转换。
  
  重定位的方式有静态定位和动态定位两种。
  
  (1)静态重定位。所谓静态重定位是在装入一个作业的时候,把作业中的指令地址和数据地址全部一次性地转换成绝对地址,由于地址转换是在作业执行一次完成的,装入主存中的作业信息已经是用绝对地址指示的,所以作业在执行过程中,无需再进行地址转换,且不能移动位置。
  
  (2)动态重定位。所谓动态重定位是指在装入作业时,不进行地址转换,而是直接把作业装入到分配的主存区域中。在作业执行过程中,每当执行一条指令时由硬件的地址转换机构将指令中的逻辑地址转换成绝对地址。动态重定位是由软件和硬件相配合来实现的,硬件有一个地址转换机构,该机构有一个基址寄存器和一个地址转换线路组成。基地址寄存器中存放作业所占主存的起始地址,所以地址转换公式为:
  
  绝对地址=基地址寄存器的值+逻辑地址
  
  动态重定位的优点是:
  
  ·程序可在内存中移动,当程序移动后,只要将新的主存区域的首地址放进基址寄存器中就可以了;
  ·易实现程序共享;
  ·有可能提供虚拟存储空间。
  
  采用动态重定位的系统支持程序浮动,而采用静态重定位的系统不支持程序浮动。
版权声明:开放

重定位和链接

链接和重定位是嵌入式C中很重要的部分,对于这一块掌握的越精细越好。 指令位置分类 指令分为两种: 位置无关编码(PIC):汇编源文件被编码成二进制可执行程序时编码方式与位置(内存地址)...
  • u012741741
  • u012741741
  • 2016年07月10日 11:32
  • 2315

重定位相关知识,为什么要重定位

在NT环境下隐藏进程,也就是说在用户不知情的条件下,执行自己的代码的方法有很多种,比如说使用注册表插入DLL,使用Windows挂钩等等。其中比较有代表性的是Jeffrey Richer在《Windo...
  • xuplus
  • xuplus
  • 2008年04月15日 13:25
  • 8404

重定位

为了决定段的大小、符号定义、符号引用,并指出包含那些库模块、将这些段放置在输出地址空间的什么地方,链接器会将所有的输入文件进行扫描。扫描完成后的下一步就是链接过程的核心,重定位。由于重定位过程的两个步...
  • A1342772
  • A1342772
  • 2017年08月29日 11:27
  • 434

程序的重定位

我们在指令中使用了绝对内存地址(物理地址),这样的程序是无法重定位的。为了让你写的程序在卖给别人之后,可以在内存中的任何地方正确执行,就只能在编写程序的时候使用相对地址或者逻辑地址了,而不能使用真实的...
  • u012800711
  • u012800711
  • 2013年11月27日 09:39
  • 841

ELF(七)可重定位目标,部分摘自深入理解操作系统,深入理解linx内核

可重定位目标          重定位是将EFL文件中的未定义符号关联到有效值的处理过程。在main.o中,这意味着对printf和puts的未定义的引用必须替换为该进程的虚拟地址空间中适当的机器代...
  • ylcangel
  • ylcangel
  • 2014年01月12日 20:11
  • 2718

重定位的原理&实现

重定位  病毒自身的重定位是病毒代码在得以顺利运行前应解决的最基本问题。病毒代码在运行时同样也要引用一些数据,比如API 函数的名字、杀毒软件的黑名单、系统相关的特殊数据等,由于病毒代码在宿主进程中运...
  • xuplus
  • xuplus
  • 2008年04月15日 12:01
  • 5031

PE文件重定位

PE格式是Windows环境下可执行文件(如:exe,dll)的格式,而Windows下面的程序,例如动态链接库无法加载到它本身期望加载的地址的时候,便会发生重定位。那么,重定位是如何实现的呢?  ...
  • lookerson
  • lookerson
  • 2014年09月12日 22:10
  • 1210

PE总结 – 重定位表

PE总结 – 重定位表
  • chenlycly
  • chenlycly
  • 2016年11月28日 15:52
  • 953

操作系统 - 地址重定位

 一、主存的无力组织和逻辑组织 1. 绝对地址 计算机中,存储器是按字组织,每个字由若干”位“组成(不同计算机子长不同),每个字分配一个地址 目前以多字节为单位进行编址 系统对存储器中的...
  • w10800337
  • w10800337
  • 2015年04月13日 09:49
  • 1292

静态重定位和动态重定位

对程序进行重定位的技术按重定位的时机可分为两种:静态重定位和动态重定位。 静态重定位:是在目标程序装入内存时,由装入程序对目标程序中的指令和数据的地址进行修改,即把程序的逻辑地址都改成实际的地址。对每...
  • fengzhiyan123
  • fengzhiyan123
  • 2016年08月02日 11:02
  • 3944
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:重定位----操作系统做的事情
举报原因:
原因补充:

(最多只允许输入30个字)