| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1140 人关注过本帖
标题:到底是怎么理解每个进程有独立都4G内存空间
只看楼主 加入收藏
wobianlong
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2012-8-1
结帖率:92.86%
收藏
已结贴  问题点数:7 回复次数:7 
到底是怎么理解每个进程有独立都4G内存空间
常常听见说系统每个进程都有独立都4G内存空间
这个4G内存又分为2个2G,其中2G是所有进程共享都2G,另外2G是进程都私有空间
每个进程又有各自不同都映射表
那么我都问题是就算每个进程给2G私有空间好了,系统那么多进程 内存怎么够分呢,假设算上了虚拟内存也完全不够分啊?
每个进程给2G那么20个进程不是就要40G了,
迷惑了很久都问题了
搜索更多相关主题的帖子: 空间 虚拟内存 
2012-09-02 14:27
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:4 
那个2G私有的是逻辑空间,并非有真实内存对应,而是操作系统按需要映射切换的。另外那个共享的2G其实就是Windows的类代码和管理空间,所有基于Windows运行的进程都是使用这同一份内存的。

授人以渔,不授人以鱼。
2012-09-02 14:32
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:4 
以下是引用wobianlong在2012-9-2 14:27:37的发言:

常常听见说系统每个进程都有独立都4G内存空间
这个4G内存又分为2个2G,其中2G是所有进程共享都2G,另外2G是进程都私有空间
每个进程又有各自不同都映射表
那么我都问题是就算每个进程给2G私有空间好了,系统那么多进程 内存怎么够分呢,假设算上了虚拟内存也完全不够分啊?
每个进程给2G那么20个进程不是就要40G了,
迷惑了很久都问题了

你疑惑的可能主要是 每个进程都有4G 加起来不就很大了么

其实这里的4G就好像一个本子 本子上能记100个人的名字 这个【100】是本子的上限 但本子实际上的人的数量可不一定有这么多啊

不同进程都有4G就好像不同的老师 每人手里都拿一个本子记名字 这些本子上限都是100 但可能记的人总共只有那么100个 甚至可能更少 10个 这也无所谓啊

内存分配好像是4k一个页 貌似这就是分配的最小单元了 也就相当于一个人
2012-09-02 14:43
wobianlong
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2012-8-1
收藏
得分:0 
回复 3楼 zklhp
就是说最大可以给你分配2G私有地址?但是不一定分配给你?
假设要运行2个超级占内存都软件 每个占2G会如何是好

我听到有人问为什么,就用光一样的速度从大爆炸时代赶来了,遍布于世界各地的危险
2012-09-02 15:27
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用wobianlong在2012-9-2 15:27:25的发言:

就是说最大可以给你分配2G私有地址?但是不一定分配给你?
假设要运行2个超级占内存都软件 每个占2G会如何是好

那第二个肯定申请不到内存 一般是出错退出 如果是没设置虚拟内存或虚拟内存小

如果设置了足够大 那运行第二个的时候 第一个占用的物理内存就存到硬盘上 这时硬盘会响 让第二个程序能运行

哦 如果是一块呢 呵呵 搞不好都退出都运行不了
2012-09-02 15:44
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
虚拟地址再多也不会占用实际的内存。只有申请了并实际分配了的内存,才是进程实际占用的内存。
如果实际内存不够用了,申请就会失败。分配失败的错误,一般需要那个进程自己解决,比如想办法削减开支。不过有时需要申请的内存都是必要的内存,拿不着,没有其它办法,只好出错退出。
虚拟内存就是分出部分硬盘来当内存,操作系统负责在硬盘和内存之前搬运信息,进程不用操心。只是一但要用到硬盘的话,可能就会大幅减缓程序的运行速度。
2012-09-02 17:36
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
楼主每次结题都很快 这点我很喜欢
2012-09-02 17:38
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
回复 7楼 zklhp
不蹲点的人永远不能多拿分……
2012-09-02 17:55
快速回复:到底是怎么理解每个进程有独立都4G内存空间
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022562 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved