zoukankan      html  css  js  c++  java
  • CR3,PDE,PTE,TLB

    网上关于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失效,这也是进程切换的一个开销。

  • 相关阅读:
    WEB存储
    2D变形
    HTML5音频与视频
    HTML5 canvas元素
    HTML5表单
    Can't finish GitHub sharing process Successfully created project 'springcloud-parent' on GitHub,
    Intellij idea上传项目到github
    Git for Windows安装和基本设置
    Eclipse注释快捷键、如何生成API以及可能遇到的问题解决
    mysql忘记密码
  • 原文地址:https://www.cnblogs.com/zzSoftware/p/2908824.html
Copyright © 2011-2022 走看看