虚拟内存部分和内存映射区域

虚拟内存部分和内存映射区域,第1张

概述虚拟内存部分和内存映射区域

由于进程在运行时有虚拟内存被复制到RAM中。 如前一篇文章所述。

mmap()使用哪一部分进程虚拟内存布局?

我有以下双打:

linux杀死进程使用超时以毫秒为单位

跨平台创build文件夹/目录的方法?

C的命名约定:结构和函数

用ps分组进程

GPIO监视与select

如果内存映射在未分配的内存中,并且在进程的虚拟内存中。 虚拟内存有助于避免一个进程触及其他进程的虚拟内存。 那么如何将内存映射用于进程间通信(IPC)?

在像linux这样的OS中,是否有每个单独的进程堆,堆栈和内存映射的单独部分,或者所有进程对于堆,堆栈和MMAP都有一个共同的部分?


例如:


如果在linux *** 作系统上有P1,P2和P3进程正在运行。 将所有图表中都给出的公共表格或者每个单独的任务单独的表格给每个部分。

在32位系统中,2 ^ 32 = 4千兆字节的虚拟内存是可能的,为用户空间应用预留1G字节用于内核和3千兆字节。 每个单独的进程可以有多达3千兆字节的虚拟内存,或者所有用户空间应用程序的总和可以是3千兆字节(即(P1 + P2 + P3)<= 3千兆字节)的虚拟内存大小。


学习者

linux _SC_PHYS_PAGES不适用于Mac OS X

使用SSH在远程服务器上启动后台进程,然后退出会话

确保XMODEM真实传输文件

看着一个bash脚本的输出

帮助:达到的最大客户数 – 分段错误

通过将IPC的内存映射工作,通过将相同范围的物理内存映射到不同进程中的两个或更多个虚拟地址范围。 这适用于通信,因为两个进程使用完全相同的内存单元(尽管它们可能在不同的地址“看到”它们)。 您可以在一个映射中更改一个值,并且可以在另一个映射中立即显示, 因为它是完全相同的内存 。

每个进程都有自己的独立堆栈和堆。 *** 作系统根本不在乎,只关心网页 。 堆和堆栈是应用程序(通过运行时)实现的东西。 当你调用像malloc这样的malloc ,运行时的分配器要么返回一个已经被保留的块,要么返回一个已经被保留的块(你之前称为free ),或者要求 *** 作系统保留更多的内存( sbrk或者mmap )。 当你第一次访问这个内存时, *** 作系统看到一个页面错误,并验证你被允许访问这个位置(因为你保留了它),然后提供一个有效的页面。

每个进程都可以使用(如“保留”)整个可用的地址空间(例如3GiB)。 这不会干扰任何其他进程。 请注意,由于碎片和对齐,以及由于您的可执行文件和堆栈带走了一点点,您实际上将无法分配完整的3 GiB,但您可以靠近它。


所有进程一起可以使用尽可能多的虚拟内存(物理内存和交换空间),但是它们只能使用尽可能多的物理内存(减去一点这个和那个,像不可分页的内核内存等)。

总结

以上是内存溢出为你收集整理的虚拟内存部分和内存映射区域全部内容,希望文章能够帮你解决虚拟内存部分和内存映射区域所遇到的程序开发问题。

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

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

原文地址: http://outofmemory.cn/langs/1281281.html

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

发表评论

登录后才能评论

评论列表(0条)

保存