地址空间及地址安全检测

一、物理地址空间与逻辑地址空间的区别

1、程序经过编译后,每个目标模块都是从0号单元开始编址,称为该目标模块的相对地址(或逻辑地址)。

2、当链接程序将各个模块链接成一个完整的可执行目标程序时,链接程序顺序依次按各个模块的相对地址构成统一的从0号单元开始编址的逻辑地址空间

3、用户程序和程序员只需知道逻辑地址,而内存管理的具体机制则是完全透明的,它们只有系统编程人员才会涉及。

4、不同进程可以有相同的逻辑地址,因为这些相同的逻辑地址可以映射到主存的不同位置。

5、物理地址空间是指内存中物理单元的集合,它是地址转换的最终地址,进程在运行时执行指令访问数据都要通过物理地址从主存中存取。当装入程序(Loader)将可执行代码装入内存时,必须通过地址转换将逻辑地址转换成物理地址,这个过程称为地址重定位

在这里插入图片描述

二、地址安全检测

1)内存分配前,需要保护操作系统不受用户进程的影响,同时保护用户进程不受其他用户进程的影响。

2)通过采用重定位寄存器界地址寄存器来实现这种保护。重定位寄存器含最小的物理地址值,界地址寄存器含逻辑地址值。每个逻辑地址值必须小于界地址寄存器,

3)内存管理机构动态的将逻辑地址与界地址寄存器进行比较,如果未发生地址越界,则加上重定位寄存器的值后映射成物理地址,再送交内存单元。

4)当CPU调度程序选择进程执行时,派遣程序会初始化重定位寄存器和界地址寄存器。每一个逻辑地址都需要与这两个寄存器进行核对,以保证操作系统和其他用户进程(程序)及数据不被该进程的运行所影响。

在这里插入图片描述如果地址越界,会出现内存访问异常!

扫描二维码关注公众号,回复: 11067814 查看本文章
发布了199 篇原创文章 · 获赞 151 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/weixin_44571270/article/details/105658108