关于TLB条目和页面表条目

时间:2018-12-12 01:33:09

标签: memory-management operating-system cpu-architecture virtual-memory tlb

从有关TLB的网站:(https://www.bottomupcs.com/virtual_memory_hardware.xhtml#other-page-related-faults):

对于以下部分,我进行了突出显示:

1 :TLB条目的格式与PTE(页表条目)相同吗?还不清楚
页面中的“页面”可以标记为是指TLB输入还是PTE?

2 :对于所有页面中的“页面” ,它们是TLB条目还是PTE?

3 :为什么它被移出而不是“移入”?

4 :是顺序(1)设置两个(2)放入TLB还是相反?

  

TLB通常会产生另外两个重要错误,这些错误有助于管理访问的页面和脏页面。每个页面通常都包含一个单一位的属性,用于标记该页面是否已被访问或脏了。

     

已访问页面只是已访问的任何页面。 1 当页面翻译最初加载到TLB中时,可以将该页面标记为已访问(否则为什么要加载它?[19])

     

2 操作系统可以定期浏览所有页面并清除访问的位,以了解当前正在使用的页面。当系统内存已满并且操作系统需要选择要换出到磁盘的页面时,显然那些未重置访问位的页面是最适合删除的页面,因为它们的使用时间最长。 / p>      

脏页是写有数据的页,因此与磁盘上已经存在的任何数据都不匹配。例如,如果页面是从交换加载的,然后由进程写入,则 3 必须先在磁盘上进行复制,然后才能从交换中移出更新。干净的页面没有任何更改,因此我们不需要将页面复制回磁盘的开销。

     

两者的相似之处在于它们可以帮助操作系统管理页面。一般的概念是,页面有两个额外的位。脏位和访问位。 4 将页面放入TLB时,这些位被设置为指示CPU应该引发故障。

     

当进程尝试引用内存时,硬件将执行通常的翻译过程。但是,它还会进行额外的检查,以查看是否未设置访问标志。如果是这样,它将给操作系统造成故障,操作系统应设置该位并允许该过程继续进行。同样,如果硬件检测到正在写入未设置脏页的页面,则操作系统将页面标记为脏页将引发错误。

1 个答案:

答案 0 :(得分:2)

我建议忽略该链接作为源。这非常令人困惑。我没有提到任何特定的实现,但是清楚地描述了一个实现。

在任何经过​​合理设计的处理器中,TLB对程序员(甚至系统程序员)都是完全透明的。它完全是一件硬件。

  

1:TLB条目的格式与PTE(页表条目)相同吗?

程序员永远不会看到TLB条目。它们可以具有与PTE相同的格式。他们可能不会。

  

2:对于遍历所有页面的“页面”,它们是TLB条目还是PTE?

程序员无法访问TLB条目。他们必须引用PTE。

  

3:为什么将其移出而不是“移入”?

可能是这样,但是您的链接中似乎存在很多混乱。

  

4:是顺序(1)设置两个位(2)放入TLB还是相反?

这描述了一些特定的,未命名的实现。大多数处理器都有一个脏位,但并非所有处理器都有访问位。