3.2.8 虚拟内存管理
2016-07-03 23:53
323 查看
(1)为什么要引入虚拟内存?
多道程序并发执行不仅使进程之间共享了处理器,还同时共享了主存。然而,随着处理器需求的增长,进程的执行速度会以某种合理平滑的方式慢下来。但是,如果同时执行的进程太多,那么就需要很多的内存,当一个程序没有内存空间可用时,那么它甚至无法运行。所以,在物理上扩展内存相对有限的条件下,应当尝试以一些其他可行的方式在逻辑上来扩充内存。
(2)内存空间的大小由什么因素决定?
虚存的大小要同时满足2个条件:
1.虚存的大小<=内存容量和外存容量之和,这是硬件的硬性条件规定的,若虚存大小超过了这个容量则没有相应的空间来供虚存使用。
2.虚存的大小<=计算机的地址位数能容纳的最大容量,比如你的地址是32位的,那么假设按字节编制,一个地址代表1B的存储空间的话,那么虚存的大小<=4GB(2的32次方B).这是因为如果虚存的大小超过4GB,那么32位的地址将无法访问全部虚存,也就是说4GB以后的空间是浪费掉的,相当于没有一样,没有任何意义。
实际虚存的容量是取条件1,2的交集,也就是说,两个条件都要满足,光满足一个是不行的。
(3)虚拟内存是怎么解决问题的?会带来什么问题?
虚拟内存使用了外存上的空间来扩充内存的空间,通过一定的换入换出,使得整个系统在逻辑上能够使用一个远远超过其物理内存大小的内存容量。因为虚拟内存技术调换页面时需要访问外存,会导致平均访存时间下降,如果使用了不合理的替换算法,则会大大降低系统性能。
多道程序并发执行不仅使进程之间共享了处理器,还同时共享了主存。然而,随着处理器需求的增长,进程的执行速度会以某种合理平滑的方式慢下来。但是,如果同时执行的进程太多,那么就需要很多的内存,当一个程序没有内存空间可用时,那么它甚至无法运行。所以,在物理上扩展内存相对有限的条件下,应当尝试以一些其他可行的方式在逻辑上来扩充内存。
(2)内存空间的大小由什么因素决定?
虚存的大小要同时满足2个条件:
1.虚存的大小<=内存容量和外存容量之和,这是硬件的硬性条件规定的,若虚存大小超过了这个容量则没有相应的空间来供虚存使用。
2.虚存的大小<=计算机的地址位数能容纳的最大容量,比如你的地址是32位的,那么假设按字节编制,一个地址代表1B的存储空间的话,那么虚存的大小<=4GB(2的32次方B).这是因为如果虚存的大小超过4GB,那么32位的地址将无法访问全部虚存,也就是说4GB以后的空间是浪费掉的,相当于没有一样,没有任何意义。
实际虚存的容量是取条件1,2的交集,也就是说,两个条件都要满足,光满足一个是不行的。
(3)虚拟内存是怎么解决问题的?会带来什么问题?
虚拟内存使用了外存上的空间来扩充内存的空间,通过一定的换入换出,使得整个系统在逻辑上能够使用一个远远超过其物理内存大小的内存容量。因为虚拟内存技术调换页面时需要访问外存,会导致平均访存时间下降,如果使用了不合理的替换算法,则会大大降低系统性能。
相关文章推荐
- linux系统卸载openJDK操作步骤
- 图论(网络流,分数规划):COGS 2047. [ZOJ2676]网络战争
- Linux输入子系统(Input Subsystem)
- 对这次实习的想法
- 找质数算法之埃拉托色尼筛选法(Sieve of Eratosthenes算法)
- 安卓事件分发机制
- python去除list中的重复元素的最简单办法(但性能不一定好)
- Spring 管理事务(传播特性、隔离级别、readonly)
- 把ubuntu系统安装进移动硬盘
- 浅谈C++类(1)--概念和构造函数
- hdu 2074 叠筐
- no segments* file found in org.apache.lucene.store.SimpleFSDirectory
- 安装go第三方库
- php.ini 干了些啥?
- 删除链队奇数元素
- nginx笔记(杂乱版一)
- 类与接口的区别
- 考研复习第15弹
- UIAlertController_AlertView
- lighttpd与fastcgi+cgilua原理、代码分析与安装