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权限才能执行此操作。您的目标是什么?是否要确保进程在访问内存时不会出现页面错误?或者,您是否试图通过阻止数据写入磁盘来保护数据?如果是后者,则接线可能不够。