初识virtual memory
来源:互联网 发布:淘宝怎么出售禁售商品 编辑:程序博客网 时间:2024/06/16 06:39
一、先谈几个重要的东西
virtual memory是一个抽象概念,书上的原文是"an abstraction of main memory known as virtual memory"(参考资料p776)。那么什么是抽象概念。下面说说我个人对这个东西的理解。
所谓抽象概念是指抽象出来的概念,通过抽象这个动作得到的结果。那么抽象这个动作又是什么,即是怎么一个动作,思维做了什么动作或者做了一系列什么动作。举个生活中的例子,现在有排球、足球、篮球、乒乓球,我们按照某个方向(共性)对排球进行抽象,客体是排球,动作是抽象,那么抽象出来的结果是球,这里球就是一个抽象概念,球只存在于我们的概念中,一个圆圆的,可以滚动的东西。在大脑中,它就是这样,抽象是一个认识事物的方法,对这个事物进行抽象,抽象出那些相关的属性,去除不相关的属性。
我们将这些知识应用到virtual memory。解剖"an abstraction of main memory",客体是main memory,动作是abstract,那么main memory经过某一方向的抽象后就成了virtual memory,一个抽象概念,一个可以连续的存放信息的地方,每个地方都有一个地址属性,而舍弃了它是由什么材料组成等不相关信息(抽象方向决定了哪些属性相关,哪些属性不相关),在大脑中,它就是这样。(这里很难理解,包括我自己都不是很肯定,注意利用上段举出的关于球的例子)
谈了这么多我想大家,包括我,都有点晕了,哈哈,这家伙到底在说什么,说人话。
总结一下:抽象是我们认识事物的一种方法,对硬体按某一方向进行抽象得到抽象概念,抽象概念只存在于大脑中。经过对事物进行抽象,我们得到抽象的事物。
回归本节主题,virtual memory。在写这篇博文的过程中,我感觉到如果根据我前面的认知,作者的表述似乎不够准确,应该是这样"virtual memory" is "an abstraction of main memory and MMU",MMU负责虚拟地址和物理地址的转换。因为仅仅对memory进行抽象根本得不到virtual memory。(这里如果读不懂,先硬着头皮往下灌,将quetions存在心中看下面的内容)
二、virtual memory
前面已经讲到virtual memory是一个抽象概念,是大脑中对main memory + MMU 抽象的产物。那么main memory 是如何与MMU相加的,即main memory与MMU如何合作的。
合作的过程如下:
1、processor首先发送virtual address给MMU;
2、MMU从virtual address中提取某些连续栏位并将其发送到存储在main memory中的page table
3、main memory返回physical address的部分连续栏位给MMU
4、MMU根据virtual address和physical address的部分连续栏位计算出physical address,并发送给main memory
5、main memory返回所需的data给processor。
在整个过程中MMU负责将虚拟地址翻译成物理地址。这里我只是做一个overview,详细的细节可以参考我给出资料。
三、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步。
四、参考资料
<<computer systems a programmer's perspective>> second edition p775-p792
- 初识virtual memory
- virtual memory
- Virtual Memory
- Virtual Memory
- Virtual memory management
- 虚拟内存(Virtual Memory)
- What is Virtual Memory?
- Virtual Memory technical specification
- Playing with Virtual Memory
- 关于Virtual Memory
- Virtual process memory
- Playing with Virtual Memory
- How Virtual Memory Works
- 虚拟内存(Virtual Memory)
- Understanding Virtual Memory
- [Notes]Virtual Memory
- Virtual Memory Function Demo
- hadoop virtual memory limits
- Ubuntu系统(bluez)蓝牙调试
- vector和iterator的使用,排序,打印,挑选偶数
- MySQL之游标
- Java心得体会之多态
- 115.leetcode Distinct Subsequences(hard)[动态规划]
- 初识virtual memory
- 编写一个存储过程,根据学号、课程号 按成绩的20%进行加分,如果增加后的分数大于100,则取消加分。同时在存储过程中返回增加后的成绩。
- 玩无限消乐的设计示例(基础篇)填充动画元素操作
- Java----Object
- HDU 2196 Computer(树形DP)
- webpack.config.js源码解析
- 黑马程序员——Java基础——Java语言基础
- C#索引器与属性的区别,以及索引器使用方法
- Regionals 2015 >> Europe - Northwestern >> 7429 - Guessing Camels【CDQ分治】