This commit is contained in:
gatieme
2016-08-12 15:54:46 +08:00
parent 7686c2f061
commit d5fd1d5909
4 changed files with 163 additions and 604 deletions
File diff suppressed because it is too large Load Diff
@@ -1,62 +0,0 @@
初始化内存管理
=======
| 日期 | 内核版本 | 架构| 作者 | GitHub| CSDN |
| ------- |:-------:|:-------:|:-------:|:-------:|:-------:|
| 2016-06-14 | [Linux-4.7](http://lxr.free-electrons.com/source/?v=4.7) | X86 & arm | [gatieme](http://blog.csdn.net/gatieme) | [LinuxDeviceDrivers](https://github.com/gatieme/LDD-LinuxDeviceDrivers) | [Linux内存管理](http://blog.csdn.net/gatieme/article/category/6225543) |
在内存管理的上下文中, 初始化(initialization)可以有多种含义. 在许多CPU上, 必须显式设置适用于Linux内核的内存模型. 例如在x86_32上需要切换到保护模式, 然后奇偶内核才能检测到可用内存和寄存器.
#1 启动过程中的内存初始化
-------
在初始化过程中, 还必须建立内存管理的数据结构, 以及很多事务. 因为内核在内存管理完全初始化之前就需要使用内存. 在系统启动过程期间, 使用了额外的简化悉尼股市的内存管理模块, 然后在初始化完成后, 将旧的模块丢弃掉.
#1 建立数据结构
-------
对相关数据结构的初始化是从全局启动函数start_kernel中开始的, 该函数在加载内核并激活各个子系统之后执行. 由于内存管理是内核一个非常重要的部分, 因此在特定体系结构的设置步骤中检测并确定系统中内存的分配情况后, 会立即执行内存管理的初始化.
##1.1 先决条件
-------
##1.2 系统启动
-------
##1.3 节点和内存域的初始化
-------
#2 特定于体系结构的设置
-------
##2.1 内核在内存中的布局
-------
##2.2 初始化过程
-------
##2.3 分页机制初始化
-------
##2.4 注册活动内存区
-------
##2.5 系统的地址空间设置
-------