目录:
地址的动静态重定位
内存分配算法
程序的链接和装入(静态和动态)
逻辑地址和物理地址
虚拟内存,实际内存,内部外部碎片
地址的重定位
:
程序执行时,必须将地址空间变为绝对地址才能访问系统分配的内存
地址重定位
:操作系统把用户程序指令中的相对地址变换成为所在存储中的绝对地址的过程
地址重定位实现了:从逻辑地址到物理地址的转换
按照重定位时机
分类
:静态重定位、动态重定位
- 地址的静态重定位
定义
:在程序运行之前,为用户程序实行了地址重定位工作
一般由操作系统中的
重定位装入程序
完成
重定位装入程序的
输入
:用户把自己的作业链接装配成一个相对于 0 编址的目标程序
过程:
重定位装入程序根据当前内存的分配情况,按照分配区域的起始地址逐一调整目标程序指令中的地址部分。目标程序在经过重定位装入程序加工之后,不仅进入到分配给自己的绝对地址空间中,而且程序指令中的地址部分全部进行了修正,反映出了自己正确的存储位置,保证了程序的正确运行
特点:
在装入前实现调整
地址要有标识
每次装入都要进行定位
装入后地址不再改变(静态)
- 地址的动态重定位
定义
:在程序执行寻址时进行重定位,访问地址时,通过地址变换机构改变为内存地址
用户程序
原封不动
的装入内存,运行时再完成地址的定位工作
动态重定位需要硬件的支持,要求系统中配备
定位寄存器
和
加法器
特点:
程序可装入任意内存区域(不要求占用连续的内存区)
只装入部分程序代码即可运行
改变系统时不需要改变程序(程序占用的内存空间动态可变,只需要改变定位寄存器中的值即可)
程序可方便共享