草庐IT

mmap_sem

全部标签

linux - mmap(2) 与 mmap(3)

有谁知道mmap(2)和mmap(3)的区别是什么?手册第3节被描述为“本章描述了除第2章中描述的实现系统调用的库函数之外的所有库函数。”mmap(3)不执行系统调用吗?阅读这两个手册页,我发现mmap(2)似乎接受比mmap(3)更广泛的标志,并声称是能够映射设备I/O空间。mmap(3)声称能够将“共享内存对象”和“类型化内存对象”映射到文件中,但没有提及设备I/O。由于这两个函数具有相同的名称,我什至不确定如何选择一个而不是另一个。 最佳答案 mmap(3)应该是POSIXfunction.它应该在所有方面提供POSIX要求的

linux - mmap 是如何工作的?

我正在开发需要来自硬盘驱动器的mmap文件的Linux程序,但我有一个问题,什么会导致它失败。就像如果所有的内存都是碎片化的,每个只有200M,但是我想mmap一个文件到1000M的内存,会成功吗??还有一个问题,linux中是否有任何工具可以像Windows中的某些工具一样用于记忆内存,例如xp的内置工具。谢谢。 最佳答案 mmap()使用程序堆区域之外的地址,因此堆碎片不是问题,除非它可以使堆占用更多空间,并减少可用空间用于映射。如果您有大量映射文件,您可能会在地址空间相对受限的32位系统上遇到碎片问题。在64位系统上,碎片不太

linux - mmap 是如何工作的?

我正在开发需要来自硬盘驱动器的mmap文件的Linux程序,但我有一个问题,什么会导致它失败。就像如果所有的内存都是碎片化的,每个只有200M,但是我想mmap一个文件到1000M的内存,会成功吗??还有一个问题,linux中是否有任何工具可以像Windows中的某些工具一样用于记忆内存,例如xp的内置工具。谢谢。 最佳答案 mmap()使用程序堆区域之外的地址,因此堆碎片不是问题,除非它可以使堆占用更多空间,并减少可用空间用于映射。如果您有大量映射文件,您可能会在地址空间相对受限的32位系统上遇到碎片问题。在64位系统上,碎片不太

c - mmap 或 malloc 是否分配 RAM?

我知道这可能是一个愚蠢的问题,但我一直在寻找一段时间,无法找到明确的答案。如果我使用mmap或malloc(在C语言中,在linux机器上)是否会在RAM中分配空间?例如,如果我有2GB的RAM并且想要使用所有可用的RAM,我可以只使用malloc/memset组合、mmap,还是有其他我不使用的选项?不知道吗?我想编写一系列可以同时运行的简单程序,并保留进程中使用的所有RAM以强制使用交换,并频繁换入/换出页面。我已经用下面的程序试过了,但这并不是我想要的。它确实分配了内存(RAM?),并强制使用交换(如果有足够的实例正在运行),但是当我调用sleep时,这并不仅仅是锁定内存不被使用

c - mmap 或 malloc 是否分配 RAM?

我知道这可能是一个愚蠢的问题,但我一直在寻找一段时间,无法找到明确的答案。如果我使用mmap或malloc(在C语言中,在linux机器上)是否会在RAM中分配空间?例如,如果我有2GB的RAM并且想要使用所有可用的RAM,我可以只使用malloc/memset组合、mmap,还是有其他我不使用的选项?不知道吗?我想编写一系列可以同时运行的简单程序,并保留进程中使用的所有RAM以强制使用交换,并频繁换入/换出页面。我已经用下面的程序试过了,但这并不是我想要的。它确实分配了内存(RAM?),并强制使用交换(如果有足够的实例正在运行),但是当我调用sleep时,这并不仅仅是锁定内存不被使用

c - 如何释放使用 mmap 分配的内存?

我已使用mmap分配代码,但由于段错误而无法释放它。我已经完成了mprotect-PROT_WRITE以使其可写,但我仍然无法释放它。我的代码:1#include2#include3#include4#include5#include6#include7#include89intmain()10{11void*allocation;12size_tsize;13staticintdevZerofd=-1;1415if(devZerofd==-1){16devZerofd=open("/dev/zero",O_RDWR);17if(devZerofd 最佳答案

c - 如何释放使用 mmap 分配的内存?

我已使用mmap分配代码,但由于段错误而无法释放它。我已经完成了mprotect-PROT_WRITE以使其可写,但我仍然无法释放它。我的代码:1#include2#include3#include4#include5#include6#include7#include89intmain()10{11void*allocation;12size_tsize;13staticintdevZerofd=-1;1415if(devZerofd==-1){16devZerofd=open("/dev/zero",O_RDWR);17if(devZerofd 最佳答案

memory - 匿名 mmap 零填充?

InLinux,themmap(2)manpage说明匿名映射...isnotbackedbyanyfile;itscontentsareinitializedtozero.TheFreeBSDmmap(2)manpage虽然它确实promise在非匿名映射中文件末尾之后的字节是零填充的,但并未对零填充做出类似的保证。哪些Unix版本promise从匿名mmap返回零初始化内存?哪些在实践中返回零初始化内存,但在他们的手册页上没有做出这样的promise?在我的印象中,填零部分是出于安全原因。我想知道是否有任何mmap实现跳过了对被mmaped、munmapped、然后由单个进程再次m

memory - 匿名 mmap 零填充?

InLinux,themmap(2)manpage说明匿名映射...isnotbackedbyanyfile;itscontentsareinitializedtozero.TheFreeBSDmmap(2)manpage虽然它确实promise在非匿名映射中文件末尾之后的字节是零填充的,但并未对零填充做出类似的保证。哪些Unix版本promise从匿名mmap返回零初始化内存?哪些在实践中返回零初始化内存,但在他们的手册页上没有做出这样的promise?在我的印象中,填零部分是出于安全原因。我想知道是否有任何mmap实现跳过了对被mmaped、munmapped、然后由单个进程再次m

linux - mmap 系统调用中 MAP_ANONYMOUS 标志的目的是什么?

从man页面,MAP_ANONYMOUSThemappingisnotbackedbyanyfile;itscontentsareinitializedtozero.Thefdandoffsetargumentsareignored;however,someimplementationsrequirefdtobe-1ifMAP_ANONYMOUS(orMAP_ANON)isspecified,andportableapplicationsshouldensurethis.TheuseofMAP_ANONYMOUSinconjunctionwithMAP_SHAREDisonlysupp