mmap

    1热度

    1回答

    我要创建的程序,其中应用程序的一个实例将创建结构并放入共享存储器等mmapshm或和其他实例将共享数据。我面临着 的一个问题是“如何写字符串数据类型为共享内存”,按我的知识串级将在运行时分配内存,并且会在应用程序的地址空间。 我有以下的结构,我想与其他进程共享... struct Node { int id; string description; struct N

    1热度

    1回答

    我有服务器,使用多个进程(fork())。数据块很大,可以由一个进程创建,应该在其他进程之间共享。 因此,我使用shm_open + mmap来创建共享内存并将其映射到虚拟内存。 struct SharedData { const char *name; int descriptor; void *bytes; size_t nbytes; } voi

    2热度

    2回答

    我想学习设备驱动程序,并开始使用字符设备驱动程序。我实现了一个能够从内核缓冲区读/写的小程序。此外,我试图实现内存映射,这不正常工作。当我试图通过映射我的内核模块来读取一个简单的过程时,它给了我垃圾值。有人能帮忙吗? #include<linux/init.h> #include<linux/module.h> #include<linux/kernel.h> //printk() #inc

    2热度

    2回答

    我想知道一种方法来确定一个指针是否属于一个mmaped内存页面。 StackOverflow上的A post建议在指针上使用msync()以确定它是否通过。但是,只要指针是页面大小的倍数,无论页面是否为mmaped,我发现msync()都会成功。 我受宏观计算页面的起始地址: #define align_to_page(addr,pagesize) (addr & ~(pagesize - 1))

    0热度

    1回答

    下面是程序: #include <stdio.h> #include <stdint.h> #include <unistd.h> #include <stdlib.h> #include <sys/mman.h> #include <sys/types.h> #include <sys/file.h> #include <errno.h> long* mapmem(off_t

    1热度

    2回答

    我使用的是在intel i7处理器上编译的Opensuse 13.1上的程序。我在qemu(虚拟)环境中编译了相同的程序,以模拟带有ARM处理器的OpenSuse 13.1。这行代码: rvp = mmap(rvp, length, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_FIXED, fildes, 0); 给我一个指向Ram内存的指针。但是这个内

    4热度

    1回答

    有内存映射工具可用于映射可写入内存的文件。我希望所有现代操作系统能够异步地反映内存在磁盘上的变化,那么为什么大多数关系数据库会使用日志文件/日志呢?

    0热度

    1回答

    如何使用mmap来获取函数的开始和结束地址?我想执行该函数,然后调用__clear_cache。清除刚刚执行的缓存中的所有内容。 clear_cache需要开始和结束地址。 我的代码中的一个函数代表一个测试用例,我需要清除缓存才能正确进行基准测试。我使用的Linux 3.7和C. 我需要使用mmap和不作为的malloc这里说: How clear and invalidate ARM v7 pr

    4热度

    2回答

    我正在重新学习C++,并且需要使用内存映射文件。我决定使用boost(因为它似乎是坚实的库)。 我创建了一个内存映射文件映射到一个双精度数组,并写在这个数组中的第一个double。磁盘文件包含前四个字节中的一些数据,其余部分归零,这对我来说很好奇,因为通常如果我在C++中获取指向内存位置的指针,在大多数情况下,我必须假定它包含垃圾。 我有任何保证新创建的内存映射文件将被清零(至少在Linux上)?

    1热度

    1回答

    将mmap在linux中的tmpfs卷导致活动页面被存储在RAM两次?我的理解是内核使用特殊的shmem_mmap操作来映射ramdisk,因此每个页面只消耗一次资源。但是我在xen虚拟机上,我也假设虚拟内存操作也是Xen虚拟机。 上下文:我在AWS上(即在xen虚拟机上)在tmpfs卷上试验mongodb。