标签:
1、什么是虚拟内存
虚拟内存是计算机系统内存管理的一种技术。它使的应用程序认为他拥有连续的可用内存(一个连续完整的地址空间),而实际上,他通常是被分割成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。
注意:虚拟内存不只是“用磁盘空间来扩展物理内存”的意思--这只是扩充内存级别以使其包含磁盘驱动器而已,把内存扩展到磁盘只是使用虚拟内存技术的一个结果,他的作用可以通过覆盖或者把处于不活动状态的程序以及他们的数据交换到磁盘上等方式实现。
2、为什么会有虚拟内存
许多年以前,当人们还在使用DOS或更古老的操作系统的时候,计算机内存还非常小,一般都是以K为单位进行计算的,相应的,当时的程序规模也不大,所以内存容量虽然小,但还是可以容纳当时的程序。但随着图像界面的想起还有用户需求的不断增大,应用程序的规模也随之膨胀起来。终于一个难题出现在程序员面前,那就是应用程序太大以至于内存容不下该程序,通常解决的办法是把程序分割成许多覆盖快的片段。覆盖块0首先运行,结束时他将调用另一个覆盖块。虽然覆盖块的交换是由os完成的,但是必须先有程序员吧程序先进行分割,这是一个费时费力的工作,而且相当枯燥。虚拟存储器就应运而生。
3、物理地址、虚拟地址、逻辑地址区别
32位系统的地址总线是32位的,64位CPU是指CPU内部的通用寄存器的宽度为64比特,拥有64位寛度的数据总线
(1)虚拟地址及虚拟地址空间:是一块连续完整的空间。虚拟内存地址是每个进程可以直接寻址的地址空间,不受其他进程干扰。每个指令和数据单元都在这个虚拟空间中拥有确定的地址。
虚拟内存就是进程中的目标代码,数据等虚拟地址组成的虚拟空间。
虚拟地址有多大完全是有地址总线决定的,有多少位的地址总线,就会有2的多少次方的地址。
虚拟地址也是有大小限制的,如果A程序占了2G的虚拟内存,那剩下的程序只有2G的虚拟内存可以用了。
(2)物理地址空间和物理地址:物理内存,真实存在的插在主板内存槽上的内存条的容量的大小.
(3)逻辑地址:源代码经过编译后形成目标代码,每个目标代码都是以0为基址书序进行编制的。这样生成的目标程序占据一定的地址空间,称为作业的逻辑地址空间,简称逻辑空间。
逻辑地址是针对程序来说的,虚拟地址是针对操作系统来说的,有了逻辑地址,程序就可以在自己内部有自己的逻辑位置,然后再映射到物理内存上就可以加上自己的逻辑偏移。
有了虚拟地址,程序就有了一整块的虚拟内存,操作系统也认为程序全部加载进来了,就可以为之创建进程了。
标签:
原文地址:http://www.cnblogs.com/pengfeiliu/p/4409573.html