简单理解什么是虚拟存储器

虚拟存储器是非常重要的一个概念。先抽丝剥茧的了解下什么是虚拟存储器,再理解下虚拟存储器有什么作用。

一、什么是虚拟存储器

(1)虚拟存储系统通过虚拟地址寻址;
(2)虚拟地址和物理地址通过页表实现一一映射;
(3)页表存放在主存中;

物理寻址和虚拟寻址

存放在存储器中每一个字节都有一个地址,这个地址称为物理地址(PA, physical address)。处理器通过物理地址访问数据的方式称为物理寻址。处理器也可以通过虚拟地址(VA, visual address)寻址,称为虚拟寻址。处理器生成一个虚拟地址来访问处理器,在地址到达存储器之前需要先转换为物理地址。存储器管理单元负责将虚拟地址转换为物理地址。
在这里插入图片描述物理地址由物理页号(PPN)和物理偏移量构成(PPO)。虚拟地址由虚拟页号(VPN)和虚拟偏移量构成(VPO)。一般情况下,物理偏移量等于虚拟偏移量,物理页号和虚拟页号通过页表实现映射。

在这里插入图片描述

页表

计算机的存储结构包括:高速缓存(SRAM),主存储器(DRAM)以及磁盘(固态硬盘或者机械硬盘)。处理器从缓存中取数据,如果缓存没命中,处理器从主存中取数据。如果主存也没命中,处理器就先要把需要的数据从磁盘中搬运到主存中,再从主存中取数据。如何判断数据是否在主存中,我们需要一个东西,叫做页表(PTE, page table entry)来告诉我们数据是否在主存中。页表由有效位和一个n位地址字段组成。如果有效位为1,则地址段放置虚拟页在磁盘上的起始物理地址,虚拟页典型值为4K-2M。页表只有三种状态,a.未分配。地址段上没有数据。b.已缓存。地址段上有数据,有效位为1,表明该虚拟页数据都缓存在主存中。c.未缓存。地址段上有数据,有效位为0。如下图所示,页表共有八项,其中PTE0,PTE5未分配,PTE1,PTE2,PTE4, PTE7已缓存,PTE3,PTE6未缓存。

在这里插入图片描述因此,处理器访问主存有两种状态,一是页命中,数据缓存在主存中,二是缺页,数据没有缓存在主存中。虚拟页号VPN与PTE是一一对应的,例如VPN0-PTE0, VPN1-PTE1等等。

地址翻译

地址翻译由以下几个步骤组成:
(1)处理器生成虚拟地址,传给MMU;
(2)MMU提取虚拟页号VPN,传送给高速缓存/主存;
(3)通过高速缓存/主存中页表,查询虚拟页号对应的PTE内容,并返还给MMU;
(4)如果有效位为0,进入第五步,有效位为1,进入第八步;
(5)MMU触发异常,处理器进入缺页异常处理程序;
(6)缺页异常处理程序从磁盘中调入新的页面,更新进PTE页表中;
(7)CPU重新发送虚拟地址,进入第二步;
(8)MMU构造物理地址,并将地址送给高速缓存/主存;
(9)高速缓存/主存返回数据给处理器

在这里插入图片描述

二、加快地址翻译

TLB

翻译后备缓冲器(TLB,translation lookaside buffer)。TLB是一个小的,虚拟地址缓存,其功能相当于高速缓存,特别的,作为页表的高速缓存。TLB存放在处理器中,因此,处理器可以非常快速的从TLB中取出PTE。
在这里插入图片描述
TLB由标记位和索引位构成。相当于全相联高速缓存。处理器访问数据步骤如下:
(1)处理器产生虚拟地址;
(2)如果TLB 命中,TLB返回PTE给MMU;如果不命中,MMU从高速缓存中取出PTE,放在TLB中,覆盖已经存在的条目。
(3)MMU根据PTE生成物理地址,并将它发送给高速缓存或者主存;
(4)高速缓存或者主存返回数据给处理器
在这里插入图片描述

多级页表

TLB解决了访问速度的问题,多级页表可以解决页表占用空间大小的问题。假设地址空间为32位,则处理器最高可访问4GB的存储器,假设存储器物理页大小为4K,每个PTE占用4个字节。则页表大小为4MB,意味着主存中至少留下4MB空间用来存放页表。这无疑是一种浪费,使用多级页表可以压缩页表大小。
在这里插入图片描述一级页表每个PTE对应4MB虚拟页,总共需要1024个PTE可以映射4GB虚拟地址空间。二级页表每个PTE对应4KB虚拟页,1024个二级PTE可以映射4MB虚拟地址空间。如果一级页表的PTE为空,则对应的二级页表就根本不会存在,如图中的PTE2/3/4/5/6/7等。这大大节省了主存的空间。一级页表总是存放在主存中,只有需要二级页表时,虚拟存储器系统才会创建,调入或调出二级页表。

三、虚拟存储器作用

虚拟存储器是硬件异常,硬件地址翻译,主存,磁盘文件和内核软件的完美交互,为每个进程提供了一个大的,一致的和私有的地址空间。主要有三个作用:
(3)保护进程的地址空间不被其他进程破坏。

虚拟存储器作为缓存的工具

在虚拟存储系统中,可以将主存看成是一个存储在磁盘上的地址空间的高速缓存。处理器通过页表可以知道物理页有没有缓存在主存中。

虚拟存储器作为存储器管理的工具

虚拟存储器为每个进程提供了一致的地址空间,简化存储器管理。
(1)简化链接
(2)简化加载
(3)简化共享
(4)简化存储器分配

笔者对于链接,加载这些过程都不了解,因此只将大概记录下来,日后有所了解,再做补充。详情可以参考《深入理解计算机系统》9.4节

虚拟存储器作为存储器保护的工具

在这里插入图片描述在示例中,PTE添加了三个许可位。SUP位表示进程是否必须运行在内核(超级用户)模式下才能访问,运行在内核模式下的进程可以访问任何页面。运行在用户模式下的进程只能访问SUP值为0的页面。READ和WRITE位控制处理器对页面的读和写访问。
如果一条指令违反了许可条件,CPU将会触发一个保护故障,将控制传递给一个内核中的异常处理程序。

  • 12
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
存储器管理实验,主要围绕着对计算机中的存储器进行管理和优化展开。在设计实验时,可以有以下几个创意点: 1. 分页式虚拟存储管理:实验可以设计一个基于分页式虚拟存储管理的系统。通过模拟操作系统中的页面置换算法,比如LRU(最近最少使用)算法、FIFO(先进先出)算法等,让学生对页面置换的过程和机制有更深入的了解。 2. 虚拟内存管理实验:实验可以实现一个简单的虚拟内存管理系统。在实验中,可以设置一定的内存大小,并模拟程序对内存的访问和替换过程。通过调整页面大小、实现页面置换算法等,让学生体验虚拟内存管理的性能优化以及实际应用。 3. 缓存一致性实验:对于多处理器系统,缓存一致性是一个关键的问题。实验可以设计一个基于MESI协议的缓存一致性模拟实验,让学生理解缓存一致性的概念和工作原理,以及掌握处理器间数据一致性的解决方法。 4. 内存分配算法:实验可以设计一个内存分配算法的模拟实验。通过实现不同的分配算法,比如最先适应算法、最佳适应算法和最坏适应算法等,让学生比较不同内存分配算法的优缺点,并对它们的性能进行评估。 5. 动态内存管理实验:实验可以让学生实现一个简单的动态内存管理系统,比如堆内存分配和释放。通过实验,学生可以了解动态内存管理的过程和挑战,以及理解内存泄漏和内存碎片等问题。 通过以上实验的设计与实践,学生可以更好地理解存储器管理的原理和实践,提升对计算机系统中存储器管理的理解和掌握。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值