C++数组的连续性
- 虚拟上连续,物理上大概率连续,除非不在同一个物理页上,并且物理页不连续时
- 数组在物理地址空间是否连续,对于用户空间的程序是不需要关心的。另外,对于一个抽象层次很高的编程语言,数组是不是一定要保证虚拟地址空间连续,感觉也是可以研究的。例如,java的数组就不连续?
- 所以array到底是在虚拟还是物理地址上连续,还是要看你访问的是虚拟还是物理内存。如果array跨page boundary,是有可能在物理内存上不连续。不过对于用户态程序来说这个区别几乎不可见,唯一可能的区别在于可能会产生的TLB miss造成的几十个cycle损失。
ALL IN ALL
jyyyx:总而言之,由于数组可能不止占一个page,因此当数组是多page时,由于相邻page对应的物理块不一定相邻,因此此时很有可能物理块是不连续的,也就是物理空间上不连续