mincore 系统调用在用户空间应用程序中的用途是什么?



Linux'mincore(2)在用户空间应用程序中有什么用?为什么它向非特权用户公开?

我可以想象一些数据库利用知道哪些页面被缓存的优势,但还有其他一些例子吗?

Linuxmincore(2)在用户空间应用程序中有什么用处?

我想说这很可能是基于意见的。分析,统计,绩效评估和类似的东西浮现在脑海中。除此之外,我想不出其他现实的合法用例。

以下是我发现的一些使用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

为什么它向非特权用户公开?

这实际上在一年前是一个很好的问题,当时syscall的语义没有明确定义,并且这种syscall的存在是相当值得怀疑的。在内核版本 4.14.2 之前,mincore实际上可能被滥用以从用户空间泄漏未初始化的内核内存(请参阅 CVE-2017-16994 和相关 Project Zero 错误报告(。

从那时起,系统调用已被修补,其语义也已更新。进程通过调用它唯一可以执行的操作是查询有关其虚拟内存映射的信息。实际上没有什么有害的,只是自我检查,因此可以使用非特权进程。没有真正的理由使其成为特权系统调用,如果这样做,也可以被视为 API 破坏。

最新更新