地址空间、基址及界限寄存器与动态重定位
发布时间
阅读量:
阅读量
地址空间指的是进程用于定位内存资源的一组地址集合。每个进程都拥有独立的地址空间,这种独立性通常不依赖于其他进程的地址空间(除非在某些特殊场景下需要进行共享)。
为每个程序分配专属的地址空间,可以确保不同程序中相同的逻辑地址(例如28)所映射到的物理内存位置是不同的。实现方式如下:
基址寄存器与界限寄存器
采用一种基础的动态重定位机制,将各个进程的逻辑地址空间映射至物理内存的不同区域。当引入基址寄存器和界限寄存器时,程序可被加载至内存中的连续空闲区域,并且在加载过程中无需进行重定位,如图3-2c所示。在进程运行时,其起始物理地址被写入基址寄存器,而程序长度则被存储到界限寄存器中。从图3-2c可以看出,在第一个程序执行时,基址寄存器与界限寄存器中分别存储了0和16 384这两个数值;而在第二个程序运行时,对应的数值变为16 384和16 384。若第三个大小为16KB的程序直接加载至第二个程序之后并开始运行,则此时基址寄存器与界限寄存器中的值分别为32 768和16 384。
每当一个进程尝试访问内存时,CPU会获取一条指令或读取/写入一个数据字。在此过程中,硬件会在将逻辑地址传输至内存总线之前自动加上基址寄存器中存储的值。与此同时,系统还会验证当前访问的逻辑地址是否超过或等于界限寄存器所设定的最大范围。一旦检测到超出范围的情况,
全部评论 (0)
还没有任何评论哟~
