【问题标题】:Swap space and dirty pages交换空间和脏页
【发布时间】:2017-09-27 11:29:49
【问题描述】:

我无法理解 dirty bit 的实用性,它在页面替换期间应该很有用,用于标记脏页。 交换空间是操作系统将不适合主内存的页面放置在其中的磁盘部分。那么,为什么不应该在磁盘上写入非脏页呢?

让我们以一个页面从内存换出到磁盘为例。此时让我们假设它首先再次移动到主内存,然后再次移动回磁盘。 当它移动到主内存时,我认为磁盘不会保留它的副本。 因此,即使这个页面在主存中没有变脏,为什么当它再次从主存中释放时,它不应该被重写到磁盘上呢?

【问题讨论】:

  • 我无法辨别这里的问题。
  • @user3344003 问题是:脏位在页面替换中有什么用处?

标签: pagination operating-system swap virtual-memory


【解决方案1】:

当页面被交换回内存(从磁盘加载到 RAM)时,交换文件中的位不会失效或被擦除 - 它们仍然包含在页面从 RAM 交换到磁盘时写出的相同值。因此,当它从磁盘交换到 RAM 时,RAM 和磁盘中的页面是相同的。如果没有执行写入,则页面的 RAM 和磁盘(交换)版本保持相同。如果内核决定再次将此页面从 RAM 中交换出来,则无需将其写入磁盘(交换),因为该页面的正确内容已经在磁盘上。所以页面可以简单地被释放并用于其他目的。但是如果已经执行了写入,那么磁盘上的页面版本和交换中的页面版本是不同的,在这种情况下,脏位被设置,表明该页面必须写入磁盘才能被重用。

【讨论】:

    【解决方案2】:

    每当对页面进行写入时,使用脏位的处理器都会设置该位。

    如果该位被清除,则表示页面没有被更改。如果操作系统需要调出该页面,它知道它不必将该页面(带有明确的脏位)写回页面文件。

    【讨论】:

    • 好的,但是您假设磁盘上有页面的副本;然而,据我所知,一个页面只能在磁盘和主内存之间的一个中。
    • 在虚拟内存系统中,二级存储中总是有一个页面的镜像。存储空间在物理内存之前分配。
    • 我从来没有听说过它。除了代码部分,保存运行程序产生的二级内存动态数据的实用程序是什么?页面镜像所在的存储段叫什么名字?
    • 如果你的程序分配动态内存,它必须先从操作系统分配页面。操作系统依次为这些页面分配页面文件空间,然后为它们分配内存。数据的存储位置取决于操作系统。一些操作系统使用可执行文件和库文件作为静态数据的页面文件。
    猜你喜欢
    • 2017-02-17
    • 2012-11-13
    • 2018-06-10
    • 1970-01-01
    • 2022-11-24
    • 1970-01-01
    • 1970-01-01
    • 2016-09-15
    • 2017-08-27
    相关资源
    最近更新 更多