我正在参加OS课程,其中讲师提到了32 v/s 64位架构.
我对架构类的这种差异的理解是,32位v/s 64位表示CPU字大小,寄存器大小以及ALU可以执行计算的大小.
讲师说:"今天使用了64位架构,因此进程的虚拟地址空间大小为64位."
我想问32位v/s 64位是否也表明进程的虚拟地址空间大小是32位v/s 64位?如果没有,虚拟地址空间大小是否依赖于体系结构类型(32位/ 64位).
否.即使您具有64位体系结构,虚拟地址空间也需要小于总虚拟可寻址空间,以便为操作系统提供操作空间.
每个进程分配多少空间取决于操作系统.64位体系结构表明,与32位体系结构相比,操作系统将为进程使用更大的默认进程空间.它取决于操作系统分配了多少默认进程空间.在Windows 64位中,进程的默认虚拟地址空间为8 TB(在64位字节可寻址系统上总共有2 ^ 24个可寻址的太字节),在32位中,它只有2 GB(4 GB可寻址)总).剩余的剩余内存是为32位系统中的操作系统保留的(不确定为什么在64位系统中进程的上限相当低).
在32位体系结构上,这些默认值可以在Windows上(在Linux上通过其他方法,我确定)更改为2 GB - 3 GB之间的任何值,但最后的GB必须始终保留给操作系统.
这并不意味着该过程必须在64位架构中为64位.64位操作系统可以通过兼容模式在64位体系结构上运行32位进程.正如John Saunders所指出的,有一些64位架构可以使用32位处理器来运行32位进程,而无需兼容模式; 一个例子是英特尔的Itanium处理器.
32位体系结构允许通过使用物理地址扩展(PAE)来扩展进程的内存空间,以使用完整的4 GB内存,尽管Windows PAE允许64 - 128 GB的物理内存,具体取决于处理器.
这意味着单个 32位进程可以使用PAE"看到"高达4 GB的主内存,但不会超过这个.据我所知,在可预见的未来,任何进程都不会使用接近2 ^ 64字节的任何进程,因此PAE不用于64位系统.
超出您问题范围的所有内容:
存在虚拟地址空间,因此操作系统可以为每个进程分配比实际可用空间更多的进程空间.它还可以保护进程空间并通过虚拟机监视器(VMM)实现虚拟化.使用VMM保护进程空间允许虚拟化指令集体系结构.这使得人们可以在Windows上的VM上运行Linux(请注意,处理器硬件和操作系统都必须支持虚拟化才能实现这一点).
与32位相比,64位架构优势的最常见/简单示例是一个系统,其中RAM /主存储器超过4 GB.一个32位的系统只能使用最多4 GB与PAE物理/主存储器/ RAM,但在64位系统可以很容易地允许进程来解决方式相比,更多的存储器,而无需任何PAE.请记住,2 ^ 32位= 4*1024*1024*1024 = 4 GB.32位地址空间中的每个位表示字节可寻址系统中的1 个字节.