【问题标题】:OS X kernel lock virtual address space into physical memoryOS X 内核将虚拟地址空间锁定到物理内存中
【发布时间】:2020-06-25 22:11:51
【问题描述】:

为了分配内存,我这样做:

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。

【问题讨论】:

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

标签: c macos kernel mach


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2018-08-12
    • 2015-05-24
    • 2014-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-03
    • 2023-03-17
    • 2019-12-06
    相关资源
    最近更新 更多