当我们malloc内存时,只有虚拟内存可用,它实际上指向零页。当我们试图写入malloced内存时,真正的物理内存将被分配,此时,将会有复制副本将从零页面复制到由页面错误映射的物理内存中。我的问题是,在Linux源代码中如何/如何实现零填充需求,我想禁用此功能来做一些测试。我想这可能发生在页面错误过程中,而不是brk()或mmap()。在Linux内核中如何实现零填充需求,以及我可以禁用它的位置?
1
A
回答
0
如果你希望你的用户空间进程分配实际内存每* ALLOC电话,我认为在未来的选项:
如果是出于性能的考虑,你可以取代的malloc + memset的所有释放calloc电话所以进程总是会有一个真正的内存页面。但是,内核仍然可以合并一些内存页面。
禁用内存过量使用,以便每个malloc此刻都会返回页面。这样,您的程序将无法分配比可用内存更多的内存(RAM +交换)。请参阅https://www.kernel.org/doc/Documentation/vm/overcommit-accounting
+0
@Ctx给出的答案更符合我的回答,但仍然感谢您的回复。 – Qinchen
+0
当然,不客气! – eugenioperez
相关问题
- 1. Linux内核如何以及何时在内核3.14.17中调用sysctl_init()?
- 2. 是一个可以实现PREEMPT的Linux内核实时吗?
- 3. 哪里获得Linux内核,它可以让我在内核中访问信息
- 4. 什么是回调URL在Instagram的API,以及如何可以我实现它
- 5. 如何以及我可以在Javascript中禁用触摸事件?
- 6. 我可以在内核中设置Linux SIGUSR1吗?
- 7. 零填充,位的舍弃,以及添加启动位和停止位 - MATLAB
- 8. 是内核单例,我可以在需要时创建它
- 9. 我可以在Linux内核模块中使用strtok()吗?
- 10. 我在哪里以及如何在我的XAML中实现ScrollViewer?
- 11. 如何使用facebookAPI以及我在哪里可以找到它?
- 12. node.js中的setKeepAlive如何工作以及如何实现它?
- 13. 如何在飞镖中实现零填充右移?
- 14. 如何在R中替换位置填充向量零中的零
- 15. 我可以使用JavaScript中的内容预填充iframe吗?
- 16. 如何调用这个组件,以及如何实现它
- 17. 如何枚举在内部实现,以及如何在Java
- 18. Maya的dnoise函数:它做什么以及如何实现它?
- 19. 有人可以在iOS中解释以下两种方法,以及它们如何用于实现Facebook共享?
- 20. Java位运算符(零填充移位)不填充零
- 21. 如何在Linux内核4.x中实现我自己的系统调用?
- 22. 我在哪里可以得到32位的Linux内核源代码为x86
- 23. 如何在linux内核中实现新的调度方案
- 24. 使用JavaScript填充选项的选项以及删除它们
- 25. 如何在Webrtc中执行socket.io实现视频调用,以及我在server.js中需要更改哪些内容?
- 26. 在MongoDB中的集群以及它如何拾取核心
- 27. 什么是解析?以及我们如何在j2me中实现它?
- 28. 如何在Buildroot中配置Linux内核?
- 29. 了解MongoDB(以及一般的NoSQL)以及如何充分利用它
- 30. Label.Image是否可以出现在填充区域内?
为什么要禁用它?如果是用于时间测试,也许你可以在进行时序测试之前强制写入时复制发生在malloc的内存中。 –
Malloc内存发生在用户空间中,但写时复制发生在内核空间中。当这种情况发生时,我认为我不具备这种能力来控制它。 – Qinchen
在'mm/page_alloc.c'中看到函数'prep_new_page()'。如果您将(条件)调用注释为'prep_zero_page()',那么页面应该保持未初始化。 – Ctx