gpt4 book ai didi

python - 防止 RAM 分页到交换区 (mlock)

转载 作者:太空狗 更新时间:2023-10-30 01:14:35 60 4
gpt4 key购买 nike

有没有办法调用the POSIX mlock function来自 Python? mlock 的作用是禁止换出某些对象。

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

最佳答案

对于 CPython,如果不涉及编写 Python C 扩展,就没有好的答案,因为 mlock 作用于页面,而不是对象。即使您使用 ctypes 检索必要的地址并通过 ctypes mlock 调用对它们全部进行 mlock,您确定何时 mlock 以及何时 munlock 会很痛苦。您需要知道所有 protected 数据类型的内存地址和大小;由于 mlock 在页面上工作,您必须仔细跟踪任何给定页面中当前有多少对象(因为如果您只是 mlockmunlock 盲目地,页面中有多个东西要锁定,第一个 munlock 将解锁所有东西; mlock/munlock 是一个 bool 标志,它不会t 计算锁定和解锁的次数)。

即使您做到了这一点,您仍然会在数据获取和 mlock 之间进行竞争,在此期间可以写入数据进行交换。

您可以通过谨慎使用 mmap 模块和 memoryview 部分避免这些问题(mmap 为您提供内存页面,memoryview 引用所述内存而不复制它,因此 ctypes 可用于 mlock 页面),但您必须从头开始构建它。

简而言之,Python 不会按照您想要的方式关心交换或内存保护;它相信将交换文件配置为您所需的安全性(例如禁用或加密),既不提供额外保护也不提供您需要添加它的信息。

关于python - 防止 RAM 分页到交换区 (mlock),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29524020/

60 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com