多任务和缓存假设我同时运行两个程序,一个播放 MP3 的媒体播放器和一个视频游戏。让我们暂时假设系统的其他内核与其他程序一起被取出,我的问题是关于 CPU 缓存。
每次计算机必须更改上下文以运行不同的程序时,它是否必须刷新 CPU 缓存?
这种情况多久发生一次,是否有人对这类问题有任何好的在线参考资料,我希望了解更多关于操作系统的信息。
每次计算机必须更改上下文以运行不同的程序时,它是否必须刷新 CPU 缓存?
哪个缓存(在哪个 CPU 中)?
某些缓存(例如 80x86 CPU 中的 L2 缓存和 L3 缓存)是物理索引的,并且在上下文更改时不会刷新(因为“上下文”在您查看物理 RAM 和物理地址时没有影响);但是“最近最少使用的驱逐”(及其变体)往往意味着在短时间内驱逐前一个程序的数据,以便在缓存中为当前程序使用的数据腾出空间。
一些缓存(例如 L1 指令缓存、跟踪缓存、“虚拟内存转换缓存”/TLB、...)可能会或可能不会被刷新。有时它们会被标记为某种 ID 而不会被刷新(因此 ID #45 的程序的内容被简单地忽略,但可能由于 ID #67 的程序运行时“最近最少使用”而被驱逐)。有时,出于安全目的(例如,幽灵漏洞缓解),操作系统会显式刷新。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句