有几个问题,向大家请教 1 核心编程中说的虚拟地址是指我们调试程序的时候看到的变量的地址吗? 两个程序的变量的地址有可能是一样的,这是虚拟地址吗? 2 另外知道虚拟地址对应的物理地址是不是没有太大的用处,还有给栈预留1M空间,是指真的在物理空间中预留的吗?一直说栈是连续分配的,地址是从高向低增长的,这个地址是指虚拟地址还是物理地址,或者说对应栈的物理空间我觉的可能是不连续的,如果按页去分的话,对吗? 3 另外两个进程A和B如果同时被调入了内存,它们站用的空间是不同的,对不对?而如果假设A被调到外存,那么B可能站用了A原来的内存空间对不对? 4 虚拟内存=内存+外存?这么理解对吗?虚拟地址和虚拟内存之间的对应关系是什么?谢谢.大家可以开导一下我吗,以上是我心中的结,觉的平着看书和自己理解有时候解不开,谢谢.
1:是 是 2:对于程序员来说,确实没有太大用处。除非有别的想法, 1M的虚拟地址空间(地址空间不等于真实的虚拟或者物理空间),不然的话,进程中创建100个线程,岂不是用100M的内存, 虚拟地址,对。虚拟地址空间连续,而物理空间并不一定连续。 3:对,这里的A的内存空间,只能是物理空间 4:不对,核心编程上有解释。虚拟地址和虚拟内存之间的对应关系是什么,如同,虚拟地址空间和物理内存的关系
为什么没人里我呀
ugg 谢谢,我还想问,如果为栈留了1M虚拟空间,提交 提交 地址空间区域中的物理存储器 是什么意思?
看《核心编程》的同时最好看看操作系统原理
内存管理现在通常使用段页式管理方式,而首即0地址通过cr3指定的索引所指定。 所以程序的地址,是cr3指定页面相对地址,所以叫虚拟地址。 虚拟地址都会对相一个物理地址,这个转换过程是CPU直接来完成的。
|