计算机组成原理·虚拟存储器页式段式和段页式

虚拟存储器·页式·段式·段页式

主存和辅存共同构成了虚拟存储器,在硬件和系统软件的共同管理下工作。对于程序员而言,虚拟存储器是透明的,将主存和辅存的地址空间统一编址
用户编程允许涉及的地址称为虚地址或逻辑地址,虚拟地址对应的是存储空间称为虚拟空间
实际的主存单元地址称为实地址或物理地址,实地址对应的存储空间称为主存地址空间或实地址空间

  • 实地址 = 主存页号 + 页内字地址
  • 虚地址 = 虚存页号 + 页内字地址
  • 辅存地址 = 磁盘号 + 盘面号 + 磁道号 + 扇区号

CPU使用虚地址访存,由辅助硬件找出虚地址和实地址之间的对应关系,并判断这个虚地址对应的存储单元是否已装入内存

  • 在内存,通过地址变换,CPU可直接访问主存指示的数据单元
  • 不在内存,则把包含这个 字的一页或一段调入主存后,在通过虚实地址变换访问

页式虚拟存储器

以页为基本单位,虚拟空间与主存空间划分为同样大小的页,主存的页称为实页页框,虚存的页称为虚页

页表

页表是一张存储在主存中的虚页号和实页号对照表,记录程序的虚页调入主存时被安排在主存中的位置,页表一般长期存在于主存内

1 2 3 4
有效位 脏位 引用位 物理页
  • 有效位(装入位):表示对应页是否在主存
  • 脏位(修改位):表示页面是否被修改过,配合回写策略,判断是否需要写回磁盘
  • 引用位(使用位):配合替换算法进行设置

CPU运行指令时,虚地址转实地址:

  • 页表基址寄存器存放进程的页表首地址
  • 根据虚拟地址高位部分的虚拟页号找到相应的页表项
  • 装入位为1,则取出物理页号和虚拟地址地位进行拼接,形成实际物理地址
  • 装入位为0,说明缺页,需要操作系统进行缺页处理

快表(TLB)

高速缓存器制成,依据程序的局部性原理,内存中的页表称之为慢表,地址转换时,先查快表,命中无需访问主存中的页表
快表通常采用组相联或全相联方式

t r p
标记 有效位 实页号

具有TLB和Cache的多级存储系统

三种缺失的情况

TLB Page Cache 说明
1 命中 命中 命中 TLB命中则Page一定命中,信息在主存,就可能在Cache
2 命中 命中 缺失 TLB命中则Page一定命中,信息在主存,也可能不在Cache
3 缺失 命中 命中 TLB缺失但Page可能命中,信息在主存,就可能在Cache
4 缺失 命中 缺失 TLB缺失但Page一定命中,信息在主存,也可能不在Cache
5 缺失 缺失 缺失 TLB缺失则Page也可能缺失,信息不在主存,也一定不在Cache

段式虚拟存储器

按照程序的逻辑结构划分,将逻辑地址分为段号和段内地址,虚实地址转换是由段表来是实现的,段表是程序的逻辑段和在主存中存放位置的对照表

段号 段首地址 装入位 段长

CPU访存时:

  • 根据段号与段表基地址拼接成对应的段表行
  • 根据段表行的装入位判断是否调入内存
  • 调入内存,则从段表读出该段在主存的起始地址,与段内地址相加,得到对应的主存实地址

段页式虚拟存储器

根据程序的逻辑结构,将每段划分为固定的大小页,主存空间也划分为大小相等的页,程序对主存调入、调出仍以页为基本传送单位
每个程序对应一个段表,每个段表对应一个页表,段的长度必须是页长的整数倍

段号 段内页号 页内地址

CPU访存:

  • 根据段号得到段表地址
  • 从段表中取出该段的页表起始地址,与虚地址段页号合成,得到页表地址
  • 从页表中取出实页号,与页内地址拼接形成实地址

虚拟存储器与Cache的比较

相同 不同
目的均为提供系统性能 Cache主要解决系统速度,虚拟存储器解决主存容量
均把数据划分为小的信息块作为基本传递单位,虚存系统的信息块更大 Cache由硬件实现,对程序员透明,虚拟存储器由OS和硬件实现,是逻辑上的存储器,对系统程序员不透明,对应用程序员透明
都有地址的映射、替换算法、更新策略
均依据程序的局部性原理
posted on 2024-06-04 16:18  blueflylabor  阅读(263)  评论(0编辑  收藏  举报