大多数关于虚拟内存的文献指出,作为一名应用程序开发人员,了解虚拟内存可以帮助我利用其强大的功能。我在Linux上开发应用程序已经有一段时间了,但我在编写代码时并不关心虚拟内存的复杂性。我是不是遗漏了什么?如果是这样,请说明我如何利用虚拟内存的工作方式。否则,如果我的问题没有意义,请让我知道!
发布于 2009-02-04 08:51:53
实际上,这个概念非常简单。我不会在这里重复,但你应该拿起任何关于操作系统设计的书,它将在那里解释。我推荐来自Silberscahtz和Galvin的"Operating System Concepts“--这是我在大学里不得不用的,它很不错。
我能想到的虚拟内存知识可能会带给你一些东西:
<代码>H111在32位系统上访问>4 4GB的PAE。<代码>H212<代码>F213
尽管如此,所有这些东西只有在非常特定的场景中才有用处。事实上,99%的应用程序不需要关心这一点。
补充道:说,知道所有这些事情绝对是件好事,这样当它们出现时,你就可以识别出它们。当心--有权力就有责任。
发布于 2009-02-04 08:51:58
这是一个有点模糊的问题。
使用虚拟内存的方式,主要是通过使用内存映射文件。有关详细信息,请参阅mmap()手册页。
不过,您可能会隐式地使用它,因为任何动态库都是作为映射文件实现的,而且许多数据库库也使用它们。
使用来自高级语言的映射文件的接口通常非常不方便,这使得它们不太有用。
使用映射文件的主要好处是:
一些缺点是:
发布于 2009-02-04 08:45:03
对于当今的大多数应用程序,程序员可以保持不知道计算机内存的工作方式,而不会造成任何危害。但有时--例如,当您想要改进程序的内存占用时--您最终必须自己操作内存。在这种情况下,了解内存是如何工作的是至关重要的。
换句话说,尽管你确实可以在没有虚拟内存的情况下生存,但学习虚拟内存只会让你成为一名更好的程序员。
我认为Wikipedia article可以是一个很好的开始。
https://stackoverflow.com/questions/510544
复制相似问题