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