CR3,PDE,PTE,TLB

Copy From https://www.cnblogs.com/zzSoftware/archive/2013/02/11/2908824.html

网上关于virtual address到physical address的转换的文章太多了,写在这里只为了给blog加点内容,以及自己整理下:

32bit OS每个进程有4G的寻址空间,一个32bit的virtual address怎么被映射到physical address上呢?

1.拿到CR3的值,代表PDE Base的物理地址,页目录下占用连续的4K物理内存,共有1k个PTE.

2.根据Virtual Address的Bit31--Bit22为index,PDE Base+ index指向的PTE就是virtual address对应的PTE Base.

3.每个PTE又占用连续的4K物理内存,存放1K个Page.

4.根据virtual address的Bit21--Bit12作为index, PTE base+index指向的Page就是virtual address对应的Page.

5.Page项中有Page的起始物理地址pStart,4K对齐,virtual address的低12bit为offset,pStart+offset就是virtual address对应的physical address了。

那么每个进程应该有连续的4K内存,存放PDE Table, 1K个连续4K内存的PTE Table,共1k*4K=4M,所以需要4K+4M的Memory来存放完整4G的地址转换相关的信息,这样占用的内存太多了。一般进程实际使用的地址只占4G的一小部分,所以OS对那些没用到的virtual address page不会生成对应的PTE Table,以节省内存。

TLB: translation lookaside buffer,是一块cache,cache, PDE, PTE的内容,使得寻址并不都需要访问两次Memory(PDE,PTE)。进程切换会导致TLB失效,这也是进程切换的一个开销。

转载于:https://www.cnblogs.com/jinanxiaolaohu/p/8315209.html

[转帖]CR3,PDE,PTE,TLB 内存管理的简单说明相关推荐

  1. MTK:内存管理机制简单分析

    MTK内存管理机制简单分析 1:内存: 内存,在手机里面,是个较为紧缺的资源,特别是在功能机上面.经常在功能机上面产生的内存不足,申请失败的地方比比皆是, 更是屡见不鲜,经常会为了节省内存,会进行代码 ...

  2. 从零手写操作系统之RVOS内存管理模块简单实现-02

    从零手写操作系统之RVOS内存管理模块简单实现-02 内存管理分类 内存映射表(Memory Map) Linker Script 链接脚本 语法 基于符号定义获取程序运行时内存分布 基于 Page ...

  3. 操作系统 内存管理总结

    目录 内存管理介绍 什么是虚拟内存(Virtual Memory)? 逻辑(虚拟)地址和物理地址 CPU 寻址了解吗?为什么需要虚拟地址空间? 局部性原理 操作系统是如何管理虚拟地址与物理地址之间的关 ...

  4. Linux内存管理(一)——从硬件角度看内存管理

    从硬件角度看内存管理 ①.在操作系统还没有出来之前,程序都是被存放在卡片上,计算机读取一张卡片就运行一条指令.这种从外部存储介质上直接运行指令的方法效率很低 ②.单道编程的内存管理 所谓单道,就是整个 ...

  5. 内存管理两部曲之物理内存管理

    内存管理总览 返利网站 m.cpa5.cn 先笼统地总结下内存管理到底是干啥的,下面这段话摘自<现代操作系统 - 第 3 版>: 内存管理的任务就是有效地管理内存,即记录哪些内存是正确使用 ...

  6. 操作系统 —— (内存)内存管理

    文章目录 内存管理 内存管理主要有四个方面的功能: 内存管理技术 简单存储管理 段式存储管理 页式存储管理 功能2:虚拟页空间 实现:页表 快表TLB:提高访问速度 分页和分段有什么区别(内存管理)? ...

  7. 内存管理器(二)边界标识法

    边界标识算法 前言 首先说明,我们这里的内存管理器主要是以模拟各种内存分配算法为主,从内存申请一片内存然后根据我们所选定的数据结构和算法,实现程序的堆空间的分配,至于内存分配详情我们会在Linux内核 ...

  8. Linux 0.12内核与现代内核在内存管理上的区别

    0.12内核的内存管理比较简单粗暴,内核只用了一个页目录,只能映射4G的线性空间,所以每个进程的虚拟空间(逻辑空间)只能给到64M,最多64个进程:每个进程都有对应的任务号nr,当一个进程需要分配进程 ...

  9. iOS内存管理策略和实践

    来源:http://www.baidu.com/link?url=irojqCBbZKsY7b0L2EBPkuEkfJ9MQvUf8kuNWQUXkBLk5b22Jl5rjozKaJS3n78jCnS ...

最新文章

  1. Java基础-时间复杂度计算方式
  2. python向数据库传输数据时弹出not enough arguments for format string怎么办
  3. 【知乎】怎么成为一个优秀的程序员,而不是一个优秀的码农?
  4. sklearn K折(KFold)交叉验证案例,展开细节代码与cross_validate简写
  5. 探讨一下常见支付系统的对外接口
  6. 网络***检查分析---破解安全隐患问题回答
  7. JAVA共通関数--システム時刻を取得する(1)
  8. flex的三个属性grow、shrink、basis
  9. MySql笔记之数据备份与还原
  10. extjs-mvc结构实践(二):基本页面
  11. 【教程】合成方法的那些事儿(附加练习源文件)
  12. android 名称解释
  13. MacOS Ventura 13.0 Beta8 (22A5352e) 带 OC 0.8.4 三分区原版黑苹果镜像
  14. Echarts 三维地图
  15. 读《消费者行为心理学》-笔记
  16. 服务器2019添加虚拟机,Hyper-V安装Server 2019虚拟机图文教程
  17. 女生适合编程吗,有没有编程很厉害的女生?
  18. L1-6 吉老师的回归 (15 分)
  19. java获取图片像素点的rgb值_java获取图片每个像素点的RGB
  20. speedoffice(word)如何修改行间距

热门文章

  1. Visual C++ 6.0工程中.clw、.ncb、.aps、.aps文件
  2. 线程案例:生产者与消费者
  3. opensuse 安装 php,openSUSE Apache2安装
  4. 让我们成为Java技术的主宰者(www.javathinker.org的建站宗旨)
  5. opencv--python(一)图像和视频处理之读取,显示和保存
  6. Eclipse 日文乱码怎么解决Shift_JIS
  7. Nokia78如何格机
  8. 通过FTP下载中国1km分辨率逐月降水量数据集(1901-2017)
  9. svn:重命名文件之后,不允许提交
  10. pq 中m函数判断嵌套_matlab中M文件if语句嵌套问题