Operating system 从TLB中逐出条目时更新页表

Operating system 从TLB中逐出条目时更新页表,operating-system,cpu-architecture,virtual-memory,tlb,page-tables,Operating System,Cpu Architecture,Virtual Memory,Tlb,Page Tables,从TLB中逐出条目时是否更新页表?如果是,为什么?页面表中更新了哪些信息?我认为当收回的页面是干净的时,不需要更新页面表 类似地,在TLB中缓存(引入)页面时,页面表是否会更新?硬件页面表遍历器(如为x86定义的)可以在加载页面表条目(PTE)时修改访问和修改的指示符。由于PTE可以在非写未命中时按需加载,因此在PTE加载到TLB后,修改的指示符可能会发生更改。(PTE也可以预取到TLB中,在这种情况下,在PTE插入TLB后,甚至可能需要设置访问的指示符。传统的集群TLB条目,每个条目存储一个以

从TLB中逐出条目时是否更新页表?如果是,为什么?页面表中更新了哪些信息?我认为当收回的页面是干净的时,不需要更新页面表


类似地,在TLB中缓存(引入)页面时,页面表是否会更新?

硬件页面表遍历器(如为x86定义的)可以在加载页面表条目(PTE)时修改访问和修改的指示符。由于PTE可以在非写未命中时按需加载,因此在PTE加载到TLB后,修改的指示符可能会发生更改。(PTE也可以预取到TLB中,在这种情况下,在PTE插入TLB后,甚至可能需要设置访问的指示符。传统的集群TLB条目,每个条目存储一个以上的PTE,并带有一个标签,如用于常规内存缓存的子块,自然可以从预取中受益。)e与标记关联的其他页面,因为它不涉及额外存储(即,这种预取不会造成缓存污染),并且相邻的PTE存储在已从内存中获取的对齐块(对于典型的多级页面表)中。)

TLB通常使用直写策略。这样做的优点是PTE所在的缓存块最近正在使用。它还可以避免在清除访问位或脏位时需要使用处理器间中断。因为TLB通常是不一致的,所以使用写回使得软件强制一致性(当操作系统清除访问的或脏的位时)更加复杂

某些硬件TLB管理体系结构不支持硬件设置访问指示器和脏指示器。相反,会生成一个异常,软件会处理这些特殊情况。由于设置这些指标不像更改地址转换或权限那样罕见,因此在不需要操作系统参与的情况下这样做可能会有一些好处


(脏指示符用于允许操作系统避免(不必要地)从内存中删除未脏的页面时回写该页面。访问的指示符用于支持操作系统中的a(通常基于最近情况)。

1。)无2。)标志/地址3。)TLB是页面表中保存的映射的缓存。因此,来自页面表的VAPA依赖项可以缓存在TLB中。通常,当PTE加载到TLB中时(如果尚未设置),页面表条目中的已访问指示符会更新(在页面表中)。即使在TLB命中时,脏指示器也会在写入时更新。(即,大多数TLB都是直写的。)可以支持回写TLB,对于每个虚拟地址标签都有多个PTE的TLB来说,这可能是可取的。@PaulA.Clayton,谢谢您的回答。这个问题只是为了更好地理解这一点。为什么需要在TLB加载时更新页面表PTE中的访问指示器字段?换句话说,在什么情况下访问指示器字段会有帮助?太好了!非常有用。因此,操作系统使用访问的指示符进行页面替换管理。现在我明白了为什么在TLB中缓存PTE时,会更新PTE的已访问指标。我不明白的是,当PTE从TLB中退出时,更新访问的指标。这对我来说似乎有点多余。@通常TLB是直写的,所以当PTE从TLB中移出时,内存不会更新。从理论上讲,回写TLB是可能的,在这种情况下,如果PTE发生更改,则从TLB逐出时会更新内存中的PTE。