OS X内核锁虚拟地址space到物理内存

OS X kernel lock virtual address space into physical memory

我喜欢这样分配内存:

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。

为此使用 mach_vm_wire() 应该可以。目前尚不清楚您是从内核代码(例如 kext)还是从用户代码询问这样做。如果来自用户 space,您可能需要 root 权限才能执行此操作。