Linux 的 mincore(2)
在用户态应用程序中有何用处?为什么它会暴露给非特权用户?
我可以想象一些数据库会利用知道哪些页面被缓存的优势,但还有哪些其他示例?
最佳答案
What is Linux
mincore(2)
useful for in userland applications?
我想说这很可能是基于意见的。我想到的是分析、统计、绩效评估和类似的东西。除此之外,我想不出其他现实的合法用例。
以下是我发现的使用 mincore
的一些程序示例(如您所见,所有分析/统计相关):
- http://man7.org/linux/man-pages/man1/fincore.1.html
- https://github.com/fornwall/pagecache
- https://github.com/bwaldvogel/mongocachestat
- https://github.com/touzaniMarouane/BlackLab
Why is it exposed to non-privileged users?
这实际上是一个关于 one year ago 的好问题。 ,当系统调用的语义没有明确定义时,这样的系统调用的存在是相当值得怀疑的。在内核版本 4.14.2 之前,mincore
实际上可能被滥用,从用户空间泄漏未初始化的内核内存(请参阅 CVE-2017-16994 和相关的 Project Zero bug report )。
从那时起,系统调用已被修补并且其语义已更新。进程通过调用它所能做的唯一事情就是查询有关其虚拟内存映射的信息。实际上没有什么有害的,只是 self 检查,因此非特权进程的可用性。没有真正的理由将其设为特权系统调用,如果这样做也可能被视为 API 破坏。
关于linux - mincore 系统调用在用户态应用程序中有何用途?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59887126/