地址空间标识符 (ASID) 的用途

Purpose of address-spaced identifiers(ASIDs)

我目前正在学习 A Silberschatz、P Galvin、G Gagne 的操作系统。

我正在研究内存管理策略,在他们介绍转换后备缓冲区 (TLB) 的部分。

Some TLBs store address-space identifiers (ASIDs) in each TLB entry. An ASID uniquely identifies each process and is used to provide address-space protection for that process. When the TLB attempts to resolve virtual page numbers, it ensures that the ASID for the currently running process matches the ASID associated with the virtual page. If the ASIDs do not match, the attempt is treated as a TLB miss.

上面引用了解释 ASID 的教科书。

我有点困惑,因为 TLB 未命中意味着逻辑地址无法在 TLB 中匹配,因此必须使用页面 table 检查以前往物理内存。

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

我想知道的是,当使用ASID拒绝进程时,不应该是trap,而不是TLB miss吗? TLB miss 会将进程转发到页面 table,其中进程的逻辑地址将能够映射到主内存中的某个地址。

哪里理解有误请大家指教

谢谢!

假设您在一个系统上有两个进程 运行。进程 A 的第 2 页映射到第 100 个页框,进程 B 的第 2 页映射到第 200 个页框。

所以现在 MMU 需要找到第 2 页,但不想再次读取第 table 页。它转到页框 100 还是页框 200?

至少有两种方法可以解决这个问题。一种是只要有进程切换就刷新缓存。

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

I am a bit confused as TLB miss means the logical address weren't able to be matched in TLB, so it has to be checked with Page table to head towards the physical memory.

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

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

What I am wondering is, when ASID is used to refuse the process, shouldn't it trap, instead of TLB miss?

然后你会在进程第一次访问页面时遇到陷阱,程序会崩溃。