虚拟内存

Pra*_*. S 5 memory virtual memory-management

大多数关于虚拟内存的文献都指出,作为一名应用程序开发人员,了解虚拟内存可以帮助我利用其强大的功能.我曾经参与过在Linux上开发应用程序,但在编写代码时并不关心虚拟内存的复杂性.我错过了什么吗?如果是这样,请详细说明我如何利用虚拟内存的工作原理.如果我对这个问题没有意义,请告诉我!

Vil*_*lx- 4

嗯,这个概念实际上非常简单。我不会在这里重复,但是你应该拿起任何关于操作系统设计的书,那里会有解释。我推荐 Silberscahtz 和 Galvin 的“操作系统概念”——这是我在大学里必须使用的,而且很好。

我认为虚拟内存知识可能会给您带来的一些好处是:

  • 学习在页边界上分配内存以避免浪费(仅适用于虚拟内存,不适用于通常的堆/堆栈内存);
  • 锁定 RAM 中的某些页面,这样它们就不会被交换到 HDD;
  • 监护人页面;
  • 保留一些地址范围并稍后提交实际内存;
  • 也许使用 NX(不可执行)位来提高安全性,但我对此不确定。
  • PAE 用于在 32 位系统上访问 >4GB。

尽管如此,所有这些东西都只在非常特定的情况下才有用。事实上,99% 的应用程序不需要关心这一点。

补充:也就是说,了解所有这些事情绝对是件好事,这样您就可以在出现此类情况时识别它们。请注意——权力伴随着责任。