【正确答案】
A、B、D
【答案解析】 对于选项A,在32位机器上,32位意味着4GB的寻址空间(备注:计算机的地址总线是32位,可以支持的内存地址代码是2^32=4*2^10*2^10*2^10B=4GB),Linux操作系统把它分为两部分:最高的1GB(虚拟地址从0xC0000000到0xffffffff)用作内核本身,称为“系统空间”,而较低的3GB字节(从0x00000000到0xbffffff)用作各进程的“用户空间”。这样,理论上每个进程可以使用的用户空间都是3GB。当然,实际的空间大小受物理存储器大小的限制。虽然各个进程拥有其自己的3GB用户空间,系统空间却由所有的进程共享。从具体进程的角度看,每个进程都拥有4GB的虚拟空间,较低的3GB为自己的用户空间,最高的1GB为所有进程以及内核共享的系统空间。因此,选项A正确。
对于选项B,进程A和B都有自己的虚拟地址,程序在运行的一个特定的时候并不会把所有需要的数据都加载到内存中,当前不使用的数据会被置换到硬盘上,只有在使用的时候才会被置换到内存中。因此,两个进程所占的物理存储之和完全有可能大于2GB。例如当进程A和B同时运行的时候,都只有部分数据被加载到内存中,假设在某一时刻A和B进程占用内存之和为2GB,如果此时A所需的数据不在内存中,此时系统采用特定的算法把进程A与B当前可能不使用的数据置换到硬盘上。因此,选项B正确。
对于选项C,malloc申请的只是虚拟的内存空间,实际对应的数据有可能已经被加载到内存中,也有可能被置换到硬盘上了。因此,选项C错误。
对于选项D,Linux操作系统采用页作为内存管理的基本单位,其采用的标准的页面大小为4KB。为什么是4KB呢?因为4KB是大多数磁盘块大小的倍数,传输效率高,管理方便,无须考虑PAE(物理地址扩展)。因此,选项D正确。
所以,本题的答案为ABD。