Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C OSX内核将虚拟地址空间锁定到物理内存中_C_Macos_Kernel_Mach - Fatal编程技术网

C OSX内核将虚拟地址空间锁定到物理内存中

C OSX内核将虚拟地址空间锁定到物理内存中,c,macos,kernel,mach,C,Macos,Kernel,Mach,要分配内存,我喜欢这样做: uint64_t _addr = 0x00; kern_return_t err = mach_vm_allocate(mach_task_self(), &_addr, size, VM_FLAGS_ANYWHERE); if (err != KERN_SUCCESS) { printf("failed to allocate %s\n", mach_error_string(err)); } 但是有人能告诉我如何防止内

要分配内存,我喜欢这样做:

uint64_t _addr = 0x00;

kern_return_t err = mach_vm_allocate(mach_task_self(), &_addr, size, VM_FLAGS_ANYWHERE);
    if (err != KERN_SUCCESS) {
        printf("failed to allocate %s\n", mach_error_string(err));

    }

但是有人能告诉我如何防止内存被分页到交换区吗?在Windows中有VirtualLock。

它应该可以用于此。现在还不清楚您是从内核代码(例如kext)还是从用户代码中询问这个问题。如果从用户空间访问,您可能需要root权限才能执行此操作。

您的目标是什么?是否要确保进程在访问内存时不会出现页面错误?或者,您是否试图通过阻止数据写入磁盘来保护数据?如果是后者,则接线可能不够。