【问题标题】:Application to manage its own Virtual Memory应用程序管理自己的虚拟内存
【发布时间】:2012-02-21 11:29:13
【问题描述】:

我对虚拟内存有点怀疑。

通常,由操作系统提供虚拟内存以使用磁盘空间来扩展似乎可用于应用程序的内存量。

操作系统将通过将数据复制到磁盘并在需要时恢复来清除物理内存。

但是,应用程序可以管理自己的“虚拟内存”而不是操作系统,例如通过将对象写入文件然后销毁它们?

如果是这样,是允许应用程序管理自己的虚拟内存以获得优势还是允许操作系统提供?

【问题讨论】:

  • 不,这绝不是有利的。这就是操作系统的用途。不要打它,你会失去 100% 的时间。

标签: operating-system memory-management virtual-memory


【解决方案1】:

大多数应用程序甚至无法知道它们是使用虚拟内存进行管理的,因为操作系统会对您的应用程序发出的每个内存请求执行地址转换。

这绝对是一项最好留给操作系统的任务,除非您在非常低级的环境中工作(在这种情况下,您可能无论如何都在编写自己的操作系统)。

除了这需要内核权限来完成之外,您还需要注意不要破坏其他进程的内存。

操作系统是这种逻辑的最佳场所。

【讨论】:

  • 但是如果每个应用程序都可以管理自己的虚拟内存,那么操作系统的负载会不会更小?这使应用程序可以灵活地分配自己的虚拟内存。
  • 每个应用程序都有自己的虚拟机,正是因为操作系统管理着真实内存,为每个应用程序提供了自己的私有切片。如果允许应用程序自己管理真实内存,它们将不断覆盖彼此的内存,系统将沦为单任务计算机(非常丑陋)。
【解决方案2】:

应用程序管理自己的虚拟内存不仅优势,而且在标准操作系统(Windows、Unix、Linux、Mac OS)中不可能 X 等)。

从虚拟地址到物理地址的转换是由系统的内存管理单元完成的,它通常是固件,而不是严格意义上的操作系统软件的一部分。

当地址转换发现对当前未映射到的虚拟地址的引用时,操作系统软件完成的唯一部分过程是处理页面错误(交换虚拟内存单元与后备存储)物理内存。

对于应用程序而言,通过将自己的数据写入磁盘而不是分配大量虚拟内存来最大限度地减少虚拟内存的使用可能是有利的。但是,只有当应用程序的磁盘 i/o 比操作系统页面处理程序的磁盘 i/o 更有效时,这才会产生好处——如今这种情况不太可能发生。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 2011-07-24
    • 2021-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多