
Linux内存管理:初始化详解
下载需积分: 9 | 162KB |
更新于2024-08-02
| 58 浏览量 | 举报
收藏
"Linux 内存管理系统初始化详解"
Linux 内存管理系统是操作系统核心的重要组成部分,负责管理和优化系统中物理内存的使用。初始化是其至关重要的一步,确保系统启动时能够正确配置内存空间,并为后续的进程调度和资源分配奠定基础。在Linux内核启动过程中,内存管理的初始化主要涉及以下几个关键步骤:
1. **激活页内存管理**:
Linux内存管理的核心之一是分页机制,它允许操作系统将物理内存划分为固定大小的页,通过页表进行地址转换。在初始化阶段,内核首先会创建并设置页目录(在`swapper_pg_dir`中),这是一个全局的页表,用于映射物理内存到虚拟地址空间。
2. **初始化内核数据结构**:
在这个阶段,内核会初始化一系列与内存管理相关的数据结构,如页表项、空闲页列表、内存节点信息等。这些数据结构对于跟踪内存状态、分配和释放内存至关重要。
3. **启动分页机制**:
在i386架构上,通过调用`TurningOnPaging((i386)`函数来开启分页机制。这个过程涉及到修改控制寄存器`CR0`,设置其中的分页标志位,从而启用硬件分页功能。
4. **内核代码的重新映射**:
Linux内核通常被加载到物理地址0x100000,但在分页机制启动后,会被重新映射到`PAGE_OFFSET + 0x100000`的虚拟地址。`PAGE_OFFSET`在IA32架构上通常是3GB,标志着用户空间和内核空间的边界。这一重映射确保了内核代码可以被正确访问,而无需直接依赖物理地址。
5. **页表的构建**:
在`arch/i386/kernel/head.S`中,会建立一个初始的页表,将物理地址0-8MB映射到虚拟地址0-8MB(称为身份映射),以及将`PAGE_OFFSET`到`PAGE_OFFSET + 8MB`映射。这样做是为了确保内核代码在分页机制启动后仍然可访问。
6. **调用`start_kernel`**:
分页机制启动后,内核跳转到`init/main.c`中的`start_kernel`函数。由于`start_kernel`位于`PAGE_OFFSET`后的某个地址,所以在页表中必须映射这段地址,以便于执行。
7. **头文件中的神奇代码**:
在`head.S`中,有如下代码用于启动分页:
```assembly
/* Enable paging */
3:
movl $swapper_pg_dir-__PAGE_OFFSET,%eax
movl %eax,%cr3/*set the page table pointer..*/
movl %cr0,%eax
orl $0x80000000,%eax
movl %eax,%cr0/*..and set "PG" bit in CR0 to turn on paging */
```
这段代码设置了页目录的地址,并通过修改`CR0`寄存器启用了分页。
通过以上步骤,Linux内核完成了内存管理系统的初始化,为系统后续的运行提供了可靠的内存分配和管理基础。这个过程涉及到了硬件层面的地址映射和软件层面的数据结构初始化,确保了内核能够正确地管理和利用内存资源。
相关推荐








zhenwenxian
- 粉丝: 803
最新资源
- JAVA打造高效企业人事管理系统
- cdt规约测试软件:高效调试与上位机测试工具
- 探索Flash AS3.0特效实例与源文件分享
- 语音智能识别技术文档合集:HMM、LPC、MFCC算法详解
- 基于Socket的网络聊天软件源码实现教程
- DSP Flash烧写工具:56f8xx系列快速编程解决方案
- 掌握SQL与MySQL基础入门及实践技巧
- 21天精通Oracle安装卸载与知识点整理
- AppServ-win32-2.5.9:一站式PHP开发环境下载
- uCOSII操作系统TCP/IP协议栈实现解析
- 刘兵《Web高级程序设计教程》全书要点解析
- Spartan3an LCD 显示技术及其16*2尺寸应用
- 深入解析视频关键帧提取的三种方法
- 基于ATmega8开发板的电压到电流转换实现
- RDB文件处理工具:解包与打包新体验
- MFC扩展库CJ60Lib深度解析及下载指南
- ExtJS 4.0应用部署工具SenchaSDKTools 1.2.3下载
- 全面解析Google Android SDK开发实用范例
- BCG界面库使用教程与详细解析
- C#开发的人事管理系统综合实训教程
- VC开发学生信息管理系统解决方案及二次开发指南
- EPSON打印机清零软件使用教程
- C语言编程实现电子钟:源代码与设计分享
- 深入学习PHP网页编程:实例全面解析