linux – 几乎是连续的与物理上连续的内存

linux – 几乎是连续的与物理上连续的内存,第1张

概述几乎连续的记忆也总是在物理上连续吗?如果没有,如何在物理上非连续的RAM块上分配几乎连续的内存并进行内存映射?详细的答案表示赞赏. 简短回答:您无需关心(除非您是内核/驱动程序开发人员).对你来说都是一样的. 更长的答案:相反,几乎连续的记忆通常不是物理上连续的(只是非常少量).除了巧合,或机器刚刚启动后不久.但是,这不是必要的. 分配大量物理连续RAM的唯一方法是使用大页面(因为一页内的内存需要 几乎连续的记忆也总是在物理上连续吗?如果没有,如何在物理上非连续的RAM块上分配几乎连续的内存并进行内存映射?详细的答案表示赞赏.解决方法 简短回答:您无需关心(除非您是内核/驱动程序开发人员).对你来说都是一样的.

更长的答案:相反,几乎连续的记忆通常不是物理上连续的(只是非常少量).除了巧合,或机器刚刚启动后不久.但是,这不是必要的.

分配大量物理连续RAM的唯一方法是使用大页面(因为一页内的内存需要是连续的).然而,这是一个无用的尝试,因为您的过程没有可观察到的差异,您认为它是连续的内存是否实际上是连续的,但使用大页面存在缺点.

在物理上非连续的RAM上的存储器映射不是特别“特殊”的方式.它遵循所有内存管理遵循的相同方法.

*** 作系统在“页面”中划分虚拟内存,并为您的进程创建页表条目.当您访问某个位置的内存时,相应的页面根本不存在,或者它存在并对应于RAM中的实际页面,或者它存在但与RAM中的实际页面不对应.

如果页面存在于RAM中,则不会发生任何事情.否则会生成故障并运行某些 *** 作系统代码.如果事实证明页面根本不存在(或者没有正确的访问权限),则您的进程会因分段错误而终止.

否则, *** 作系统会选择一个未使用的任意页面(或者交换掉它认为最不重要的页面),然后将数据从磁盘加载到该页面中.在内存映射的情况下,数据来自映射文件,否则它来自交换(对于全新分配的内存,复制零页).然后 *** 作系统将控制权返回给您的流程.你永远不会知道这件事.

如果您访问位于不同页面的“连续”(或者您认为!)内存区域中的另一个位置,则会运行完全相同的过程.

1实际上,它有点复杂,因为页面可能存在于RAM中但不是“正式”存在,是要回收的页面列表的一部分.但这太复杂了.

总结

以上是内存溢出为你收集整理的linux – 几乎是连续的与物理上连续的内存全部内容,希望文章能够帮你解决linux – 几乎是连续的与物理上连续的内存所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1018017.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存