我是一个更新鲜的人,在微软的招聘过程中被问到这个问题。
我在某处读到,分配给进程的最大内存可以是可用的最大物理内存。那么如果RAM是4GB,那就是答案吗?如果是,那怎么样?因为RAM的某些部分总是被操作系统占用,对吧?如果不是,那么你能否告诉我答案以及它真正依赖的因素是什么?
答案 0 :(得分:3)
首先,您的问题的基础与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
有效,而at least it must have this much of memory to execute this process
无法进一步细分为线程或者So.我怀疑很少会遇到原子过程大小超过物理记忆大小的情况......
如果是,那怎么办?因为RAM的某些部分总是被占用 操作系统,对吧?
不,不是我上面已经提到过的!
如果不是,那么你能告诉我答案吗?它是什么因素 真的取决于?
先前未定义进程的内存要求。但是,您可能已经听说过许多程序推荐Virtual memory
。这是流程的最低要求,否则流程甚至无法正常运行!因为它必须有合适的物理内存来处理这些事件!接下来,每当我们谈论{{1}}时,交换一词就会出现!当前未运行的所有进程都被发送到磁盘,并且要执行的进程被发送到物理内存以供执行。因此,通过连续交换请求并执行多个进程!
主存中维护的其他一些连续过程是: -
系统进程或守护程序
缓存内存或缓存维护