一、先谈几个重要的东西

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

转载于:https://www.cnblogs.com/midhillzhou/p/5615320.html

初识virtual memory相关推荐

  1. DumpMem and Monster - Virtual Memory Explorers on Windows Mobile/CE

    Windows Mobile 5 和 6的平台是建立在CE5.x的基础上的.当可用的内存很少时,平台会自动关闭应用程序.而且,在这个移动平台上,同时只能运行32个process.在桌面电脑上,我们有4 ...

  2. 【计算机基础】 Virtual memory 虚拟内存

    Virtual memory 虚拟内存 虚拟内存的作用 将主存看成存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域,并根据需要在磁盘和主存之间来回传送数据,高效实用主存 为每个进程提供一致的地 ...

  3. is running beyond the ‘VIRTUAL‘ memory limit. Current usage: 123.5 MB of 1 GB physical memory used

    is running beyond the 'VIRTUAL' memory limit. Current usage: 123.5 MB of 1 GB physical memory used; ...

  4. WinCE 5.0 virtual memory space

    要深入了解WinCE的memory结构,就不得不在这里先画个virtual memory space的图.这个图是针对WinCE 5.0的.由于WinCE 6的结构做了很大变化,关于WinCE 6的内 ...

  5. ES启动异常:max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

    现象 ES启动时出现异常 bin/elasticsearchmax virtual memory areas vm.max_map_count [65530] is too low, increase ...

  6. HADOOP:Current usage: 399.9 MB of 1 GB physical memory used; 2.5 GB of 2.1 GB virtual memory used.

    [已解决]Current usage: 399.9 MB of 1 GB physical memory used; 2.5 GB of 2.1 GB virtual memory used. Kil ...

  7. es max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]

    max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144] /etc ...

  8. Flink:Container is running beyond virtual memory limits

    1.美图 2.问题描述 以Yarn模式启动Flink时提示:The Flink Yarn cluster has failed. 详细错误信息为 Container [] is running bey ...

  9. virtual memory exhausted: Cannot allocate memory Linux虚拟内存不足,扩展虚拟内存的解决办法

    Linux虚拟内存不足,扩展虚拟内存的解决办法 virtual memory exhausted: Cannot allocate memory 在编译软件的时候,出现了这个错误: virtual m ...

最新文章

  1. OpenCV学习笔记大集锦
  2. 灵活、高效的云原生集群管理经验:用 K8s 管理 K8s
  3. Linux 学会看日志文件处理问题
  4. VB讲课笔记12:文件管理
  5. 波士顿动力机器狗解锁“自动驾驶”,会跑步的Atlas真的很稳
  6. 延迟加载并渐现内容的jquery插件lazyFade
  7. modbus发送接收_自己编写MODBUS协议代码所踩过的坑
  8. Spring 使用注解注入 学习(四)
  9. conda常用命令和基础知识整理
  10. Java常见笔试题(99.9%必问)
  11. 阿里云盘 PC 版上线,百度网盘 SVIP 功能全免费
  12. STM32MP157(实验九)——SysTick定时器us延时
  13. 链表节点被删除时的资源释放
  14. caj 服务器正在运行中,紧急求助:caj阅读器打不开
  15. 网站打不开的原因及解决办法
  16. Tableau画地图
  17. 快递查询APP隐私条款
  18. 2022施工员-市政方向-通用基础(施工员)题库及答案
  19. 楼宇系统服务器,【产品介绍】楼宇管理平台
  20. 经典升级,长直播,马上开课 | 第 19 期高级转录组分析和R数据可视化火热报名中!!!...

热门文章

  1. 微信公招访问我服务器的那个端口,查看谁在使用某个网络端口
  2. mysql 数据库 应用_MySQL数据库的应用
  3. 退出页面删除cookie_Cookie 机制
  4. MySQL中文乱码问题
  5. Tomcat 6连接池配置
  6. 软件可靠性指标mtbf测试评估,软件可靠性评估.pdf
  7. 后台系统可扩展性学习笔记(五)负载均衡
  8. 二叉树笔记(深度遍历与广度遍历+13道leetcode题目(深度3道、广度10道))
  9. python set |_Python事件类| set()方法与示例
  10. Python---利用蒙特.卡罗方法计算圆周率近似值