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

  • 相关阅读:
    WINDOWS操作系统中可以允许最大的线程数
    OCP-1Z0-新051-61题版本-36
    OCP-1Z0-新051-61题版本-37
    OCP-1Z0-新051-61题版本-38
    OCP-1Z0-新051-61题版本-39
    OCP-1Z0-新051-61题版本-40
    OCP-1Z0-新051-61题版本-31
    OCP-1Z0-新051-61题版本-32
    OCP-1Z0-新051-61题版本-33
    OCP-1Z0-新051-61题版本-34
  • 原文地址:https://www.cnblogs.com/zzSoftware/p/2908824.html
Copyright © 2011-2022 走看看