我从 wiki 上读到了一些关于虚拟地址空间 (VAS) 的内容。
一件事我不明白,我不确定我是否理解正确。就这个:
应用程序的 EXE 文件映射到 VAS。进程 VAS 中的地址映射到 exe 文件中的字节。操作系统管理映射:
0 4GB 增值服务 |---vvvvvvv------------------------------------| 映射 |-----| 文件字节 app.exe
我的愚蠢问题是“映射到 VAS”是什么意思?这是否意味着exe文件将被加载到物理内存中?
我从 wiki 上读到了一些关于虚拟地址空间 (VAS) 的内容。
一件事我不明白,我不确定我是否理解正确。就这个:
应用程序的 EXE 文件映射到 VAS。进程 VAS 中的地址映射到 exe 文件中的字节。操作系统管理映射:
0 4GB 增值服务 |---vvvvvvv------------------------------------| 映射 |-----| 文件字节 app.exe
我的愚蠢问题是“映射到 VAS”是什么意思?这是否意味着exe文件将被加载到物理内存中?
顾名思义,VAS 是一个虚拟空间,因此它不需要与物理空间相关联。这取决于内存管理器在哪里加载它(物理内存或虚拟内存或其他)。
每个进程都有自己的地址空间,操作系统管理虚拟地址空间和该内存页的物理地址之间的映射(在某些时间点可能在磁盘上,也可能在 RAM 中)。
当进程请求从其虚拟地址空间进行读取时,操作系统会在那里处理,该页面实际上驻留在磁盘上(这是发生页面错误的时候)。同样,在可用内存很少的计算机上,这就是为什么在操作系统难以在磁盘和物理内存之间交换页面时磁盘会出现抖动的原因。