在阅读 Windows Research Kernel 的内存管理代码时,我对工作集的概念感到困惑。
最佳答案
“工作集”是“当前算法正在使用的内存部分”的简写,由 CPU 恰好访问的内存部分决定。这对你来说是完全自动的。如果您正在处理一个数组并将结果存储在一个表中,那么数组和表就是您的工作集。
讨论这是因为 CPU 会自动将访问的内存存储在靠近处理器的缓存中。工作集是描述您要存储的内存的好方法。如果它足够小,它可以全部放入缓存中,并且您的算法将运行得非常快。在操作系统级别,每次访问新页面(通常大小为 4k)时,内核都必须告诉 CPU 在哪里找到应用程序正在使用的物理内存(解析虚拟地址),因此您也希望尽可能避免这种命中尽可能。
见 What Every Programmer Should Know About Memory - PDF有关算法性能与工作集大小的关系图(大约第 23 页)以及许多其他有趣的信息。
基本上 - 编写代码以访问尽可能少的内存(即类很小,而不是太多),并尝试确保紧密循环在该内存的非常小的子集上运行。
关于windows - 什么是工作集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/896226/