日期:2014-05-16 浏览次数:20595 次
理解 Linux 使用的内存模型是从更大程度上掌握 Linux 设计和实现的第一步,因此本文将概述 Linux 内存模型和管理。 Linux 使用的是单一整体式结构 (Monolithic),其中定义了一组原语或系统调用以实现操作系统的服务,例如在几个模块中以超级模式运行的进程管理、并发控制和内存管理服务。尽管出于兼容性考虑,Linux 依然将段控制单元模型 (segment control unit model)?保持一种符号表示,但实际上已经很少使用这种模型了。 与内存管理有关的主要问题有: 本文探讨了以下问题,可以帮助您从操作系统中内存管理的角度来理解 Linux 的内幕: 虽然本文并没有详细介绍 Linux 内核管理内存的方法,但是介绍了有关整个内存模型的知识以及系统的寻址方式,这些介绍可为您进一步的学习提供一个框架。本文重点介绍的是 x86 架构,但本文中的知识对于其他硬件实现同样适用。 x86 内存架构 在 x86 架构中,内存被划分成 3 种类型的地址: CPU 使用两种单元将逻辑地址转换成物理地址。第一种称为分段单元 (segmented unit),另外一种称为分页单元 (paging unit)。 下面让我们来介绍一下段控制单元模型。 段控制单元模型概述 这种分段模型背后的基本思想是将内存分段管理。从本质上来说,每个段就是自己的地址空间。段由两个元素构成: 分段地址还包括两个组件 ——?段选择器 (segment selector)?和段内偏移量 (offset into the segment)。段选择器指定了要使用的段(即基址和长度值),而段内偏移量组件则指定
图 1. 转换地址空间使用的两种单元
?
回页首