[英]Prevent RAM from paging to swap area (mlock)
对于CPython,没有好的答案,不涉及编写Python C扩展,因为mlock
适用于页面,而不是对象。 即使你使用ctypes
检索所需的地址和mlock
-ed他们都通过ctypes
mlock
调用,你就会有一个时间确定何时地狱mlock
以及何时munlock
。 您需要知道所有受保护数据类型的内存地址和大小; 因为mlock
的工作原理上的网页,你必须仔细跟踪多少个对象在任何给定的网页目前(因为如果你只是mlock
和munlock
盲目,有一个以上的东西在一个页面锁定,第一munlock
将解锁所有这些; mlock/munlock
是一个布尔标志,它不计算锁定和解锁的数量)。
即使你管理它,你仍然会在数据获取和mlock
之间进行竞争,在此期间可以将数据写入交换。
你可以通过仔细使用mmap
模块和memoryview
来部分避免这些问题( mmap
为你提供内存页面, memoryview
引用表示内存而不复制它,因此ctypes
可以用于mlock
页面),但是你必须构建这一切都是从零开始。
简而言之,Python并不像你想要的那样关心交换或内存保护; 它信任交换文件被配置为您所需的安全性(例如禁用或加密),既不提供额外保护也不提供您需要添加的信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.