初识virtual memory

1、先谈几个重要的东西

virtual memory是一个抽象概念,书上的原文是"an abstraction of main memory known as virtual memory"(参考资料p776)。那么什么是抽象概念。下面说说我我的对这个东西的理解。html

所谓抽象概念是指抽象出来的概念,经过抽象这个动做获得的结果。那么抽象这个动做又是什么,便是怎么一个动做,思惟作了什么动做或者作了一系列什么动做。举个生活中的例子,如今有排球、足球、篮球、乒乓球,咱们按照某个方向(共性)对排球进行抽象,客体是排球,动做是抽象,那么抽象出来的结果是球,这里球就是一个抽象概念,球只存在于咱们的概念中,一个圆圆的,能够滚动的东西。在大脑中,它就是这样,抽象是一个认识事物的方法,对这个事物进行抽象,抽象出那些相关的属性,去除不相关的属性。并发

 

 

咱们将这些知识应用到virtual memory。解剖"an abstraction of main memory",客体是main memory,动做是abstract,那么main memory通过某一方向的抽象后就成了virtual memory,一个抽象概念,一个能够连续的存放信息的地方,每一个地方都有一个地址属性,而舍弃了它是由什么材料组成等不相关信息(抽象方向决定了哪些属性相关,哪些属性不相关),在大脑中,它就是这样。(这里很难理解,包括我本身都不是很确定,注意利用上段举出的关于球的例子)spa

 

谈了这么多我想你们,包括我,都有点晕了,哈哈,这家伙到底在说什么,说人话。翻译

总结一下:抽象是咱们认识事物的一种方法,对硬体按某一方向进行抽象获得抽象概念,抽象概念只存在于大脑中。通过对事物进行抽象,咱们获得抽象的事物。htm

回归本节主题,virtual memory。在写这篇博文的过程当中,我感受到若是根据我前面的认知,做者的表述彷佛不够准确,应该是这样"virtual memory" is "an abstraction of main memory and MMU",MMU负责虚拟地址和物理地址的转换。由于仅仅对memory进行抽象根本得不到virtual memory。(这里若是读不懂,先硬着头皮往下灌,将quetions存在心中看下面的内容)blog

2、virtual memory

前面已经讲到virtual memory是一个抽象概念,是大脑中对main memory + MMU 抽象的产物。那么main memory 是如何与MMU相加的,即main memory与MMU如何合做的。it

合做的过程以下:io

    一、processor首先发送virtual address给MMU;table

    二、MMU从virtual address中提取某些连续栏位并将其发送到存储在main memory中的page tablesso

    三、main memory返回physical address的部分连续栏位给MMU

    四、MMU根据virtual address和physical address的部分连续栏位计算出physical address,并发送给main memory

    五、main memory返回所需的data给processor。

在整个过程当中MMU负责将虚拟地址翻译成物理地址。这里我只是作一个overview,详细的细节能够参考我给出资料。

3、TLB是什么

不了解cache的同仁,能够先我以前写的初识cache(http://www.cnblogs.com/midhillzhou/p/5608533.html),否则理解会很吃力。TLB从本质上说是一个cache,它存在于MMU的内部,用于加速地址转换。仔细思考上图,在MMU with TLB中, 在第1步MMU收到virtual address后,它首先先查看TLB中有没有对应的physical address:若是有,直接将地址取出来,发给main memory,而后main memory将所需data发给processor;若是没有,再进行上面步骤中的第2步第3步,而后将这一映射关系保存到TLB中,最后进行第4步第5步。

4、参考资料

<<computer systems a programmer's perspective>> second edition p775-p792

相关文章
相关标签/搜索