【问题标题】:Maximum memory that can be allocated to a process on Windows 8.1Windows 8.1 上可分配给进程的最大内存
【发布时间】:2014-10-10 14:23:19
【问题描述】:
我是新人,在微软招聘过程中被问到这个问题。
我在某处读到分配给进程的最大内存可以是可用的最大物理内存。那么,如果 RAM 是 4GB,这就是答案吗?如果是,那么如何?因为 RAM 的某些部分总是被操作系统占用,对吧?如果不是,那你能告诉我答案吗?它真正取决于哪些因素?
【问题讨论】:
标签:
memory-management
process
operating-system
windows-8.1
【解决方案1】:
首先,您的问题的基础与Virtual Memory 完全相关,Chris O 已经指出!
现在,逐步回答您的问题:-
我在某处读到分配给进程的最大内存可以
是可用的最大物理内存。如果 RAM 是
4GB,这就是答案?
不,您的进程可以使用的最大内存可以是任何取决于分配的虚拟内存或swap size。交换内存通常是物理内存的两倍,根据需要可以或多或少!
此外,PAE(物理地址扩展)允许分配更多内存。 PAE 允许 32 位操作系统使用更多 RAM,即更多物理内存。这与 32 位操作系统的 4GB 虚拟地址空间限制无关。
32 位操作系统使用 32 位虚拟地址。这将其在任何时候都限制为 4GB 的可寻址虚拟内存。如果 32 位操作系统也使用 32 位物理地址,则它也被限制为 4GB 的物理内存。 PAE 允许 32 位操作系统使用 36 位物理地址,这将限制提高到 64GB。
接下来,您提到的点对atomic processes 有效,它不能进一步分解为线程或So。我怀疑很少有人会遇到原子进程的大小超过物理内存的情况......
如果是,那怎么办?因为 RAM 的某些部分总是被
操作系统,对吧?
不。不是我上面已经提到的!
如果不是,那你能告诉我答案吗?它的因素是什么?
真的取决于吗?
进程的内存需求在前面没有定义。但是,您可能听说过很多程序推荐at least it must have this much of memory to execute this process。这是流程的最低要求,没有它,流程甚至无法正常运行!因为它必须有合适的物理内存来处理这些事件!接下来,每当我们谈论Virtual memory 时,术语交换就会出现!将当前未运行的进程全部发送到磁盘,将要执行的进程发送到物理内存中执行。因此,通过不断交换请求并执行多个进程!
在主内存中维护的其他一些连续过程是:-
系统进程或守护进程
缓存内存或缓存维护