3. 内存管理

考纲内容

  • 内存管理基础
    • 内存管理的概念
    • 程序装入与链接
    • 逻辑地址与物理地址空间
    • 内存保护
    • 连续分配管理方式
    • 非连续分配管理方式
    • 分页管理方式
    • 分段管理方式
    • 段页式管理方式
  • 虚拟内存管理
    • 虚拟内存的概念
    • 请求分页管理方式
    • 页面置换算法
    • 页面分配策略
    • 工作集、抖动

1. 内存管理概念

1. 内存管理的基本原理和要求
  • 基本原理程序执行前需要先放到内存中才能被CPU处理——缓和CPU和硬盘之间的速度矛盾
  • 功能
    • 内存空间的分配和回收:操作系统完成主存储器空间的分配和管理
    • 地址转换:逻辑地址转换为物理地址
    • 内存空间的扩充:利用虚拟存储技术或者自动覆盖技术,从逻辑上扩充内存
    • 存储保护:保护各道作业在各自存储空间运行,互不干扰
1. 程序的装入和链接
  • 创建步骤
    创建步骤
  1. 编译:编译程序将用户源代码编译成若干模块(高级语言-> 机器语言
  2. 链接:由链接程序将编译后的形成的一组目标模块及所需要的库函数链接在一起,形成一个完整的装入模块(形成逻辑地址
  3. 装入:由装入程序将装入模块装入内存运行(形成物理地址
  • 链接的类型
    • 静态链接程序运行之前,将库函数和目标模块链接成一个完整的可执行程序
      在这里插入图片描述
    • 装入时动态链接:将用户源程序编译后得到目标模块,装入内存时,采用边装入边链接的方式
      在这里插入图片描述
    • 运行时动态链接:对于某些目标模块的链接,程序需要时才会对其链接
      • 便于修改和更新,便于实现对目标模块的共享
        在这里插入图片描述
2. 装入模式
1. 绝对装入
  • 思想编译时,产生绝对地址装入时按照实际的内存地址,将程序和数据装入内存
  • 优点不需要对程序和数据的地址进行修改
  • 使用场景:只适用于单道程序环境
    在这里插入图片描述
2. 可重定位装入(静态重定位)
  • 思想装入时,将程序和数据装入内存的相对地址
  • 概念
    • 重定位装入时对目标程序中指令和数据的修改过程
    • 地址变换装入时一次完成
  • 特点
    • 作业装入内存时,必须给它分配所需的全部内存空间(若没有足够的内存,则不能装入该作业)
    • 运行中作业不能在内存中移动,也不能申请内存空间
  • 使用场景早期多道批处理阶段
    在这里插入图片描述
3. 动态运行时装入(动态重定位)
  • 思想:装入程序把装入模块装入内存后,并不立即把装入模块中的相对地址转换为绝对地址,当程序真正执行时才进行转换
  • 特点
    • 需要重定位寄存器支持
    • 可以将程序分配到不连续的存储区中
    • 程序运行前,可只装入它的部分代码即可投入运行
    • 程序运行期间,动态申请分配内存,便于程序段的共享
    • 可以向用户提供更大的地址空间
  • 使用场景现代操作系统
    在这里插入图片描述
3. 逻辑地址空间和物理地址空间
  • 相对地址:编译后,每个目标模块都从0号单元开始编址
  • 逻辑地址空间:链接程序顺序依次按各个模块的相对地址构成统一的从0号单元开始编址的地址空间
    • 内存管理的具体机制对程序员完全透明
  • 物理地址空间:内存中物理单元的集合,是地址转换的最终地址,进程在运行时执行指令和访问数据,最后都要通过物理地址从主存中存取
  • 地址重定位装入程序将可执行代码装入内存时逻辑地址转换为物理地址的过程
4. 内存保护的两种方法
  • CPU中设置上下限寄存器存放用户作业在主存中的下限和上限地址,每当CPU要访问一个地址时,分别和两个寄存器的数据比较,判断有无越界
  • 采用重定位寄存器(基址寄存器)和界地址寄存器(限长寄存器)重定位寄存器包含最小物理地址值,界地址寄存器包含逻辑地址的最大值
    • 地址转换过程逻辑地址->界地址寄存器->重定位寄存器->物理地址
      重定位地址转换过程
2. 覆盖与交换(大纲已删除)
1. 覆盖
  • 对象同一个程序或进程
  • 思想:将程序分为多个段(多个模块)。常用的段常驻内存,不常用的段在需要时调入内存
  • 实现:将用户空间分为一个固定区和若干覆盖区,活跃部分放在固定区,即将访问的放在覆盖区
  • 注意
    • 程序员声明覆盖结构,操作系统完成
    • 对用户不透明,增加了编程负担
  • 特点:打破了必须将一个进程的全部信息装入主存后才能运行的限制,内存中能够更新的地方只有覆盖区的段,不在覆盖区的段会常驻内存
    覆盖
2. 交换
  • 对象不同进程(或作业)
  • 思想:内存空间紧张时,系统将内存中某些进程暂时换出外存,把外存中某些已具备运行条件的进程换入内存(进程在内存与磁盘间动态调度)
  • 换出将处于等待状态的程序从内存中转移到辅存
  • 换入把准备好竞争CPU运行的程序从辅存转移到内存
  • 结构:把磁盘空间分为文件区对换区两部分
    • 文件区:主要用于存放文件,主要追求存储空间的利用率,采用离散分配方式
    • 对换区:只占磁盘空间的小部分,被换出的进程数据就存放在对换区,主要追求换入换出速度,采用连续分配方式
  • 交换存在的问题
    • 备份存储,使用快速硬盘,要求存储空间足够大,并且能够对内存映像进行直接访问
    • 转移时间和所交换的内存空间成正比
    • 只有进程空闲状态才能将进程换出
    • 交换空间通常作为磁盘的一整块,且独立于文件系统,因此使用起来会很快
    • 通常在有许多进程运行且内存吃紧时开始启动,系统负荷降低就暂停
  • 注意PCB会常驻内存,不会被换出外存
3. 连续分配管理方式
  • 连续分配方式:为一个用户程序分配一个连续的内存空间
  • 特点:用户进程(或作业)在主存中连续存放
1. 单一连续分配
  • 策略内存分为系统区和用户区,系统区仅供操作系统使用,通常在低地址部分,用户区为用户提供。内存中永远只有一道程序
  • 优点
    • 不必进行内存保护,不会出现越界异常
    • 实现简单,无外部碎片,采用覆盖技术,不需要额外技术支持
  • 缺点
    • 只适用于单用户、单任务的操作系统
    • 存在内部碎片,存储器利用率低
      在这里插入图片描述
2. 固定分区分配
  • 策略:将内存划分为若干个固定大小的区域,每个分区只装入一道作业
  • 种类
    • 分区大小相等:用一台计算机去控制多个相同对象的场合,缺乏灵活性
    • 分区大小不等:划分为多个较小的分区,适量的中等分区和少量大分区
  • 优点
    • 适用于多道程序的存储,无外部碎片
  • 缺点
    • 可能有程序太大,无法放入任何一个分区,必须采用覆盖技术
    • 主存利用率低,存在内部碎片
    • 不能实现多进程共享一个主存区,存储空间利用率低
      在这里插入图片描述
3. 动态分区分配(可变分区分配)
  • 策略:在进程装入内存的时候,根据内存的大小动态的建立分区
    在这里插入图片描述

  • 优点:分区大小可以根据进程的实际情况进行分配,无内部碎片

  • 缺点:存在外部碎片,最后导致主存利用率下降(采用紧凑技术可以缓解这种缺陷,需要动态重定位寄存器支持)

  • 动态分配算法

    • 首次适应算法(First Fit)
      • 定义: 空闲分区按地址递增的顺序进行查找,找到第一个满足要求的分区进行分配
      • 优点综合性能最好,算法开销小,回收分区后不需要对空闲分区队列重新排序
    • 最佳适应算法(Best Fit)
      • 定义:按照容量递增的顺序进行查找分区,将第一个满足条件的进行分配
      • 优点:可以尽可能多地留下大片的空闲区
      • 缺点:性能较差,产生最多的外部碎片,回收分区后可能需要对空闲队列重新排序
    • 最坏适应算法(最大适应算法)(Worst Fit)
      • 定义:按照容量递减的次序进行查找,第一个满足条件的进行分配
      • 优点:可以减少难以利用的小碎片
      • 缺点导致很快没有较大的内存块,性能很差,不利于大进程,算法开销大
    • 邻近适应算法(循环首次适应算法)(Next Fit)
      • 定义:分配内存时从上次查找结束的位置开始继续查找
      • 优点:算法开销小
      • 缺点会使高地址的大分区也被用完
        在这里插入图片描述
4. 总结

在这里插入图片描述

4. 非连续分配管理方式
  • 特点允许一个程序分散地装入不相邻的内存分区
1. 基本分页存储管理方式
1. 设计思想
  • 主存空间划分为大小相等且固定的块,块相对较小,作为主存的基本单位,进程以块为单位进行空间申请
  • :分页存储与固定分区技术很像,但是其分页相对于分区又很小,分页管理不会产生外部碎片,产生的内部碎片也很小
2. 分页存储的基本概念
  • 页面和页面大小
    • 页(页面):进程中的块
    • 页框(内存块,物理块,物理页,页帧):内存中的块
    • 页与页框大小:进程申请主存空间,为每个页面分配主存中可用页框,即页与页框一一对应
  • 地址结构页号 + 页内偏移(决定了虚拟内存的寻址空间大小)

页面大小 <=>页内偏移量位数 -> 逻辑地址结构
在这里插入图片描述

  • 页表通常存在PCB中)
    • 每个进程一张页表,记录页面在内存中对应的物理块号,一般存放在内存
    • 页表项页号 + 物理内存中的块号
      • i号页表项地址=页表始址 + i * 页表项大小
      • 特点连续存放,页号隐含,不占存储空间
      • 作用:找到该页在内存中的位置
    • 物理地址 = 页表项的物理内存块号 + 页内偏移
      在这里插入图片描述
      在这里插入图片描述
3. 基本地址变换机构
  • 任务:将逻辑地址转换为内存中的物理地址
  • 实现流程
    在这里插入图片描述
  • 地址变换过程:逻辑地址为A,页面大小为L(页面大小为2的整数幂
    • 计算页号P = A/L,页内偏移量W = A%L
    • 比较页号P和页表长度M,若P ≥ \ge M产生越界中断
    • 页表中页号P对应的页表项地址=页表始址F + 页号P × \times ×页表项长度,取出该页表项内容b
    • 计算物理地址E = b(块号) × \times ×L(块大小) + W(页内偏移)
  • 硬件支持——页表寄存器PTR
    • 进程执行时,存放页表在内存中的起始地址F和页表长度M
    • 进程未执行时,页表的始址和页表长度放在PCB中
  • 特点
    • 整个地址变换由硬件自动完成
    • 借助于页表实现
    • 页式管理中地址空间是一维
    • 共有两次访存
      • 访问页表,确定所存取的数据或指令的物理地址
      • 根据该地址存取数据或指令
  • 存在的问题
    • 每次访存操作都需要进行逻辑地址到物理地址的转换,地址变换过程必须足够快,否则访存速率会降低
    • 每个进程引入页表,用于存储映射机制,页表不能太大,否则会降低内存利用率
4. 具有快表的地址变换机构
  • 优化:地址变换机构中增加一个具有并行查找能力的高速缓冲寄存器(快表),又称相联存储器(TLB)(相联存储器既可以按照地址查找也可以按照内容查找),用来存放当前访问的若干页表项的副本
    在这里插入图片描述
  • 实现流程
    带有快表的页式存储管理
  • 地址变换过程
    • CPU给出逻辑地址后,由硬件进行地址转换,查询快表中是否命中
    • 若快表命中,直接将快表中该页对应的页框号与页内偏移量拼接成物理地址
    • 若快表未命中,再按照正常方式从页表中查询相应页表项,并将该表项存入快表中
  • 特点
    • 基于局部性原理
    • 快表命中只需一次访存,快表未命中需要两次访存
      在这里插入图片描述
5. 两级页表
  • 原因:如果页数过多,就会导致页表过多,可以设置一个存储页表的页表
  • 逻辑地址空间格式
    在这里插入图片描述
  • 注意
    • 顶级页表最多只能有一个页面
    • 建立多级页表的目的在于建立索引,不必浪费主存空间去存储无用的页表项,也不用盲目式的查询页表项
      在这里插入图片描述
2. 基本分段存储管理方式
1. 出发点
  • 分页:从计算机角度考虑设计的,目的是为了内存的利用率提高计算机性能,分页通过硬件机制实现,对用户完全透明
  • 分段:从用户和程序员的角度提出,满足方便编程信息保护和共享动态增长动态链接等多方面的需要
2. 分段
  • 按照用户进程中的自然段划分逻辑空间
  • 段内要求连续,段间不要求连续
  • 地址结构 = 段号S + 段内偏移量W
  • 页式系统中,页号和页内偏移对用户透明
  • 段式系统中,段号和段内偏移量必须由用户显示提供
    在这里插入图片描述
3. 段表
  • 每个进程都有一张逻辑空间与内存空间映射的段表,这个段表项对应进程的一段,段表项记录该段在内存中的始址和长度
  • 段表内容 = 段号 + 段长 + 本段在主存中的地址
    在这里插入图片描述
4. 地址变换机构
  • 实现流程
    在这里插入图片描述
  • 地址变换过程
    • 逻辑地址A 中取出段号S和段内偏移量W
    • 比较段号S和段表长度M,若S>=M,则产生越界中断,否则继续执行
    • 段号S对应的段表项地址 = 段表始址F + 段号S × \times × 段表项长度,从该段表项中取出段长C,比较段内偏移量与C的大小判断是否出现越界
    • 取出段表项中该段的始址b,计算E = b + W,用得到的物理地址E区访问内存
  • 硬件支持——段表寄存器:存放段表始址F和段表长度M
  • 特点
    • 地址空间是二维
    • 有外部碎片,无内部碎片
5. 段的共享和保护
  • 共享:两个作业的段表中相应表项指向被共享段的同一个物理副本来实现的
    • 不能修改的代码和数据可以共享
  • 纯代码(可重入代码):不可修改的代码
  • 保护机制
    • 存取控制保护
    • 地址越界保护
      在这里插入图片描述
3. 段页式管理方式
  • 思想
    • 作业的地址空间首先被分成若干逻辑段,每段有自己的段号
    • 每个段分成若干大小固定的页
    • 对内存空间的管理仍然和分页存储管理一样
  • 地址结构段号S+页号P+页内偏移量W
  • 地址变换方式
    • 实现流程
      在这里插入图片描述
  • 特点
    • 每个进程建立一张段表,每个分段有一张页表
    • 有一个段表寄存器,指出作业的段表始址和段表长度(段表寄存器和页表寄存器的作用:在段表或页表中寻址判断是否越界
    • 段表只有一个,页表可能有多个
    • 需要三次访问主存
    • 地址空间是二维的
    • 无内部碎片,无外部碎片
      在这里插入图片描述
      在这里插入图片描述
5. 虚拟内存的基本概念
1. 传统存储管理方式的特征
  • 一次性作业必须一次性全部装入内存后,才能开始运行
    • 当作业很大而不能全部被装入内存时,将使该作业无法运行
    • 当大量作业要求运行时,由于内存不足以容纳所有作业,只能使少数作业先运行,导致多道程序度的下降
  • 驻留性:作业装入内存后,一直驻留在内存中,任何部分不会被换出
2. 局部性原理
1. 时间局部性
  • 定义:一条指令执行后,不久之后指令可能被再次执行,数据被访问后,不久后可能再次被访问
  • 原因程序中存在着大量的循环操作
  • 实现将最近的指令和数据存储在高速缓存存储器中,并使用高速缓冲的层次结构实现
2. 空间局部性
  • 定义:一旦程序访问了某个存储单元,不久之后附近的存储单元也将被访问
  • 原因指令通常是顺序存放、顺序执行的,数据一般也是以向量、数组、表等形式簇聚存储的
  • 实现使用较大的高速缓存,将预取机制集成到高速缓冲控制逻辑中实现
3. 虚拟存储器的定义和特征
  • 定义:基于局部性原理,程序的一部分装入内存,一部分留在外存,需要的时候将外存内容调入内存
  • 特征
    • 多次性:作业在运行时,分多次调入内存运行
    • 对换性:作业不必一直驻留内存,允许作业在运行过程中进行换进换出
    • 虚拟性:从逻辑上扩充内存容量
  • 注意
    • 虚拟内存的最大容量由计算机结构(CPU寻址范围)确定
    • 虚拟内存的实际容量 = min { 内存和外存容量之和,CPU寻址范围 }
4. 虚拟内存技术的实现
  • 基础:建立在离散分配的内存管理方式上
  • 实现方式
    • 请求分页存储管理
    • 请求分段存储管理
    • 请求段页式存储管理
  • 硬件支持
    • 一定容量的内存和外存
    • 页表机制(段表机制)
    • 中断机构:当用户程序要访问的部分尚未调入内存时,则产生中断
    • 地址变换机构:逻辑地址到物理地址的转换
5. 请求分页管理方式
1. 定义
  • 系统建立在基本分页系统基础之上,为了支持虚拟存储器功能而增加了请求调页功能和页面置换功能
2. 页表机制
  • 组成
    在这里插入图片描述
    • 状态位P:当前页是否已经调入内存
    • 访问字段A:记录本页在一段时间内被访问的次数
    • 修改位M:记录本页是否被修改过
    • 外存地址:指出该页在外存上的位置(通常是物理块号)
3. 缺页中断机构
  • 原则:当前页面不在内存时就产生缺页中断
  • 不同于一般中断的特点
    • 指令执行期间产生中断,而不是指令执行之后产生中断和处理中断,属于内部中断
    • 一条指令在执行期间,可能产生多次缺页中断
      在这里插入图片描述
4. 地址变换机构
  • 执行流程
    • 检索快表,若找到访问页修改页表项中的访问位(写指令还需要重置修改位),利用页表项中给出的物理块号和页内地址形成物理地址
    • 没有找到该页的页表项去内存中寻找页表,看该页是否已经调入内存,没有调入则产生缺页中断,请求从外存把该页调入内存
      在这里插入图片描述
      在这里插入图片描述
6. 页面置换算法
1. 最佳置换算法(OPT)
  • 策略:选择永不使用或者最长时间内不再访问的页面进行淘汰
    在这里插入图片描述
  • 优点缺页率最小,性能最好
  • 缺点无法实现
2. 先进先出页面置换算法(FIFO)
  • 策略:优先淘汰最早进入的页面
    在这里插入图片描述
  • 优点:实现简单,只需把调入内存的页面根据先后顺序链接成队列,设置一个指针总指向最早的页面
  • 缺点
    • 与进程的实际运行规律不匹配
    • 出现Belady异常(增大分配的物理块数但是页故障数不减反增)
3. 最近最久未使用置换算法(LRU)
  • 策略:选择最近最长时间没有被访问的页面进行淘汰,每个页面设置一个访问字段,用来标识上次被访问到现在经历的时间
    在这里插入图片描述
  • 优点:性能接近于OPT算法
  • 缺点
    • 实现复杂,开销大
    • 需要寄存器和栈的支持,LRU是堆栈类的算法
4. 时钟置换算法(CLOCK)
  • CLOCK算法(最近未用算法NRU)
    • 原则被访问过的尽可能留下,未使用过的就淘汰
    • 策略
      • 为每个页面设置一个访问位,再将内存中的页面都通过链接指针链接成一个循环队列
      • 当某页被访问时,其访问位置1。
      • 当需要淘汰一个页面时,只需检查页的访问位。
      • 如果是0,就选择该页换出;如果是1,则将它置0,暂不换出,继续检查下一个页面,若第一轮扫描中所有页面都是1,则将这些页面的访问位依次置0后,再进行第二轮扫描
        在这里插入图片描述
    • 特点
      • 性能接近于LRU算法
      • 最多经过两轮扫描
  • 改进型CLOCK算法
    • 原则最先淘汰未使用过的页面,若全部使用过,优先淘汰未修改过的页面
    • 策略增加一个修改位
      • 第一轮:淘汰(0,0)
      • 第二轮:淘汰(0,1),并将扫描过的页面访问位都置0
      • 第三轮:淘汰(0,0)
      • 第四轮:淘汰(0,1)
    • 特点
      • 替换时首选没有变化的页,节省了时间(修改过的页在替换之前必须写回)
      • 最多经过四轮扫描
        在这里插入图片描述
7. 页面分配策略
  • 驻留集给一个进程分配的物理页框的集合
  • 考虑因素
    • 分配给一个进程的存储量越小,驻留在主存中的进程数就越多,可以提高处理机的时间利用率
    • 分配页数过少,缺页率就越高
    • 页数过多,导致并发度下降,资源利用率降低
  • 分配策略
    • 固定分配局部置换
      • 定义:每个进程分配固定物理块数,缺页的时候就进行换页,只能该进程在内存中的页面选出一页换出
      • 缺点难以确定每个进程应该分配的物理块数,太多导致资源利用率下降,太少导致频繁缺页中断
    • 可变分配全局置换
      • 定义:进程分配一定物理块,系统自身保留一定空闲物理块,如果进程缺页,就对该进程分配新的物理块
      • 优点:最容易实现,动态调整物理块分配
      • 缺点:如果盲目分配物理块,会导致多道程序并发能力下降
    • 可变分配局部置换
      • 定义:每个进程分配固定物理块数,根据进程的缺页情况,对物理块进行动态分配,如果频繁缺页,就对其多分配物理块,如果缺页率特别低,就减少其物理块
      • 优点保持了系统的多道程序并发能力
      • 缺点:增大了开销,实现复杂
        在这里插入图片描述
  • 调入页面的时机
    • 预调页策略运行前调入,主要用于进程的首次调入
    • 请求调页策略运行时调入,一次调入一页
  • 从何处调入页面
    • 拥有足够多的对换空间全部从对换区调入所需页面,,提高调页速度
    • 缺少足够的对换空间不会被修改的从文件区调入,可能被修改的换入对换区,以后再从对换区调入(读速度大于写速度)
    • UNIX方式没有运行的页面从文件区调入,曾经运行过但又被换出的页面放在对换区
8. 抖动
  • 定义:刚换出的页面又要换入内存
  • 原因
    • 分配的物理块数过少(主要原因)
    • 置换算法不当
9. 工作集
  • 定义:某段时间内,进程要访问的页面集合
  • 注意驻留集大小要大于工作集大小,否则会导致抖动现象
10. 地址翻译
  • TLB -> 页表(TLB不命中) -> Cache -> 主存(Cache不命中) -> 外存(缺页)
  • 设系统满足以下条件
    • 有一个TLB和一个data Cache
    • 存储器以字节为编制单位
    • 虚拟地址14位
    • 物理地址12位
    • 页面大小位64B
    • TLB为四路组相联,共有16个条目
    • data Cache是物理寻址、直接映射的,行大小为4B,共有16组

写出访问地址为0x03d4, 0x00f1和0x0229的过程

  • 本系统以字节编址,页面大小为64B,则页内偏移量为6位,虚拟页号=14-6=8位,物理页号=12-6=6位
  • TLB为四路组相联,共有16个条目,则TLB共有16/4=4组,因此虚拟页号中低2位为组索引,高6位为TLB标记
  • cache行大小为4B,因此物理地址中低2位为块位移,cache有16组,可知接下来4位为组索引,剩下高6位作为标记
    在这里插入图片描述
    在这里插入图片描述

先把十六进制的虚拟地址0x03d4,0x00f1和0x0229转化为二进制形式,如表所示
在这里插入图片描述
得到每个地址的组索引和TLB标记,接下来就要找出每个地址的页面在不在主存中,若在主存中,则还要找出物理地址

  • 对于0x03d4,组索引为3,TLB标记为0x03,查TLB,第3组正好有标记为03的项,有效位为1,可知页面在主存中,对应的物理地址为0d(00 1101),再拼接页内地址 01 0100,可得物理地址为0x354(0011 0101 0100)
  • 对于0x00f1,组索引为3,TLB标记为0x00,查TLB,第3组没有标记为00的项,再去找页表,虚拟页号为0x03,页表第3行的有效位为1,可知页面在主存中,对应的物理地址为02(00 0010),再拼接页内地址 11 0001,可得物理地址为0x0b1(0000 1011 0001)
  • 对于0x0229,组索引为0,TLB标记为0x02,查TLB,第0组没有标记为02的项,再去找页表,虚拟页号为0x08,页表第8行的有效位为0,页面不在主存中,产生缺页中断

找出在主存中的页面的物理地址后,就要通过物理地址访问数据,接下来要找该物理地址的内容在不在Cache中,如表所示
在这里插入图片描述

  • 对于0x354,Cache索引为5,Cache标记为0x0d,对照Cache中索引为5的行,标记正好为0d,有效位为1,可知该块在Cache中,偏移为0,即块0,可得虚拟地址0x03d4的内容为36H
  • 对于0x0b1,Cache索引为c,Cache标记为0x02,对照Cache中索引为c的行,有效位为0,可知该块不在Cache中,要去主存中查找物理页号为2、偏移为0x31的内容
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值