本文共 2758 字,大约阅读时间需要 9 分钟。
主存和辅存的地址空间统一编址
,用户可以自由编程,不必在乎实际的主存容量和程序在主存中实际存放位置。虚地址或逻辑地址
,虚地址对应的存储空间称为虚拟空间或程序空间。实际的主存单元地址称为实地址或物理地址
,实地址对应的是主存空间或叫实地址空间。如下图: 先送入磁盘,再由操作系统将当前允许所需要的部分调入主存
,供 CPU 使用,其余暂不运行的部分则留在磁盘中。对应关系
,并判断这个虚地址对应的存储单元内容在主存中是否已有
;若有
,则通过地址变换,CPU 可直接访问主存指示的实际单元
;若没有
,则把包含这个字的一页或一段调入主存后
再由 CPU 访问;若主存满了
,则采用替换算法
置换主存的一页或一段。页式虚存、段式虚存和段页式虚存
。这类虚拟存储器,指的是以页为基本单位
。
虚拟空间与主存空间划分为同样大小的页,主存中的页称为实页
,虚存的称为虚页
。
虚拟地址分为虚页号和页内地址
。虚地址到物理地址的转换由页表
实现;页表是一张存放在主存中的虚页号和实页号的对照表
,记录虚页调入主存时被安排在主存中的位置,页表一般长期存放在主存
中。
页表结构如上,由有效位、脏位、引用位和物理页或磁盘地址组成
。
有效位也称装入位
,表示页面是否装入主存中,1 表示已装入,此时地址位对应主存的物理页号
;0 表示没有装入,此时地址位对应磁盘地址
。
脏位也称修改位
,表示页面是否被修改过;虚存机制采用写回法,因此需要脏位。
引用位也叫使用位
,用于配合替换策略进行设置,例如是否实现 FIFO 或 LRU。
在虚存结构下,CPU 执行指令时,需先将虚地址转为主存物理地址
。
每个进程都有页表基址寄存器
,用于存放进程的页表首地址
,根据虚地址高位部分的页号找到相应页表项
,此时若装入位为 1
,则取出物理页号和虚地址低位部分的页内地址拼接组成实际物理地址
;若装入位为 0
,则表示缺页,此时需要操作系统进行缺页处理
。
页式虚存优点:页面长度固定,页表简单,调入方便。
缺点:程序往往不可能正好是页面的整数倍,最后一页的零头将无法利用而造成浪费,并且页不是逻辑上独立的实体,因此处理、保护和共享都比较麻烦。
段式虚拟存储器中的段是按程序的逻辑结构
进行划分的,因此段的长度因程序而异
。
虚地址分为段号和段内地
址。此时虚地址到实地址之间是通过段表
进行,段表是程序的逻辑段和在主存中存放位置的对照表
,其结构如下:
因为段长不定,因此需要在段表中给出段首址和段长
。
使用段式虚存,CPU 访存时,先根据段号与段表基地址拼接成对应的段表行
,再由段表行的装入位判断该段是否已经调入主存,已调入则根据段表中该段在主存的首地址与段内地址读取相关数据。
优点:段的分界和程序的分界与程序的自然分界一致,具逻辑独立性,使得更容易编译、管理、修改和保护,便于多道程序的共享。
缺点:段长不定,分配空间不容易,段间容易留下碎片,不好利用,造成浪费。
将程序按逻辑结构分段
,每段再分成固定大小的页
,主存空间也划分为大小相等的页,程序对主存的调入、调出以页为基本传送单位
。页长整数倍
,段起点需为某一页的起点
。段号、段内页号、页内地址
三部分。CPU 访存时,先根据段号得到段表地址
,从段表取出该段的页表首地址与虚地址段内页号合成页表地址
,再从页表中取出实页号,与页内地址合成主存实地址
。TLB 即快表,是用于加快地址转换
的技术。
为了避免缺页时,频繁访存,可根据程序执行的局部性原理,在一段时间内总是访问某些页时,可以将这些页表项存放在高速缓冲器组成的快表(TLB)
,而把放在主存中的页表称为慢表(Page)
。地址转换时,首先查找快表
,若命中,则无须访问主存中的页表。
TLB 采用全相联或组相联方式
,每个TLB 项由页表表项内容加上一个 TLB 标记字段组成
,TLB 标记用于表示该表项取自页表中哪个虚页号对应的页表项,因此,TLB 标记的内容在全相联方式下就是该页表项对应的虚页号;组相联方式下则是对应虚页号的高位部分,而虚页号低位部分用于选择 TLB 组的组索引。
如上图是一个 Cache 二路组相联,TLB 全相联,CPU 给出 32 位虚地址,查找时将虚页号
与每个 TLB 标记字段
同时进行比较,若有某一项相等且有效位为 1
,则 TLB 命中,此时直接通过 TLB 转换地址
;若 TLB 缺失
,则访问主存查页表
。虚页号分为页目录索引和页表索引
,这两部分对应到相应页表项,相应表项调入 TLB,若 TLB 已满,则采用替换策略;完成虚地址到物理地址转换后,由映射规则找到对应 Cache 行或组,在比较对应 Cache 行高位部分,若相等且有效位为 1,Cache 命中,此时根据块内地址取出对应字送入 CPU。
查找时可以快表慢表同时进行
,一旦 TLB 命中,则慢表的查找作废。
CPU 访存过程如上,可能出现的情况:
a、TLB 缺失,要访问的页面对应的页表项不在 TLB 中; b、Cache 缺失,要访问的主存块不在 Cache 中; c、缺页,要访问的页面不在主存中,三种情况互相组合出的所有可能如下:
Cache 缺失由硬件完成;缺页处理由软件完成,TLB 缺失既可以用硬件完成也可以用软件完成
。
提高系统性能
,两者都有容量、速度、价格的梯度。信息块
,并作为基本传递单位。局部性原理
应用“快速缓存的思想”,将活跃的数据放在相对高速的部件中。系统速度
,而虚存主要解决系统主存容量
。硬件实现
,是硬件上的存储器;虚存由 OS 和硬件共同实现
,是逻辑上的存储器。转载地址:http://wmqgn.baihongyu.com/