栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

mmap或malloc是否分配RAM?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

mmap或malloc是否分配RAM?

这非常依赖于OS /计算机。

在大多数操作系统中,都不分配RAM。它们都分配VM空间。它们使一定范围的进程虚拟内存有效使用。通常,操作系统会在第一次写入时稍后分配RAM。在此之前,这些分配不会使用RAM(除了将它们列为有效VM空间的页表之外)。

如果要分配物理RAM,则必须使每个页面(

sysconf(_SC_PAGESIZE)
使您的系统页面大小)变脏。

在Linux中,您可以在中查看包含所有详细信息的VM映射

/proc/self/smaps
Rss
是该映射的驻留集(RAM中驻留了多少),其他所有脏的东西都将被交换掉。所有非脏内存将可供使用,但在那之前将不存在。

您可以使用以下方法使所有页面变脏

size_t mem_length;char (*my_memory)[sysconf(_SC_PAGESIZE)] = mmap(      NULL    , mem_length    , PROT_READ | PROT_WRITE    , MAP_PRIVATE | MAP_ANonYMOUS    , -1    , 0    );int i;for (i = 0; i * sizeof(*my_memory) < mem_length; i++) {    my_memory[i][0] = 1;}

在某些实现中,也可以通过将

MAP_POPULATE
标志传递给来实现
mmap
,但是(取决于您的系统)如果尝试映射更多内容而没有可用的RAM
mmap
ENOMEM
则可能会失败。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/379821.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号