我对虚拟内存有一点怀疑。
通常情况下,操作系统需要提供虚拟内存来使用磁盘空间来扩展看似可用于应用程序的内存量。
操作系统将通过将数据复制到磁盘并在需要时恢复来清除物理内存。
但是,应用程序可以管理自己的“虚拟内存”而不是操作系统,例如将对象写入文件然后销毁它们?
如果是这样,是否允许应用程序管理自己的虚拟内存以获得优势或允许操作系统提供?
答案 0 :(得分:2)
大多数应用程序甚至无法知道它们是使用虚拟内存进行管理的,因为操作系统会根据应用程序的每个内存请求执行地址转换。
这是一个绝对最好留给操作系统的任务,除非你在非常低级别的环境中工作(在这种情况下你可能还在编写自己的操作系统)。
除了需要内核权限才能完成之外,你需要注意不要破坏其他进程的内存。
操作系统是这种逻辑的最佳选择。
答案 1 :(得分:2)
应用程序管理自己的虚拟内存不仅有利,而且标准操作系统(Windows,Unix,Linux,Mac OS)可能 X等。)。
从虚拟地址到物理地址的转换由系统的内存管理单元完成,该内存管理单元通常是固件,不是操作系统软件的严格组成部分。
当地址转换找到对当前未映射的虚拟地址的引用时,操作系统软件完成的过程的唯一部分是处理页面错误(虚拟内存与备份存储交换单元)。物理记忆。
通过将自己的数据写入磁盘而不是分配更大量的虚拟内存,应用程序最小化对虚拟内存的使用可能是有利的。但是,如果应用程序的磁盘i / o比操作系统页面处理程序的磁盘i / o更有效,这只会带来好处 - 这种情况不太可能发生。