首页
社区
课程
招聘
[旧帖] [求助][求助] windows系统的虚拟内存一共有多大? 0.00雪花
发表于: 2011-7-27 15:52 1670

[旧帖] [求助][求助] windows系统的虚拟内存一共有多大? 0.00雪花

2011-7-27 15:52
1670
当系统启动一个进程时,就会多4G的虚拟内存,

再启动一个,又多4G,

启动10个,就是40G啊,

那么系统的虚拟缓存一共有多大啊?

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (13)
雪    币: 1015
活跃值: (235)
能力值: ( LV12,RANK:440 )
在线值:
发帖
回帖
粉丝
2
楼主理解有误
2011-7-27 16:12
0
雪    币: 166
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
物理内存是你的主机上的若干内存条内存容量的总和。
虚拟内存不是物理内存,我个人觉得从理论上讲虚拟内容是无限大的。
当然你必须要简单了解下计算机内存的工作方式:程序运行的时候必须要使用物理内存,那么无限大的虚拟内存是怎么放入空间有限的物理内存中的呢?哈哈!这就是映射。当程序运行到某一个部分的时候,操作系统会把和这部分相关的虚拟内存映射到物理内存中,当这个部分运行完成后,操作系统会把它清除出内存。
不知道你理解没的?
2011-7-27 16:42
0
雪    币: 9
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
嗯,谢谢老大
在这里,我没有谈到物理内存。

我就是说的虚拟内存,
当启动一个进程,系统为其分配4G的虚拟内存。
那么启动二个,是不是就分配8G的虚拟内存呢?
2011-7-27 17:04
0
雪    币: 166
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
虚拟内存的使用是独立的!当启动第一个进程,它可以使用4G的虚拟内存地址从0000...---FFFF...,那么启动第二个进程的时候,它也可以使用4G的虚拟内存地址也是从0000....---FFFF...。
所以请牢记!虚拟内存是独立使用的
2011-7-27 17:18
0
雪    币: 9
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
对啊,那么一个进程要4G的虚拟内存,那么10个进程是不是要40G呢,

那么系统的的虚拟内存总数一共有多大啊?
100G, 1000G吗,

还是100000G?

  上限是多少?
2011-7-27 19:07
0
雪    币: 233
活跃值: (285)
能力值: ( LV12,RANK:270 )
在线值:
发帖
回帖
粉丝
7
估计LZ对虚拟内存的概念没有理解。
在32位系统中,进程有4GB的寻址空间,如果一定要说成虚拟内存的话,这里的虚拟是指并非实际存在的,也就是说不会给进程真正分配4GB的空间,无论是内存还是外存都不可能。而进程实际运行中也用不到这么多的内存空间。系统会在进程使用内存的时候,为其分配适当的大小的内存空间。
而操作系统的虚拟内存是指系统在硬盘上预留的一部分空间,当系统实际内存不足时,会将内存中暂时不使用的部分内容按照一定的算法存储到硬盘中,留出内存空间给当前正在运行的进程使用,而换入硬盘中的内容,在需要的时候重新读取进内存。

总的来说,你所谓的虚拟内存并非你所指的虚拟内存。
2011-7-27 19:15
0
雪    币: 793
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
楼主您说的虚拟内存概念应该指的是线性地址 一个进程开始系统是为此进程建立一个4GB的地址空间,其中高2GB地址空间是系统内核的代码 数据 低2GB的地址空间才是进程自己的代码 和数据 还包括系统DLL 运行时函数库的DLL。您要启动另外一个进程的话,高地址空间的内容基本是不变的 低地址的内容会按时间片切换,这个关系到线程上下文 CONTEXT 。总之您说的40GB 400GB的情况不存在,因为CPU并不是同时执行N各进程,而是把CPU时间分配给N个进程的M个线程轮流切换执行。 你要搞清楚CPU保护模式下的分段机制,分页机制,逻辑地址,线性地址,物理地址的概念,才能正常的理解啥是虚拟内存。就好像只要3公里的铁轨,就可以把火车从北京开到上海,只要你把开过的铁轨速度足够快的铺到火车的前面,WINDOWS的虚拟内存就是这样的道理。
2011-7-27 20:20
0
雪    币: 166
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
楼主的理解能力真的很有问题!我彻底无语!
你的基础好像不够!理解不了。
2011-7-27 23:25
0
雪    币: 55
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
楼主理解能力真有点问题啊
虚拟内存  不是你所谓的那4G 的内存啊
两个不同的概念啊
楼上说的很明白了
你说那个4G 只是一个寻址空间 只是一个寻址范围
程序运行着内存CPU要根据程序申请来分配内存空间 比如 你定义一个某类型的函数 就会获得一定的内存空间。
你所谓的4G 是要在这个4G地址范围内给进程分配内存。不是说要给他分4G的内存。
虚拟内存完全不关他们两的事啊 楼上说得很清楚了

不知道我这样表达对不对 我是这样理解的
2011-7-27 23:55
0
雪    币: 128
活跃值: (111)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
楼主我理解你,当初我也是这么过来的。

估计你是看了不少书,但是因为Virtual Memory翻译过来都是虚拟存储或虚拟内存,所以很容易搞混。我当初就很郁闷,这本书是这个意思,那本书又是另一个意思。混沌了很长时间。

下面是网上找到的一段话,仔细看看吧。

虚拟内存:
  1.桌面版windows上经常要设置虚拟内存,尤其是实际内存很小时;设置虚拟内存后,计算机可以运行比实际内存更大的软件;

  这个虚拟内存技术,其实主要就是换页技术;将外部存储空间的一部分用来存放内存中暂时不用的东西,就好像它是内存一样,要的时候再把它调进内存,也就是所谓的虚拟了;桌面版windows可以设置这块虚拟内存的位置(位于哪个盘下),及大小,它对应的有一个文件pagefile.sys;

  2.虚拟存储技术(虚拟内存技术,这个虚拟内存完全不同于上面所说的虚拟内存),就是程序员在编写程序时使用的地址都从0开始,到运行程序时再进行重定位;常将这个从0开始的地址空间,叫虚拟存储空间(有人也叫虚拟内存空间);这样做有一个极大的好处:程序员不用管它写的程序最后会被放到内存的什么地方执行。

  这个虚拟操作系统的支持,当然更虚拟CPU硬件的支持,像8051单片机好像就不支持这个,像S3C2410这样的arm芯片就支持;这个硬件就是MMU(内存管理单元)

  3.不要提到虚拟内存或虚拟存储,就以为计算机可以运行比程序实际需要的内存大的程序;这种想法肯定是错误的。很多的嵌入式系统,比如windows mobile手机它支持2G的虚拟存储空间,但不支持换页技术,这就表示它不能运行超过它实际可用内存大小的软件;因为这里说的2G只是程序员可用的地址空间,它并不能把当前运行程序的一部分放置到外存上,它必须完全满足运行的程序需要的内存才能运行这个程序;当然如果windows mobile手机配置了超过2G的内存,它当然可以运行这样的大程序了。

  实际上它们的英语单词好像是一样的。但意思不一样。一个就是指虚拟出的内存;一个表示一个技术,这个技术需要MMU和操作系统的支持。
2011-7-28 07:34
0
雪    币: 2503
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
学习学习 不错!!!
2011-7-28 07:40
0
雪    币: 128
活跃值: (111)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
哦,好像楼主混沌的地方跟我不大一样,这么说吧,所谓的4g虚拟线性空间只是一个逻辑上的概念,而操作系统及cpu使用页表(即映射)技术,实现这个逻辑上的概念,页表是实际存在的,所以说你认为


当系统启动一个进程时,就会多4G的虚拟内存,

再启动一个,又多4G,

启动10个,就是40G啊,


实际上是系统启动一个,多一个页表,即多一个逻辑上的4g,(当然有2g是内核共享的),既然是虚拟的当然就不是实际存在的,至于虚拟存储是怎么实现的,这就牵扯到cpu与操作系统的合作。比较复杂的一个过程,牵扯到虚拟寻址,物理寻址,缓存等,但是清楚之后会对各方面的理解都有好处。

另外windows有个虚拟内存,跟这个是两个概念。或者说虚拟内存是虚拟存储的一部分。。
本人菜鸟,有什么不对的地方希望高手不吝赐教。。。
2011-7-28 07:47
0
雪    币: 13
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
根据保护模式的定义,32位机的上限是64T
2011-7-28 21:34
0
游客
登录 | 注册 方可回帖
返回
//