多任务和缓存

清线

多任务和缓存假设我同时运行两个程序,一个播放 MP3 的媒体播放器和一个视频游戏。让我们暂时假设系统的其他内核与其他程序一起被取出,我的问题是关于 CPU 缓存。

每次计算机必须更改上下文以运行不同的程序时,它是否必须刷新 CPU 缓存?

这种情况多久发生一次,是否有人对这类问题有任何好的在线参考资料,我希望了解更多关于操作系统的信息。

布伦丹

每次计算机必须更改上下文以运行不同的程序时,它是否必须刷新 CPU 缓存?

哪个缓存(在哪个 CPU 中)?

某些缓存(例如 80x86 CPU 中的 L2 缓存和 L3 缓存)是物理索引的,并且在上下文更改时不会刷新(因为“上下文”在您查看物理 RAM 和物理地址时没有影响);但是“最近最少使用的驱逐”(及其变体)往往意味着在短时间内驱逐前一个程序的数据,以便在缓存中为当前程序使用的数据腾出空间。

一些缓存(例如 L1 指令缓存、跟踪缓存、“虚拟内存转换缓存”/TLB、...)可能会或可能不会被刷新。有时它们会被标记为某种 ID 而不会被刷新(因此 ID #45 的程序的内容被简单地忽略,但可能由于 ID #67 的程序运行时“最近最少使用”而被驱逐)。有时,出于安全目的(例如,幽灵漏洞缓解),操作系统会显式刷新。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章