我目前正在研究Silberschatz,P Galvin,G Gagne的操作系统。
我正在研究内存管理策略,并在本节中介绍过渡后备缓冲区(TLB)。
某些TLB在每个TLB条目中存储地址空间标识符(ASID)。 ASID唯一地标识每个进程,并用于为该进程提供地址空间保护。当TLB尝试解析虚拟页号时,它确保当前正在运行的进程的ASID与与虚拟页关联的ASID相匹配。如果ASID不匹配,则尝试将被视为TLB未命中。
上面是教科书中引述ASID的引文。
我有点困惑,因为TLB未命中意味着逻辑地址在TLB中无法匹配,因此必须使用Page表进行检查以进入物理内存。
也就是说,ASID是TLB中每个条目的额外位,用于检查正在访问该条目的进程是否属于该进程。
我想知道的是,当使用ASID拒绝该进程时,它是否应该陷阱而不是TLB丢失? TLB未命中会将进程转发到页表,该进程的逻辑地址将能够映射到主内存中的特定地址。
请在我理解不正确的地方帮助我。
谢谢!
答案 0 :(得分:0)
让我们说您在系统上运行两个进程。进程A的2d页面映射到第100页框架,而进程B的2d页面映射到第200页框架。
因此,现在MMU需要查找第2页,但不想再次读取页表。它会转到页面框架100还是页面框架200?
至少有两种方法可以解决该问题。一种是在有进程切换时刷新缓存。
另一种方法是为每个进程分配一些唯一的标识符,并将其包括在TLB缓存条目中。
我有点困惑,因为TLB未命中意味着逻辑地址在TLB中无法匹配,因此必须使用Page表进行检查以进入物理内存。
要将逻辑页面#X转换为物理页面框架:
我想知道的是,当使用ASID拒绝该进程时,它是否应该陷阱而不是TLB丢失?
然后,您将在进程第一次访问页面时捕获陷阱,程序将崩溃。