zoukankan      html  css  js  c++  java
  • CSAPP笔记(第九章 虚拟内存)-01

    第九章的内容为p595~p649, 分2部分, p596~p618, p618~p649. 本文为第1部分.

    摘要

    本章主要写虚拟内存的原理. 与我之前理解的虚拟内存有很大不同, 之前"以为"的虚拟内存是由于内存容量不够, 临时将内存暂时用不到的部分存到磁盘上.
    应用程序直接与内存交互, 磁盘只是一个备用的存储.

    实际上读了本章发现, 应用程序直接对应虚拟内存, 虚拟内存对应磁盘, 而物理内存是磁盘的缓存. 应用程序需要读取某块虚拟内存的内容时, 先查表看是否物理内存命中, 命中了则从物理内存中读取, 否则触发缺页中断, 从磁盘上将内容复制到物理内存中后, 再继续读取. 而物理内存满后, 则会淘汰物理内存页, 将淘汰的物理内存页写回磁盘.

    这里有一些细节省略了, CPU拿到的是虚拟地址, 需要MMU单元对虚拟地址进行翻译, 翻译为物理地址并取到数据, 在翻译的过程中, 会做很多事情.

    1. 首先地址是分了页的, 一般4K为一页, 先取到虚拟页号
    2. 虚拟页号, 划分为TLBI和TLBT, 根据这2个值去TLB(虚拟页号与物理页号对应关系缓存)中取物理页号
    3. 如果TLB缓存命中, 则执行下一步, 否则要去内存中取虚拟页号与物理页号对应关系
    4. 根据物理页号与虚拟偏移量, 拼出物理地址, 划分为CO, CI, CT. 根据这3个值去L1高速缓存查找数据
    5. 如果L1高速缓存命中, 则返回数据; 否则去内存中查找数据.
    6. 如果内存命中, 则将数据复制到L1高速缓存, 通过高速缓存进行返回; 否则触发缺页中断, 等待磁盘写入内存(DMA)

    上面讲的是读数据的情况, 写数据有两种模式, 直写(write through)与回写(write back). 直写是指写入数据时, 不光要将数据写入L1高速缓存, 同时也要写入内存, 保证数据的强一致性. 回写是指先写入L1高速缓存, 等总线不繁忙时, 再写入内存. 现在采用的是回写方式.

    上面的过程还省略了, 翻译时的权限判断, 多级页表等内容.

    缩写

    本章缩写很多, 先记录一下.

    • PA: Physical Address, 物理地址. M=2^m.

    • VA: Virtual Address, 虚拟地址. N=2^n

    • MMU; Memory Management Unit, 内存管理单元

    • VP: Virtual Page, 虚拟页. P=2^p, 虚拟页大小, 如4K.

    • PP: Physical Page, 物理页, 也被称为page frame

    • PTE: Page Table Entry, 页表条目

    • VPO: 虚拟页面偏移量(字节)

    • VPN: 虚拟页号

    • TLBI: TLB索引

    • TLBT: TLB标记

    • PPO: 物理页面偏移量(字节)

    • PPN: 物理页号

    • CO: 缓冲块内的字节偏移量

    • Cl: 高速缓存索引

    • CT: 高速缓存标记

    • PTBR: Page Table Base Register, 页表基址寄存器

    • TLB: Translation Lookaside Buffer, 翻译后背缓冲器

  • 相关阅读:
    android29
    android28
    android27
    android26
    Dynamics CRM2011 MspInstallAction failed when installing an Update Rollup
    Dynamics CRM Import Solution Attribute Display Name description is null or empty
    The service cannot be activated because it does not support ASP.NET compatibility
    IIS部署WCF报 无法读取配置节“protocolMapping”,因为它缺少节声明
    Unable to access the IIS metabase.You do not have sufficient privilege
    LM算法与非线性最小二乘问题
  • 原文地址:https://www.cnblogs.com/winwink/p/CSAPP_Note_Chapter9_VirtualMemory_01.html
Copyright © 2011-2022 走看看