页 table 条目是只写的有什么用?

What is the use of a page table entry being write-only?

我目前正在了解我的操作系统 class 中的页面 table,并且遇到了只读位。我理解将页面状态 table 设置为只读或读写状态的用途,但在讲座中,他们还提到您也可以具有只写状态。对我来说,为什么一个进程不能从它可以写入的页面中读取是没有意义的。我试图在网上查找它,但找不到有关此只写状态的任何信息。

因此,我的问题是为什么程序员需要一个页面是只写的?这种情况的例子是什么?

程序不需要限制。 "He"认为是bug-free.

保护主要是操作系统的东西(捕捉错误,阻止 non-well-intention 程序)。

对于 OS 的观点:CPU 缓存可以通过 write-only 页面进行不同的优化(来自用户 space 偏好,或仅通过启发式,并且 OS 将使用标志来检查启发式假设是否正确)。但分页算法也可以以不同的方式完成。

在用户 space 中:对于 multi-process 通信,进程可以使用 write-only 页面。库可以使用 write-only 来更早地捕获一些错误(并且不会因缓冲区损坏而太晚,因此很难调试)。

还有编码器程序(读取大文件并保存编码文件):这将通知 OS 页面可以写入磁盘并从内存中丢弃。

但也为了安全:你在 write-only 页面上写了一个密码,所以你不应该再关心试图读取密码的恶意插件(其他进程能够读取它),所以仍然是multi-process 通讯案例.

但是如您所知,页面保护标志并不能反映程序的需要。它们只是 OS 的内部检查,它们可能会发生变化。 OS 可以设置更多的限制标志,并在第一次保护命中时(例如 COW [这也需要 write-protected])放松它们(在跟踪操作之后)

虽然只写页在理论上是可行的,但我想不出有任何处理器真正支持它。

这是英特尔手册的 link。

https://software.intel.com/sites/default/files/managed/7c/f1/253668-sdm-vol-3a.pdf

参见第 5-12 节。您只能在页面上禁用写入和执行。只能通过访问模式禁用读取。