1、程序经过编译后,每个目标模块都是从0号单元
开始编址,称为该目标模块的相对地址(或逻辑地址)。
2、当链接程序将各个模块链接
成一个完整的可执行目标程序
时,链接程序顺序依次按各个模块的相对地址构成统一的从0号单元开始编址的逻辑地址空间
。
3、用户程序和程序员只需知道逻辑地址
,而内存管理的具体机制则是完全透明的,它们只有系统编程人员才会涉及。
4、不同进程可以有相同的逻辑地址,因为这些相同的逻辑地址可以映射
到主存的不同位置。
5、物理地址空间是指内存中物理单元
的集合,它是地址转换的最终地址,进程在运行时执行指令
和访问数据
都要通过物理地址从主存中存取。当装入程序(Loader)将可执行代码装入内存时,必须通过地址转换
将逻辑地址转换成物理地址,这个过程称为地址重定位
。
1)内存分配前,需要保护操作系统
不受用户进程
的影响,同时保护用户进程
不受其他用户进程
的影响。
2)通过采用重定位寄存器
和界地址寄存器
来实现这种保护。重定位寄存器含最小的物理地址值,界地址寄存器含逻辑地址值。每个逻辑地址值必须小于
界地址寄存器,
3)内存管理机构动态的将逻辑地址与界地址寄存器进行比较
,如果未发生地址越界,则加上重定位寄存器的值后映射成物理地址,再送交内存单元。
4)当CPU调度程序选择进程执行时,派遣程序会初始化
重定位寄存器和界地址寄存器。每一个逻辑地址都需要与这两个寄存器进行核对
,以保证操作系统和其他用户进程(程序)及数据不被该进程的运行所影响。
如果地址越界,会出现内存访问异常!
重定位寄存器就是段寄存器或页寄存器,也叫基址寄存器
段寄存器是存在于段式存储管理,段寄存器存的是段基址
页寄存器是存在于页式存储管理,页寄存器存的是起始页号