一、先谈几个重要的东西

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的更多相关文章

  1. php编译 :virtual memory exhausted: Cannot allocate memory

    有时候用vps建站时需要通过编译的方式来安装主机控制面板.对于大内存的VPS来说一般问题不大,但是对于小内存,比如512MB内存的VPS来说,很有可能会出现问题,因为编译过程是一个内存消耗较大的动作. ...

  2. reds Virtual Memory

    Virtual Memory technical specification This document details the internals of the Redis Virtual Memo ...

  3. ADDM Reports bug:Significant virtual memory paging was detected on the host operating system

    查看ADDM(数据库版本为ORACLE 10.2.0.5.0)报告时,发现其中有个结论非常不靠谱:Significant virtual memory paging was detected on t ...

  4. Linux Process Virtual Memory

    目录 . 简介 . 进程虚拟地址空间 . 内存映射的原理 . 数据结构 . 对区域的操作 . 地址空间 . 内存映射 . 反向映射 .堆的管理 . 缺页异常的处理 . 用户空间缺页异常的校正 . 内核 ...

  5. Cache and Virtual Memory

    Cache存储器:电脑中为高速缓冲存储器,是位于CPU和主存储器DRAM(DynamicRandonAccessMemory)之间,规模较小,但速度很高的存储器,通常由SRAM(StaticRando ...

  6. is running beyond physical memory limits. Current usage: 2.0 GB of 2 GB physical memory used; 2.6 GB of 40 GB virtual memory used

    昨天使用hadoop跑五一的数据,发现报错: Container [pid=,containerID=container_1453101066555_4130018_01_000067] GB phy ...

  7. 编译时:virtual memory exhausted: Cannot allocate memory

    一.问题 当安装虚拟机时系统时没有设置swap大小或设置内存太小,编译程序会出现virtual memory exhausted: Cannot allocate memory的问题,可以用swap扩 ...

  8. Virtual Memory PAGE TABLE STRUCTURE

    COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION The basic mechanism f ...

  9. Virtual Memory DEMAND PAGING - The avoidance of thrashing was a major research area in the 1970s and led to a vari- ety of complex but effective algorithms.

    COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION With the use of pagin ...

随机推荐

  1. tomcat优化

    tomcat优化:vim catalina.sh添加:JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -X ...

  2. 两个js文件之间函数互调问题

    按照常理来说,在<body>标签结束之前以下面的方式引入两个js文件 <script src="a.js"></script> <scri ...

  3. 6-1 bash脚本编程之四 整数测试及特殊变量

    1. exit:退出脚本.可以定义,如 #exit 数字(0-255) 2. 文件测试 -e FILE:测试文件是否存在 -f FILE:测试文件是否为普通 -d FILE:测试指定路径是否为目录 - ...

  4. 学习Python函数笔记之二

    ---恢复内容开始--- 1.内置函数:取绝对值函数abs() 2.内置函数:取最大值max(),取最小值min() 3.内置函数:len()是获取序列的长度 4.内置函数:divmod(x,y),返 ...

  5. 利用Oracle创建表空间和用户

    本文仅用于学习交流,商业用途请支持正版!转载请注明:http://www.cnblogs.com/mxbs/p/6217152.html 第一步,创建表空间 以SYS/sys账户和SYSDBA身份登录 ...

  6. [No00009C]Visual Studio在 解决方案资源管理器 里同步定位打开的文件

    标题的意思就是在使用VS的时候,需要我们打开编辑的文件跟解决方案的资源管理器同步显示,这样方便定位到我们在修改哪个文件. 设置如下: 工具——选项——项目和解决方案——在解决方案资源管理器中跟踪活动项 ...

  7. react自学笔记总结不间断更新

    React React 是由Facfbook维护的一套框架,并且引用到instagram React只是我们熟悉MVC框中的V层,只是视图层面的一个框架,只有俩个半api(createClass,cr ...

  8. [LeetCode] Maximum Size Subarray Sum Equals k 最大子数组之和为k

    Given an array nums and a target value k, find the maximum length of a subarray that sums to k. If t ...

  9. [LeetCode] Paint Fence 粉刷篱笆

    There is a fence with n posts, each post can be painted with one of the k colors. You have to paint ...

  10. [LeetCode] Minimum Path Sum 最小路径和

    Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which ...