关于程序在内存中的起始位置的问题,希望高手能够澄清一下概念。
对于一般的程序来说,他被加载到内存的时候,其基址都为0x00400000
那么A.exe在内存中的基址0x00400000和B.exe在内存中的基址0x00400000因该不是指向内存的同一个位置吧。因为那样显然是不合理的。还有0x00400000这个数字是相对于谁来计算的?是相对与操作系统分配给每个程序的内存空间还是相对整个操作系统的内存空间来计算的啊?。但是,内存中通过什么样的机制保证了他们在不同的内存空间?是不是按照下面的方式:
0023e0000:00400000 << A.exe
003400000:00400000 << B.exe
被加载的程序是不是都是运行在Windows的虚拟内存重?还是运行在物理内存和虚拟内存中,当物理内存不够用的时候就是用虚拟内存?着这么大的内存空间,各个程序又是怎样互不干扰的呢?谁能简要地介绍一下Windows是怎样管理内存中的程序的啊?
不好意思,我的分不多了。。。