防止RAM分页到交换区(锁定)

发布于 2021-01-29 16:57:30

有没有办法从Python调用POSIXmlock函数?的作用mlock是禁用换出某些对象。

我知道在保护加密密钥方面还有其他问题,我只想知道如何将其包含在RAM中。

关注者
0
被浏览
51
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    对于CPython,没有很好的答案,这不涉及编写Python
    C扩展,因为它mlock适用于页面而不是对象。即使您曾经ctypes检索过必要的地址并mlock通过ctypes
    mlock调用对它们进行了遍历,也很难确定何时到达mlock和何时到达munlock。您需要知道所有受保护数据类型的内存地址和大小;因为mlock网页上的作品,你必须仔细跟踪多少个对象在任何给定的网页目前(因为如果你只是mlockmunlock盲目,有一个以上的东西锁在一个页面中,首先munlock将解开所有的人;mlock/munlock是一个布尔型标志,它不计算锁定和解锁的数量)。

    即使您能够做到这一点,在数据获取和mlock将数据写入交换之间仍然存在竞争。

    您可以通过仔细使用mmap模块和memoryviews来部分避免这些问题(mmap为您提供内存页面,memoryview无需复制即可引用该内存,因此ctypes可以用于mlock该页面),但是您必须从头开始构建所有内存。

    简而言之,Python不在乎您想要的方式进行交换或内存保护。它信任将交换文件配置为所需的安全性(例如,禁用或加密),既不提供额外的保护,也不提供您需要添加该文件的信息。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看