Operating system 需要虚拟内存吗?

Operating system 需要虚拟内存吗?,operating-system,paging,virtual-memory,memory-segmentation,Operating System,Paging,Virtual Memory,Memory Segmentation,最近有人问我一个问题,在计算机系统中,如果主存储器(RAM)与辅助存储器(HDD)相当,那么在这样的计算机系统中是否需要实现虚拟存储器? 由于分页和分段需要上下文切换,这纯粹是处理开销,虚拟内存的好处会超过它所需要的处理开销吗? 有人能帮我回答这个问题吗? 谢谢 这可能不是你的全部问题。但在我看来,这似乎是一个答案 这可能不是你的全部问题。但在我看来,ans似乎要放弃我对这件事的理解,完全没有背景证明来支持它。会被否决吗?:) 首先,我假设你说的主内存和次内存是可比的,你的意思是在空间方面。(毕

最近有人问我一个问题,在计算机系统中,如果主存储器(RAM)与辅助存储器(HDD)相当,那么在这样的计算机系统中是否需要实现虚拟存储器? 由于分页和分段需要上下文切换,这纯粹是处理开销,虚拟内存的好处会超过它所需要的处理开销吗? 有人能帮我回答这个问题吗? 谢谢

这可能不是你的全部问题。但在我看来,这似乎是一个答案


这可能不是你的全部问题。但在我看来,ans似乎要放弃我对这件事的理解,完全没有背景证明来支持它。会被否决吗?:)

首先,我假设你说的主内存和次内存是可比的,你的意思是在空间方面。(毕竟,访问RAM要比访问存储器快)

现在,据我所知

随机存取存储器受到地址空间的限制,地址空间是操作系统可以存储内容的地址。32位操作系统限制为大约,而64位操作系统(理论上)限制为,尽管Windows 7将其限制为

当然,还有很多因素,比如

  • 制造RAM的成本。(单个ram上的8gb内存(?)仍在数百个内存中)

  • 主板上的dimm插槽(我见过有4个插槽的主板)

但出于讨论的目的,让我们忽略这些限制,只谈空间


让我们谈谈当今的应用程序是如何处理内存的。应用程序不知道存在多少内存——在大多数情况下,它只是从操作系统中获取内存。操作系统负责管理已分配给每个正在运行的应用程序的地址空间。如果它没有足够的,那么,坏事情就会发生

但是,理论上2X字节的内存肯定不会用完吗

嗯,很久以前有一位名人说过,我们永远不需要超过64kBs的内存

因为现在的大多数应用程序都是贪婪的(它们获取操作系统愿意提供的数据),如果你在一台足够强大的计算机上运行足够多的应用程序,理论上你可能会超过物理内存的存储限制。在这种情况下,需要虚拟内存来补充额外的内存

所以为了回答你的问题:(在我对这个问题的有限知识形成的拙见中,)是的,你仍然需要实现虚拟内存



显然,把这些都拿走,自己做研究。我将把它变成一个社区维基,这样其他人就可以编辑它,或者如果它完全错误的话就删除它:)

我将放弃我对这件事的理解,完全没有背景凭证来支持它。会被否决吗?:)

首先,我假设你说的主内存和次内存是可比的,你的意思是在空间方面。(毕竟,访问RAM要比访问存储器快)

现在,据我所知

随机存取存储器受到地址空间的限制,地址空间是操作系统可以存储内容的地址。32位操作系统限制为大约,而64位操作系统(理论上)限制为,尽管Windows 7将其限制为

当然,还有很多因素,比如

  • 制造RAM的成本。(单个ram上的8gb内存(?)仍在数百个内存中)

  • 主板上的dimm插槽(我见过有4个插槽的主板)

但出于讨论的目的,让我们忽略这些限制,只谈空间


让我们谈谈当今的应用程序是如何处理内存的。应用程序不知道存在多少内存——在大多数情况下,它只是从操作系统中获取内存。操作系统负责管理已分配给每个正在运行的应用程序的地址空间。如果它没有足够的,那么,坏事情就会发生

但是,理论上2X字节的内存肯定不会用完吗

嗯,很久以前有一位名人说过,我们永远不需要超过64kBs的内存

因为现在的大多数应用程序都是贪婪的(它们获取操作系统愿意提供的数据),如果你在一台足够强大的计算机上运行足够多的应用程序,理论上你可能会超过物理内存的存储限制。在这种情况下,需要虚拟内存来补充额外的内存

所以为了回答你的问题:(在我对这个问题的有限知识形成的拙见中,)是的,你仍然需要实现虚拟内存



显然,把这些都拿走,自己做研究。我正在把它变成一个社区wiki,以便其他人可以编辑它,或者在它完全错误的情况下删除它:)

确实,使用虚拟内存,您可以让您的程序提交(即分配)更多的物理可用内存。然而,如果拥有虚拟内存,这只是众多好处中的一个,甚至不是最重要的一个。就我个人而言,当我使用PC时,我会定期检查TaskManager,看看我离使用实际RAM有多近。如果我经常去,我会去买更多的公羊

所有使用虚拟内存的操作系统的关键属性是每个进程都有自己的独立地址空间。这意味着您可以拥有一台内存为1GB的机器,并运行50个进程,但每个进程仍将有4GB的可寻址内存空间(假定为32位操作系统)。为什么它很重要?这并不是说你可以“伪造东西”并使用不存在的RAM。一旦您检查并开始交换,您的虚拟内存管理器将开始混乱,性能将停止。更重要的是,如果每个程序都有自己的地址空间,那就没有办法了