标签:
操作系统对内存的划分和动态分配,就是内存管理的概念。有效的内存管理在多道程序设计中非常重要,不仅方便用户使用存储器、提高内存利用率,还可以通过虚拟技术从逻辑上扩充存储器。内存管理的功能有:
创建进程首先要将程序和数据装入内存。将用户源程序变为可在内存中执行的程序,通常需要以下几个步骤:
程序的链接有以下三种方式:
模块在装入内存时,同样有以下三种方式:
编译后,每个目标模块都是从0号单元开始编址,称为该目标模块的相对地址(或逻辑地址)。当链接程序将各个模块链接成一个完整的可执行目标程序时,链接程序顺序依次按各个模块的相对地址构成统一的从0号单元开始编址的逻辑地址空间。用户程序和程序员只需知道逻辑地址,不同进程可以有相同的逻辑地址,因为这些相同的逻辑地址可以映射到主存的不同位置。
物理地址空间是指内存中物理单元的集合,它是地址转换的最终地址,进程在运行时执行指令和访问数据最后都要通过物理地址从主存中存取。当装入程序将可执行代码装入内存时,必须通过地址转换将逻辑地址转换成物理地址,这个过程称为地址重定位。
内存分配前,需要保护操作系统不受用户进程的影响,同时保护用户进程不受其他用户进程的影响。通过釆用重定位寄存器和界地址寄存器来实现这种保护。重定位寄存器含最小的物理地址值,界地址寄存器含逻辑地址值。每个逻辑地址值必须小于界地址寄存器;内存管理机构动态地将逻辑地址与界地址寄存器进行比较,如果未发生地址越界,则加上重定位寄存器的值后映射成物理地址,再送交内存单元。当CPU调度程序选择进程执行时,派遣程序会初始化重定位寄存器和界地址寄存器。每一个逻辑地址都需要与这两个寄存器进行核对,以保证操作系统和其他用户程序及数据不被该进程的运行所影响。
作业道数 |
内部 碎片 |
外部 碎片 | 硬件支持 |
可用空 间管理 |
解决碎 片方法 |
解决空 间不足 |
提高作 业道数 |
|
---|---|---|---|---|---|---|---|---|
单道连续 分配 |
1 | 有 | 无 |
界地址寄存器、越界 检查机构 |
-- | -- | 覆盖 | 交换 |
多道固定 连续分配 |
<=N (用户空间划 为N块) |
有 | 无 |
|
-- | -- | ||
多道可变连续分配 | — | 无 | 有 |
|
紧凑 |
平台 | 页面大小 | 寻址位数 | 分页级数 | 具体分级 |
---|---|---|---|---|
Alpha | 8KB | 43 | 3 | 13+10+10+10 |
X86_64 | 4 KB | 48 | 4 | 12+9+9+9+9 |
标签:
原文地址:http://www.cnblogs.com/wxgblogs/p/5750929.html