从有关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应该引发故障。
当进程尝试引用内存时,硬件将执行通常的翻译过程。但是,它还会进行额外的检查,以查看是否未设置访问标志。如果是这样,它将给操作系统造成故障,操作系统应设置该位并允许该过程继续进行。同样,如果硬件检测到正在写入未设置脏页的页面,则操作系统将页面标记为脏页将引发错误。
答案 0 :(得分:2)
我建议忽略该链接作为源。这非常令人困惑。我没有提到任何特定的实现,但是清楚地描述了一个实现。
在任何经过合理设计的处理器中,TLB对程序员(甚至系统程序员)都是完全透明的。它完全是一件硬件。
1:TLB条目的格式与PTE(页表条目)相同吗?
程序员永远不会看到TLB条目。它们可以具有与PTE相同的格式。他们可能不会。
2:对于遍历所有页面的“页面”,它们是TLB条目还是PTE?
程序员无法访问TLB条目。他们必须引用PTE。
3:为什么将其移出而不是“移入”?
可能是这样,但是您的链接中似乎存在很多混乱。
4:是顺序(1)设置两个位(2)放入TLB还是相反?
这描述了一些特定的,未命名的实现。大多数处理器都有一个脏位,但并非所有处理器都有访问位。