windows - 什么是工作集?

标签 windows memory process operating-system

在阅读 Windows Research Kernel 的内存管理代码时,我对工作集的概念感到困惑。

最佳答案

“工作集”是“当前算法正在使用的内存部分”的简写,由 CPU 恰好访问的内存部分决定。这对你来说是完全自动的。如果您正在处理一个数组并将结果存储在一个表中,那么数组和表就是您的工作集。

讨论这是因为 CPU 会自动将访问的内存存储在靠近处理器的缓存中。工作集是描述您要存储的内存的好方法。如果它足够小,它可以全部放入缓存中,并且您的算法将运行得非常快。在操作系统级别,每次访问新页面(通常大小为 4k)时,内核都必须告诉 CPU 在哪里找到应用程序正在使用的物理内存(解析虚拟地址),因此您也希望尽可能避免这种命中尽可能。

What Every Programmer Should Know About Memory - PDF有关算法性能与工作集大小的关系图(大约第 23 页)以及许多其他有趣的信息。

基本上 - 编写代码以访问尽可能少的内存(即类很小,而不是太多),并尝试确保紧密循环在该内存的非常小的子集上运行。

关于windows - 什么是工作集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/896226/

相关文章:

windows - 文件的获取日期

windows - 使用procrun启动服务 "Network Service"

c++ - MFC CFileDialog 在用户上次运行时选择的位置打开

php - 大型数组的 PHP QuickHash 经验

c - 平行管道没有在 C 中关闭?

java - 应用程序为 "Force Closed"时是否有任何关闭 Hook ?

windows - 如何在批处理脚本中以整数格式输出文件大小

c++ - 当函数返回时,函数中分配的内存是否被释放?

python - 大型数据框列乘法

python - 如何使用 Python 在 Linux 中获取总运行进程数和线程数?