带你学习《深入理解计算机系统》虚拟存储器(1)——虚存概念及页、页表和地址翻译基础

本文介绍了虚拟存储器的基本概念,包括虚拟地址与物理地址的区别、虚拟存储器的作用以及页和页表的概念。通过地址翻译,虚拟存储器能够提供每个进程独立的、线性的地址空间,并通过页表动态翻译虚拟地址到物理地址,有效地管理和保护内存。此外,文章还提及了存储器层次结构,以及TLB(翻译后备缓冲器)在加速地址翻译过程中的作用。
摘要由CSDN通过智能技术生成

 

一、前言

        虚拟存储器,感觉很难,至少说很复杂,里面涉及到的东西也比较枯燥。当然,如果能彻底搞清楚,对继续学习操作系统原理是百利无一害的。

        玩C或C++的人,经常通过&a的方式获取变量地址,并将其赋值给指针变量,也通常用printf打印出地址的值,类似0x8048

034之类的地址值,但从此刻开始要明确一点,你打印出的这个地址值,根本不是内存里的真实值,而是通过链接器最终生成的虚拟地址,这个虚拟地址帮助程序在操作系统进程中正常运行,而每个进程里的虚拟存储分布的值几乎都一样……所以才会出现,你各进程中打印出的地址为啥分布区间那么相似。

 

        虚拟存储器是硬件异常、硬件地址翻译、主存、磁盘文件和内核软件的完美交互,它为每个进程提供了一个大的、一致的、私有的地址空间。它有三个重要的功能:

        ①它将物理内存看成磁盘的高速缓存,永远只保留活动区域,从而高效利用物理内存

        ②它为每个进程提供一致的线性地址空间,从而简化存储器管理

        ③它保护每个进程的地址空间不被其他进程破坏。

 

        在真实物理内存中,空闲空间并非连续,可能零散的分布在各个角落,而虚拟存储器,就是把各对象的地址值分布在连续线性的逻辑地址空间中。那么如何将线性地址和零散的物理地址对应起来呢?这就需要地址翻译。CPU在处理对象地址时,利用内部MMU,通过访问存放在物理内存中的查询表来动态翻译虚拟地址,该表内容是由操作系统管理的。

 

        扯了这么多是不是觉得很乱? 这里涉及到一个重要的存储器层次结构的概念。回忆下我写的《程序性能优化探讨(3)》章中的第一节就讲到“存储器层次结构”。里面图清晰的把存储器层次结构描述了出来:存储速度由快到慢、由高到低一次是:CPU寄存器、L1\L2\L3高速缓存(SRAM)、主存(内存,DRAM)、磁盘……

        当世界上还有没有虚拟存储器VM概念时,内存DRAM显然就是磁盘的上一级缓存,就像SRAM是内存DRAM的上一级缓存一样类似。but现在发展出了虚拟存储器的概念,在磁盘上开辟了连续的空间玩票,那么我们可以理解为:虚拟存储器VM事实上成为磁盘的缓存!而谁又是VM的上一级缓存呢?自然而然就应该想到是内存DRAM。事实上VM相当于从存储器体系中的内存和磁盘之间的位置强行插入,新增的一个层次罢了!为啥要强插?很简单。因为磁盘读取速度实在太慢,极端情况下可能比DRAM的速度慢10,0000倍既10万倍那么多,根据存储器层次结构的思想,为了调和速度差,增加一个叫做虚拟存储器的缓存结构也就理所当然了。

 

二、虚拟存储器一般性概念

        虚拟存储器成简称为VM。

        先来看下比较拗口概念解释:虚拟存储器被组织为一个由存放在磁盘上的N个连续的字节大小的单元组成的数组……这句话除了觉得很抽象外,我们至少能获得两个关键信息:

        ①虚拟存储器的载体是磁盘,它和其他存储器一样,存放数据,而且它在磁盘上是连续存储的;

        ②虚拟存储器的每个字节数据一定对应唯一的1bit虚拟地址。

        首先,我们要分清楚虚拟存储器和虚拟地址的区别,一个是逻辑上存储数据的对象;一个是逻辑上标识这些数据的概念地址。根据以上的定义,我们可以YY一下虚拟存储器的大概应用:虚拟存储器似乎和物理存储器有某种强对应关系,它利用磁盘上连续的存储数据,可以实现线性连续地址空间访问。也许它能优化磁盘与物理内存器之间的通信关系。

 

        接下来我们先恶补看下什么是线性地址空间。回忆下,比如你有n位(bit)的数据位,你能表达最大的整数就是2^(n) - 1,你能表示的所有

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值