linux内核初始化的时候要启动分页,既然要启动分页就要有相应的页表,有页表就要有页目录,很多人都知道系统启动的时候要把物理地址的0-8m映射到虚拟地址的0-8m还要再映射到768m-768m+8m,这到底是为什么呢? 
页目录的一个目录项映射4m的内存,为了映射8m的内存就要两个目录项,具体就是第一个和第768个目录项映射前8m的物理内存,而第二个和第769个目 录项映射第4到8m的物理内存,在内核启动到startup_32的时候分页还没有开启,但是已经进入保护模式了,也就是说,指令和数据的寻址已经成了从 段选择子里面取索引值然后查gdt而得到的线性地址了,又因为linux采用平坦模式,事实上避开了硬件分段,那么寻址的每一个地址就直接是物理地址了,但是一旦开启分页,也就是cr0的pg位被置位,那么地址就变为虚拟地址了,就要通过而且必须通过页目录页表映射了,那么考虑下面的代码:

/*

本文转自 dog250 51CTO博客,原文链接:http://blog.51cto.com/dog250/1274045

linux的临时页表映射问题相关推荐

  1. linux 直接映射 页表大小,linux 启动过程临时页表到底映射了多大内存?

    从linux-2.4内核开始,在建立临时页表的时候,一般的教科书都说是映射了8M的物理内存,但是为什么是映射8M呢?当时网上有资料说,8M足够了,但为什么就足够了,一直没有彻底搞清楚,今天又重新分析这 ...

  2. Linux内存管理 - 页表的映射过程初步了解

    Linux下的页表映射分为两种,一是Linux自身的页表映射,另一种是ARM32 MMU硬件的映射. 为什么会分两种:看一下什么是MMU: MMU是Memory Management Unit的缩写, ...

  3. ARMv8 MMU及Linux页表映射:TLB

    <ARM SMMU原理与IOMMU技术("VT-d" DMA.I/O虚拟化.内存虚拟化)> <Linux内存管理:分页机制> <Linux内存管理:内 ...

  4. linux内存管理笔记(八)---内核临时页表的创建

    前面几节,我们已经看到了x86的分段和分页硬件单元把逻辑地址转换为线性地址,再由线性地址转换到物理地址的基本原理,那么这几章我们来主要是内核是怎么实现页表的创建,本章基于imx6ull和qemu来学习 ...

  5. ARMv8 MMU及Linux页表映射 LoyenWang

    背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本: ...

  6. 内存管理源码分析1-ARMV8-AARCH64 MMU 及 linux页表映射过程

    MMU的作用,主要是完成地址的翻译,无论是main-memory地址(DDR地址),还是IO地址(设备device地址),在开启了MMU的系统中,CPU发起的指令读取.数据读写都是虚拟地址,在ARM ...

  7. 深入理解Linux内核页表映射分页机制原理

    前言 操作系统用于处理内存访问异常的入口操作系统的核心任务是对系统资源的管理,而重中之重的是对CPU和内存的管理.为了使进程摆脱系统内存的制约,用户进程运行在虚拟内存之上,每个用户进程都拥有完整的虚拟 ...

  8. Linux页表 - - 启动过程临时页表创建过程

    目录 1.为什么需要虚拟内存地址 2.页表 3.内核启动初始页表创建 获取内核在内存中起始页地址 __create_page_tables 1.为什么需要虚拟内存地址 个人理解通过创建页表实现物理地址 ...

  9. 【Linux内核】内存映射原理

    [Linux内核]内存映射原理 物理地址空间 物理地址是处理器在总线上能看到的地址,使用RISC(Reduced Instruction Set Computing精简指令集)的处理器通常只实现一个物 ...

最新文章

  1. sigsuspend的使用
  2. sdwan安全如何加固?六种安全SD-WAN方案分享
  3. web app中常用插件(zepto--用法类似于jquery、利用nodejs定制zepto)
  4. Hadoop_计算框架MapReduce
  5. hosts文件中同一个域名两个IP的解析顺序
  6. Sublime配置与各种插件
  7. 聊城大学计算机应用基础函授,聊城大学试题计算机应用基础试题
  8. [PAT乙级]1041 考试座位号
  9. leetcode129. 求根到叶子节点数字之和
  10. android 系统(85)---MAT 工具使用
  11. C# 中字符串string和字节数组byte[]的转换
  12. 基于SSM的校园二手交易平台系统
  13. python外包凹多边形生成_用Opencv python裁剪图像中的凹多边形
  14. 杭州用城市大脑治堵4年,怎么限牌还玩升级?
  15. python中的ide是什么意思_用于Python的IDE是什么?
  16. 通过同花顺股票程序化交易接口的止损方法有哪些?
  17. permission denied (publickey)问题的解决
  18. Niubility (分享一) Flink 在快手实时多维分析场景的应用
  19. html显示word大段空白,word 文档中间出现很大一段空白,中间没有其他东
  20. 基本概念 - 二维关系表

热门文章

  1. C# 中的委托和事件(1)
  2. python隐藏部分代码_python隐藏类中属性的3种实现方法
  3. oracle从备份提取归档,Oracle归档模式有备份,丢失数据文件的恢复
  4. 哪个版本好_《道德经》道尽人生大智慧,哪个版本《道德经》的注释比较好呢?...
  5. 【python教程入门学习】用pyecharts绘制带动画效果的“时间轮播图
  6. 如何使用htmlq提取html文件内容
  7. mysql过滤复制的实现
  8. 如何在 Unix 和 DOS 格式之间转换文本文件
  9. 使用ajax追加样式没,ajax-动态添加内容后,jQuery Mobile不应用样式
  10. php脚本函数,PHP执行系统命令函数实例讲解