① 物理存储器和存储地址空间的区别
区别
1、存在方式
物理存储器是实际存在的储存地址,而存储地址空间指逻辑上的储存地址。
物理存储器和存储地址空间两者都用B、KB、MB、GB来度量其容量大小。
物理存储器:是指实际存在的具体存储器芯片。如主板上装插的主存条和装载有系统的BIOS的ROM芯片,显示卡上的显示RAM芯片和装载显示BIOS的ROM芯片,以及各种适配卡上的RAM芯片和ROM芯片都是物理存储器。
存储地址空间:是指对存储器编码(编码地址)的范围。所谓编码就是对每一个物理存储单元(一个字节)分配一个号码,通常叫作“编址”。分配一个号码给一个存储单元的目的是为了便于找到它,完成数据的读写,这就是所谓的“寻址”。
(1)物理地址与高速缓存地址扩展阅读
主板上装插的主存条和装载有系统的BIOS的ROM芯片,显示卡上的显示RAM芯片和装载显示BIOS的ROM芯片,以及各种适配卡上的RAM芯片和ROM芯片都是物理存储器。
存储器是用来存储程序和数据的部件,对于计算机来说,有了存储器,才有记忆功能,才能保证正常工作。存储器的种类很多,按其用途可分为主存储器和辅助存储器,主存储器又称内存储器(简称内存,港台称之为记忆体)。
内存又称主存,是CPU能直接寻址的存储空间,由半导体器件制成。内存的特点是存取速率快。内存是电脑中的主要部件,它是相对于外存而言的。
② 物理地址.内存地址和RVA地址有什么区别
打个比喻:内存,段号,偏移量,存储单元的内容-》学校,班级,学号,具体的学生。通过班级和学号就可以找到对应的学生,内存的访问也类似,通过段号和段内偏移量访问对应的存储单元。
段可以理解为一片连续的内存空间块,开始处指的是这片空间的第一个字节。
对于一个16位的偏移量,它的取值范围是0--65535(2的16次方减去1),所以偏移量可以是1。
你可能混淆了概念,仔细的想一下学校,班级,学号,学生;这种关系就跟内存,段号,偏移量,存储单元的内容一样。 下面介绍一下相关虚拟地址(Relative Virtual Addresses)
PE格式文件中经常用到RVA,即相关虚拟地址,用在不知道基地址的情况下表示一个内存
地址。它需要加上基地址才能得到线性地址(Linear address)。
例如:假设一个可执行程序调入内存0x400000处并且程序从RVA 0x1560处开始执行。那
么正确的开始地址是0x401560。如果可执行程序调入0x100000处,则开始地址为0x101560。
因为PE文件的每一个段不必按同样的边界对齐方式调入,因此RVA地址的计算变得比较复
杂。例如,在文件中每一个段往往按512个字节的方式对齐,而在内存中可能以4096字节的方
式对齐。这方面的介绍可见下面的“SectionAlignment”、“FileAlignment”。举个例子,
假设你知道一个程序从RVA 0x1560开始执行,你想从那儿反汇编它。你发现内存中的段对齐方
式为4096并且.code段开始于内存RVA 0x1560并且有16384字节长;那么你可以知道RVA 0x156
0在这个段的0x560处。你又发现这个段在文件中以512字节方式对齐并且.code开始于文件0x8
00处,那现在你知道了可执行程序开始于0x800+0x560 = 0xd60处。