操作系统内存管理

Aug 16, 2016


操作系统对内存的划分和动态分配:

1、内存空间的分配与回收,包括内存的管理与共享。

2、地址转换,把逻辑地址转换成物理地址。

3、内存空间的扩充,利用虚拟存储技术或者自动覆盖技术,从逻辑上扩充内存。

4、存储保护,保证各道作业在各自的存储空间内运行,互不干扰。

一、逻辑地址和相对地址

  每个模块都是从0号单元开始编址,成为模块的相对地址。当链接程序将各个模块链接 成一个完整的可执行程序时,链接程序会顺次统一模块地址,最终构成一个从0开始编码 的逻辑地址空间。

  物理地址是真实地址,操作系统负责逻辑地址和物理地址的转换,将逻辑地址转换成 物理地址的过程称为地址重定位。

二、内存分配管理方式

  内存分配分为连续和非连续两种。 连续分配,是指为用户进行分配一块连续的内存空间,非连续方式允许同一用户进程 分配到非连续的空间。

  连续内存分配方式几乎被淘汰,先不管。(单一连续分配、固定分区分配、动态分区分配) 非连续内存分配方式分为分页和分段,分页又根据是否一次性载入所有页面分为基本分页和 请求分页。

基本分页:

  页块的大小相对于分区要小很多,进程也需要按块划分,进程运行时按块主动申请 地址空间,这样,进程只会在为最后一个不完整的块申请空间时才会产生内部碎片。

  页面大小是2的整数幂。地址结构分为页号P和页内地址偏移量M。系统为每个进程建立了页表, 记录页面在内存中对应的物理块号。页表实现了页号到物理块号的映射。

基本分段:

  段式管理方式按照用户进程中的自然段划分逻辑地址空间。例如,用户进程由主程序、 两个子程序、栈和一段数据组成,就可以把这个用户进程分为5个段,每个段从0开始编址。其逻辑地址 有段号S和段内地址偏移量组成。

段页式管理方式:

  页式管理能够有效的提高内存的利用率,而段式管理能够反映程序的逻辑结构并 有利于段的共享。在段页式系统中,作业首先分段,每个段再分成若干大小固定的页。 作业的逻辑地址分为三个部分:段号、页号、页内偏移量。为了实现地址转换,系统为每个进程 建立一张段表,而每个段有一张页表。