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

它将主存看成是一个存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域,并根据需要在磁盘和主存之间来回传送数据。
它为每个进程提供了结构一致的地址空间,从而简化了内存管理。
它保护了每个进程的地址空间不被其它进程破坏。

物理和虚拟寻址:
计算机系统的主存被组织成一个由M个连续的字节大小的单元组成的数组。每个字节都有唯一一个物理地址(PA=Physical Address)。

给定这种简单的结构,CPU访问内存的最自然的方式就是使用物理地址——这种寻址方式则被称为物理寻址。
早期的PC使用物理寻址方式,而且诸如数字信号处理器,嵌入式微控制器以及Cray超级计算机这样的系统仍然继续使用着这种寻址方式。
现代处理器使用的是一种称为虚拟寻址的寻址方式:

CPU通过生成一个虚拟地址(VA=Virtual Address)来访问主存。
这种虚拟地址在被送到内存之前先被转换成适当的物理地址。
将一个虚拟地址转换为物理地址的任务叫做地址翻译。
CPU芯片上的内存管理单元(MMO=Memory Management Unit),利用存放在主存中的查询表来完成上面的任务。
查询表的内容由操作系统管理。

地址空间:
一个地址空间的大小就是由表示最大地址所需要的位数来描述的。

比如一个 2^n 个地址的虚拟地址空间就叫做一个n位地址空间。
地址空间的概念是很重要的:



##CSAPP读书日记-第九章-虚拟内存相关推荐

  1. CSAPP学习笔记——第九章 虚拟内存(一)内存陷阱

    CSAPP学习笔记--第九章 虚拟内存(一)内存陷阱 int val; ... scanf("%d", val); 引用了错误的指针,scanf将val解释为一个地址,并试图将一个 ...

  2. 操作系统-第九章虚拟内存

    操作系统-第九章虚拟内存 虚拟内存 内存共享 按需调页 虚拟存储需要解决的几个问题 页表中须指明对应的页是否在内存中 如何具体的区分当发生页错误时 page is invalid or isvalid ...

  3. Java编程思想第四版读书笔记——第九章 接口

    这章介绍了适配器设计模式和策略设计模式. 第九章  接口 接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法. 1.抽象类和抽象方法 public abstract void f(); 创 ...

  4. [读书笔记]第九章 当一只小猫扑向大狗 不论大狗多有理 人们总为小猫叫屈

    第九章 当一只小猫扑向大狗 不论大狗多有理 人们总为小猫叫屈 1.拳王与小女生的对决 同情弱者,是人的天性 想一想:拳王被关了三年,才假释出狱,那仨年原该是他的黄金时代啊!一个拳手的巅峰能有几年.他却 ...

  5. Java编程思想读书笔记——第九章:接口

    第九章 接口 接口和实现类 抽象类是介于普通的类和接口之间的中庸之道,抽象类也是一种重要的工具,你不可能总是使用纯接口 9.1 抽象类和抽象方法 抽象方法声明的语法: abstract void f( ...

  6. 《Microsoft Sql server 2008 Internals》读书笔记--第九章Plan Caching and Recompilation(10)

    <Microsoft Sql server 2008 Internals>读书笔记订阅地址: http://www.cnblogs.com/downmoon/category/230397 ...

  7. CSAPP读书笔记 第一章

    进程:操作系统Udine一个正在运行的程序的一种抽象.在一个系统上可以同时运行多个进程,而每个进程都好像在独占的使用硬件 线程:一个进程可以由多个称为线程的执行单元组成,每个线程都在运行进程的上下文中 ...

  8. 《利用python进行数据分析》读书笔记--第九章 数据聚合与分组运算(一)

    http://www.cnblogs.com/batteryhp/p/5046450.html 对数据进行分组并对各组应用一个函数,是数据分析的重要环节.数据准备好之后,通常的任务就是计算分组统计或生 ...

  9. Redis Essentials 读书笔记 - 第九章: Redis Cluster and Redis Sentinel (Collective Intelligence)

    Chapter 9. Redis Cluster and Redis Sentinel (Collective Intelligence) 上一章介绍了复制,一个master可以对应一个或多个slav ...

最新文章

  1. Bootstrap-table组合表头
  2. js之操作JSON数据
  3. GDT,LDT,GDTR,LDTR 详解,包你理解透彻
  4. Windows Phone 7 网络编程之使用Socket(芒果更新)
  5. unity 全息交互ui_UI向3D投影全息界面的连续发展
  6. 2018黄河奖设计大赛获奖_宣布我们的freeCodeCamp 2018杰出贡献者奖获奖者
  7. Spring MVC X-Frame-Options
  8. ASP.NET本质论阅读----应用程序对象
  9. k8s核心技术-Helm引入---K8S_Google工作笔记0043
  10. bzoj 3752: Hack 预处理+暴力dfs
  11. iOS逆向之利用Xcode重签名
  12. Windows中MySQL主从数据库搭建(三)
  13. python 热度图_python可视化(七)绘制詹姆斯、杜兰特、伦纳德生涯数据热度图...
  14. 开源看板 wekan docker-compose部署
  15. 服务器防御DDOS的办法
  16. bash: scp: command not found
  17. 一元二次方程的解c语言,一元二次方程求解程序完整代码
  18. 开发新产品的三个验证阶段(EVT/DVT/PVT)
  19. 门户通专访爱思网创始人韩笑:SNS网站必然走向实用化!
  20. 他们是公众号界的一股清流!

热门文章

  1. extJs 2.0学习笔记(Ext.Panel篇四)
  2. 安卓应用程序加密,签名和发布
  3. 服务器网站崩溃怎么解决
  4. 我是如何利用Python下载酷狗音乐的
  5. C语言class 1:初识与准备
  6. 牛客 Celestial Resort 质因数分解求最小公倍数 除法取模
  7. 六自由度工业机器人 机械手臂 3D2D结构图纸 工业机器人
  8. html下拉框12个月,html 如何实现一个“圆角select下拉菜单”呢?
  9. 学习记录:调用TFTLCD液晶屏
  10. 微信表情图像代表什么意思_微信里的表情每个头像代表什么意思