程序存储在闪存/磁盘上。对于它的执行,程序被加载到虚拟内存中,并由虚拟管理器映射到RAM。在执行过程中,在RAM中。那么虚拟内存在哪里(它有.text,.data,.stack,.heap)?
答案 0 :(得分:3)
虚拟内存是RAM的视图,也可能是虚拟内存管理器提供的一些交换空间。现代操作系统具有虚拟内存管理器并为进程提供虚拟内存,以便执行程序的行为就像它具有连续的地址空间,其大小不受实际RAM的限制。构成虚拟内存的页面或块可以映射到RAM中的任何位置,因此连续虚拟页面需要存储在连续RAM区域中。或者它们可以换成页面空间或交换空间,在那里等待直到需要,然后它们被操作系统读取并映射到某个RAM页面。
当你说
时在执行过程中,在RAM中。
这不完全正确。如所解释的,可以交换属于该过程的一些或所有存储页面。
关于答案和评论的另一个词,即“虚拟”意味着它不存在。这毫无意义。相反,根据韦伯斯特的说法:
本质或效果......
因此,虚拟内存(因此,它存在!)就像是内存一样。
答案 1 :(得分:0)
虚拟内存就像是一种RAM幻觉。它使用分页来获取可供操作系统中的进程使用的额外RAM。
答案 2 :(得分:0)
虚拟内存意味着您可以使用“普通”momory访问方法访问内存,但不清楚数据实际存储在何处。
可能是
将适当处理对它的访问。
这是一个很好的虚拟化层,因此您作为程序员不必担心实际放置数据的位置。
最初的目的主要是为了能够为进程提供比实际拥有更多的内存,并通过交换空间扩展它,但还有更多:
malloc()
,程序的库可能会要求操作系统提供一部分内存,可以无缝地连接到地址空间。所有这一切都通过页面方式(1页= 4 kiB)为程序分配物理内存,通过程序的地址空间查看,以及需要的数量和频率。