楼主,很简单的说,楼主没有明白一个问题,就是 内存(RAM)=内存条(物理内存)+bios内存+缓存+显存+...,,x86的电脑(也就是32位),他的寻址空间是2的32次方,也就是4G,每一个内存都有一个地址,这是一定的。任务管理器里显示的是物理内存,就是内存条。。。
但是,一个电脑中的RAM的地址是有优先级的,,也就是说,bios的内存,cpu的缓存,各个硬件的内存,显卡的显存,都是RAM,但是他们的优先级比物理内存(也就是内存条)高,在编码的时候,占据前端的位置,也就是内存的编码在最后,前面的几百兆,不是物理内存。。
意思就是说,如果在x86电脑上装上4G内存条,,那么,依照优先级关系,有可能你只能使用3.2G的内存条空间,因为前面的几百兆空间是给了各个硬件(包括显存),但是 如果你是3G的内存条,那就不用担心浪费了,,因为电脑本身寻址能里是4G,前面几百兆给了硬件,但3G的内存还是能完全访问。。楼主,明白了吗?
虚拟内存实际上是硬盘,硬盘的寻址可以达到64TB。
内存寻址范围取决于CPU的寻址地址线根数,32位CPU一般是32根线,因此4G。
即使虚拟内存可以寻址64TB,CPU也不能直接和硬盘联系,也需要装载到内存中CPU才能用。而装载不可能超过内存的容量。
多任务的系统中,每个进程都有自己的‘4G内存空间’,实际上通常每个进程只能访问不超过4G的内存。
此外还可以通过一些技术手段来实现,比如给内存(包括虚拟内存)分页分段等。
细腻内存是在硬盘的文件,这个就是32为系统能安装硬盘的极限了
每个进程的地址空间是64TB,因为用段选择器来选择描述符的时候用了前14位,而描述符是32位的,所以总共是46位,因此程序的编程空间,即虚拟内存空间是2的46次方,也就是64TB。由于段选择器的前14位中有一位是用来区分查找全局描述符表还是局部描述符表,所以,进程的虚拟地址空间被分成32TB系统地址空间(所有进程共享)和32TB私有地址空间。
32位机的虚拟内存到底是多大?4GB还是64TB啊???