| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1516 人关注过本帖
标题:散分+讨论共享内存
取消只看楼主 加入收藏
autumn1202
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:64
专家分:553
注 册:2011-2-21
结帖率:100%
收藏
已结贴  问题点数:100 回复次数:6 
散分+讨论共享内存
昨天受了瓦兄的大礼,深感受之有愧,今天特来散分,
刚好对共享内存理解不深,顺便发起个话题,讨论下共享内存是使用纯物理内存还是虚拟内存?原来做过试验,申请一块共享内存后查看物理内存的使用情况,当时linux下的试验,结论貌似是虚拟内存,时间久了不确定了,大牛们有没有比较明确的说法,各种平台的都可以

补充:有没有某些机制(不一定是共享内存的)纯用物理内存?(除了禁掉虚拟内存……)

结贴前补充:帖子的本意除了散分,就是想大家一起讨论下,最后虽然有点跑题,不过还是能通过大家的回复学习一些知识,呵呵,谢谢大家。目前没有发现哪些机制是使用纯物理内存的(也可能是我孤陋寡闻)。有人说随着物理内存的逐日增大虚拟内存机制会无用武之地,不过随着物理内存的增大,对物理内存的需求也在增大(比如内存数据库),所以大部分人(这个大部分人的来由,是根据网上看其他人的讨论,当然也有点个人倾向)还是倾向于虚拟内存是无法被替代。如果大家还有什么要指出的可以继续跟帖,有必要我会再开帖给大家加分。 总之很喜欢我们的论坛,也希望论坛能越来越好!

(真正分起来才觉得分太少了,不够分……)

[ 本帖最后由 autumn1202 于 2011-4-16 22:51 编辑 ]
搜索更多相关主题的帖子: linux 时间 
2011-04-15 09:40
autumn1202
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:64
专家分:553
注 册:2011-2-21
收藏
得分:0 
以下是引用御坂美琴在2011-4-15 09:45:51的发言:

申请的内存,只要不读写,都还不是真正的给你放在内存,你memset一下你就明白了
哦?memset再怎么看?还请进一步指点下,
共享内存比较特殊,所以刚开始还想会不会它是纯用物理内存
2011-04-15 10:01
autumn1202
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:64
专家分:553
注 册:2011-2-21
收藏
得分:0 
回复 4楼 wujieru
最近都没见你怎么发言,还以为你已经改好了
2011-04-15 10:02
autumn1202
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:64
专家分:553
注 册:2011-2-21
收藏
得分:0 
以下是引用御坂美琴在2011-4-15 10:14:30的发言:

你申请后,对那片内存memset一下,你在看看内存占用,你会发现内存加了好多,虚拟内存却少了好多
恩恩,版主提供了另一种验证的办法,,谢谢
2011-04-15 10:25
autumn1202
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:64
专家分:553
注 册:2011-2-21
收藏
得分:0 
以下是引用你们都要疼我哦在2011-4-15 13:34:06的发言:

没有前提知识,空谈这个毫无意义。
多说两句么,不怕引申出去,引申的越多,学到的越多
前提知识指的什么?
当时考虑这个问题主要是考虑共享内存的随机访问会降低多少速度

顺便谢谢其他人的回复
2011-04-15 14:20
autumn1202
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:64
专家分:553
注 册:2011-2-21
收藏
得分:0 
以下是引用lintaoyn在2011-4-15 16:03:01的发言:

去看《深入理解计算机系统》
虚拟内存是占用磁盘的空间,主存相当于虚拟内存的高速缓存。你运行一个程序系统也不会都给你加载到主存里,是按需调入,具体也忘了。
恩恩,是本好书,讲了虚拟内存,不过没讲共享内存的事,总之谢谢回复
2011-04-16 22:14
autumn1202
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:64
专家分:553
注 册:2011-2-21
收藏
得分:0 
以下是引用boxinchao在2011-4-16 12:36:21的发言:

前段时间接触到一点多核处理器内存管理,使用性能的东西,涉及到内存映射,cache miss,TLB异常等,理解的很浅薄。

下面摘自某blog的一段话,希望对各位有帮助理解:
大家都知道进程空间是独立的,它们之间互不影响。比如同是0xabcd1234地址的内存,在不同的进程中,它们的数据是不同的,没有关系的。这样做的好处很多:每个进程的地址空间变大了,它们独占4G(32位)的地址空间,让编程实现更容易。各个进程空间独立,一个进程死掉了,不会影响其它进程,提高了系统的稳定性。
 
要做到进程空间独立,光靠软件是难以实现的,通常要依赖于硬件的帮助。这种硬件通常称为MMU(Memory Manage Unit),即所谓的内存管理单元。在这种体系结构下,内存分为物理内存和两种。物理内存就是实际的内存,你机器上装了多大内存就有多大内存。而应用程序中使用的是虚拟内存,访问内存数据时,由MMU根据页表把虚拟内存地址转换对应的物理内存地址。
 
MMU把各个进程的虚拟内存映射到不同的物理内存上,这样就保证了进程的虚拟内存是独立的。然而,物理内存往往远远少于各个进程的虚拟内存的总和。怎么办呢,通常的办法是把暂时不用的内存写到磁盘上去,要用的时候再加载回内存中来。一般会搞一个专门的分区保存内存数据,这就是所谓的交换分区。
 
这些工作由内核配合MMU硬件完成,内存管理是内核的重要功能。其中为了优化性能,使用了不少高级技术,所以内存管理通常比较复杂。比如:在决定把什么数据换出到磁盘上时,采用最近最少使用的策略,把常用的内存数据放在物理内存中,把不常用的写到磁盘上,这种策略的假设是最近最少使用的内存在将来也很少使用。在创建进程时使用COW(Copy on Write)的技术,大大减少了内存数据的复制。为了提高从虚拟地址到物理地址的转换速度,硬件通常采用TLB技术,把刚转换的地址存在cache里,下次可以直接使用。
进程空间的知识,让用户自以为自己是在一块连续的内存区工作,其实只是只是不连续物理内存甚至是硬盘的映射。谢谢回复
2011-04-16 22:20
快速回复:散分+讨论共享内存
数据加载中...
 
   



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

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