地址分隔的标识符(ASID)的用途

时间:2018-10-09 05:32:30

标签: memory operating-system tlb

我目前正在研究Silberschatz,P Galvin,G Gagne的操作系统。

我正在研究内存管理策略,并在本节中介绍过渡后备缓冲区(TLB)。

  

某些TLB在每个TLB条目中存储地址空间标识符(ASID)。 ASID唯一地标识每个进程,并用于为该进程提供地址空间保护。当TLB尝试解析虚拟页号时,它确保当前正在运行的进程的ASID与与虚拟页关联的ASID相匹配。如果ASID不匹配,则尝试将被视为TLB未命中。

上面是教科书中引述ASID的引文。

我有点困惑,因为TLB未命中意味着逻辑地址在TLB中无法匹配,因此必须使用Page表进行检查以进入物理内存。

也就是说,ASID是TLB中每个条目的额外位,用于检查正在访问该条目的进程是否属于该进程。

我想知道的是,当使用ASID拒绝该进程时,它是否应该陷阱而不是TLB丢失? TLB未命中会将进程转发到页表,该进程的逻辑地址将能够映射到主内存中的特定地址。

请在我理解不正确的地方帮助我。

谢谢!

1 个答案:

答案 0 :(得分:0)

让我们说您在系统上运行两个进程。进程A的2d页面映射到第100页框架,而进程B的2d页面映射到第200页框架。

因此,现在MMU需要查找第2页,但不想再次读取页表。它会转到页面框架100还是页面框架200?

至少有两种方法可以解决该问题。一种是在有进程切换时刷新缓存。

另一种方法是为每个进程分配一些唯一的标识符,并将其包括在TLB缓存条目中。

  

我有点困惑,因为TLB未命中意味着逻辑地址在TLB中无法匹配,因此必须使用Page表进行检查以进入物理内存。

要将逻辑页面#X转换为物理页面框架:

  1. 在TLB中查找#X。如果不存在,请转到页面表。
  2. [#X存在]是否存在与ASID匹配当前进程的#X条目?如果不存在,请转到页面表。
  3. 在TLB中使用页面映射
  

我想知道的是,当使用ASID拒绝该进程时,它是否应该陷阱而不是TLB丢失?

然后,您将在进程第一次访问页面时捕获陷阱,程序将崩溃。