博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CR3,PDE,PTE,TLB
阅读量:6224 次
发布时间:2019-06-21

本文共 886 字,大约阅读时间需要 2 分钟。

网上关于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/zzSoftware/archive/2013/02/11/2908824.html

你可能感兴趣的文章
shell无限循环
查看>>
推荐.Net、C# 逆向反编译四大工具利器
查看>>
nginx 在ubuntu 上的启动,停止,重启
查看>>
安装xen和虚拟机以及解决其中出现的问题
查看>>
数据库常用授权和授权回收参数配置
查看>>
华为交换机组播配置
查看>>
数通手稿留档——Switch
查看>>
linux命令:kernel内核编译、装载模块管理modprobe/screen
查看>>
定期删除mysql的log文件的脚本
查看>>
Linux主机安全加固
查看>>
30分钟配置好-Puppet: 强大的中心化配置管理系统
查看>>
Oracle 10G R2 RAC 日常管理
查看>>
一些术语
查看>>
梭子鱼宣布新的云融合防火墙功能
查看>>
linux网络相关配置
查看>>
Linux Vim中自动补全Python插件:Pydiction
查看>>
修改IE背景
查看>>
layer弹框
查看>>
【资料整理】lrzsz的使用
查看>>
WP的SEO工具汇总
查看>>