没有合适的资源?快使用搜索试试~ 我知道了~
Linux 内存管理系统:初始化
4星 · 超过85%的资源 需积分: 9 9 下载量 53 浏览量
2009-06-17
14:24:05
上传
评论
收藏 117KB PDF 举报
温馨提示
试读
7页
本文描述了linux内存管理系统的初始化的处理流程.并对相关的代码进行解释.
资源推荐
资源详情
资源评论
Linux 内存管理系统:初始化
作者:Joe Knapka
臭翻:colyli
内存管理系统的初始化处理流程分为三个基本阶段:
激活页内存管理
在 swapper_pg_dir 中初始化内核的页表
初始化一系列和内存管理相关的内核数据
Turning On Paging (i386)
启动分页机制(i386)
Kernel 代 码 被 加 载 到 物 理 地 址 0x100000(1MB) , 在 分 页 机 制 打 开 后 被 重 新 映 射 到
PAGE_OFFSET + 0x100000 的位置(PAGE_OFFSET 在 IA32 上为 3GB,即进程虚拟地址中用户
空 间 与 内 核 空 间 的 分 界 处 ) 。 这 是 通 过 将 物 理 地 址 映 射 到 编 译 进 来 的 页 表 ( 在
arch/i386/kernel/head.S 中)的 0-8MB 以及 PAGE_OFFSET-PAGE_OFFSET+8MB 实现的。然后
我们跳转到 init/main.c 中的 start_kernel,这个函数被定位到 PAGE_OFFSET+某一个地址。
这看起来有些狡猾。要注意到在 head.S 中启动分页机制的代码是通过让它自己所执行的地
址空间不再有效的方式来实现这一点的;因此 0-4MB 被映射(不明白:hence the 0-4MB
identity mapping.)。在分页机制没有启动之前,start_kernel 是不会被调用的,我们假
定他运行在 PAGE_OFFSET+某一个地方的位置。因此 head.S 中的页表必须同样映射内核代码
所使用的地址,这样后继才能跳转到 staert_kernel 处;因此 PAGE_OFFSET 被映射(不明
资源评论
- sdu_sjjg2012-10-18还可以,不是特别详细.
- libinbin3232013-12-09非常不错, 很好才理解内存管理的文章
心云
- 粉丝: 8
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- AIS2024 valid
- 最入门的爬虫代码 python.docx
- 爬虫零基础入门-爬取天气预报.pdf
- 最通俗易懂的 MongoDB 非结构化文档存储数据库教程.zip
- 以mongodb为数据库的订单物流小项目.zip
- 腾讯云-mongodb数据库, 项目部署.zip
- 腾讯 APIJSON 的 MongoDB 数据库插件.zip
- 理解非关系型数据库和关系型数据库的区别.zip
- 操作简单的Mongodb网页web管理工具,基于Spring Boot2.0支持mongodb集群.zip
- tms-mongodb-web,提供访问mongodb数据的REST API和可灵活扩展的mongodb web 客户端.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功