5

我无法理解这个问题的答案:

考虑使用带有 TLB 寄存器的一级分页的操作系统。如果缺页率为 10%,需要时重新加载脏页,计算有效访问时间:

  • TLB 查找 = 20 ns
  • TLB 命中率 = 80%
  • 内存访问时间 = 75 ns
  • 交换页面时间 = 500,000 ns
  • 50% 的页面是脏的。

回答:

T = 0.8(TLB+MEM) + 0.2 ( 0.9[TLB+MEM+MEM] + 0.1[TLB+MEM + 0.5(磁盘) + 0.5(2磁盘+MEM)] ) = 15,110 ns

你能解释一下为什么吗?

4

2 回答 2

9

在这种情况下,“有效”时间是指“预期”或“平均”时间。因此,您需要花时间访问各个案例中的页面,并将每个案例乘以它的概率。通过拆分为多个级别的案例,表达式有些复杂。案例有:

  • 80% 的时间物理地址在 TLB 缓存中。这给了我们 80% 的时间访问 TLB 寄存器以及访问页面本身:0.8(TLB + MEM)
  • 剩余 20% 的时间它不在 TLB 缓存中。这会分成更多的情况,所以它给了我们0.2(loooong expression)(这个表达式实际上没有那个括号,但我会把它当作一个错字,因为没有它,系数加起来不会等于 1,如果它们没有意义不)。案例有:
    • 90%(在这 20% 中)页面仍然被映射,但是地址从缓存中掉了出来,所以我们必须从页面映射中读取额外的内存。所以 90% 次访问 TLB 寄存器加上访问页表加上访问页本身:0.9(TLB + MEM + MEM). 提到了一级分页,所以这里只是额外的 1 次内存访问,但实际的实现通常有两级分页,因此会有 2 次额外的内存访问。
    • 需要从磁盘加载页面的 10%(在这 20% 中;表达式暗示了这一点,但问题并不清楚,而是建议总体而言是 10%)。这使得对 TLB 寄存器的(失败)访问和对页表的(失败)访问是加载页面所需的 10% 倍。要加载它,它必须为它腾出空间,所以它必须放下另一个页面。这分为两个选项:
      • 50% 被丢弃的页面是干净的,所以系统只需要读取新的内容:0.5(Disk).
      • 50% 要丢弃的页面是脏的,因此系统需要将其写入磁盘(MEM+Disk)并读取新内容(Disk),给出0.5(2Disk + MEM)

我认为最后两个(交换)情况应该包括一些额外的内存访问,因为需要两次访问来标记前一页不可用和页表中的新页可用。

这也是非常不现实的,因为在实际系统中,当页面中需要一个阅读空间时,系统总是选择一个干净的页面来替换。为了确保它有干净的页面,有一个后台进程会检查脏页并将它们写出。它需要一些计算资源,因此它实际上应该计入内存访问,但要少得多,因为页面错误不需要等待写入完成。

表述实际上是错误的。它应该是

T = 0.8(TLB + MEM) + 0.2 ( (0.9(TLB + MEM + MEM)) + 0.1(TLB + MEM + 0.5(磁盘) + 0.5(2Disk + MEM) )

如果页面错误占 TLB 未命中的 10% 或

T = 0.8(TLB + MEM)+ 0.1(TLB + MEM + MEM)+ 0.1(TLB + MEM + 0.5(磁盘)+ 0.5(2磁盘+ MEM))

如果页面错误占所有访问的 10%。您对此并不明确,但如果公式不包含 0.2*0.9,我会假设后者,这表明前者。

于 2013-01-07T09:35:34.530 回答
0

阅读我正在考虑基于例如两级寻呼系统的更现实场景的问题。

在这种情况下,据我所知,可能存在页表 (PT) 本身不驻留在内存中的情况(PT 本身可能已从 RAM 分页到交换区域(例如 Linux)或页面文件(例如 Windows ))。

关于页面目录(分页层次结构的第一级),我认为它必须始终驻留在 RAM 中(否则,在上下文切换时,x86 CR3 寄存器内容将完全无用......)

因此,它存在一定百分比的事件,我们必须至少包括:

  • 读取和引入内存(从交换区域或页面文件)PT 本身所需的磁盘访问时间
  • 现在在内存中访问 PT 所需的 MEM 时间

是否有意义 ?

于 2016-12-08T09:35:35.070 回答