发布网友 发布时间:2022-03-24 03:14
共3个回答
懂视网 时间:2022-03-24 07:36
计算机处理信息的方式是二进制,微机内存按字节编址。按字编址存储空间的最小编址单位是字,总的存储器容量是一定的,按字编址和按字节编址所需要的编码数量是不同的。
内存储器其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。只要计算机在运行中,CPU就会把需要运算的数据调到内存中进行运算,当运算完成后CPU再将结果传送出来,内存的运行也决定了计算机的稳定运行。
热心网友 时间:2022-03-24 04:44
按照字节编址,每个内存单元的地址,不称为物理地址而是线性地址,线性地址通过CPU内存管理单元(MMU)来进行转换
32位cpu地址线拥有32根,寻址能力达到4GB,而P4处理器的地址线则拥有35根,可以寻址更大的空间。但是实际内存达不到CPU的寻址空间大小,此时CPU的MMU就需要对线性地址进行向物理地址的转化,此时线性地址就和物理地址不一样了。
决定一个内存单元的物理地址时需要根据当前的内存管理方式进行计算,首先根据虚拟地址计算得到线性地址,然后根据分页机制是否打开,如果没有使用分页机制,线性地址就是物理地址,如果打开分页机制则根据页目录和页表项来计算得物理地址。
按照x86 32位处理器,虚拟地址就是程序中所使用的逻辑地址,虚拟地址计算如下:
首先通过查段选择子寄存器(16位模式下成为段基址寄存器,比如读取数据用DS寄存器)中选择子的第2位,0则从全局描述符表(GDT,Global Descriptor Table)1则从局部描述符表(LDT Local Descriptor Table)。全局描述符从GDTR寄存器找到描述符表的物理基地址(后称简称为GDTBA,GDT Base Address),然后GDTBA + DS & 0xFFF8得到的地址就是该选择子指向的描述符,然后根据描述符中记录的段基址 + 偏移(可以是指令中的地址码,也可是si,di中的数值)就得到了线性地址(Linear Address),而局部则有些不同,因为LDTR中放的不是局部描述符表的物理基地址,而是在全局描述符表的一个描述符选择子。首先会计算LDT的物理基地址,方法同上,然后再计算描述符地址,最后计算成Linear Address.如果没打开分页,这个就可以是物理地址了。如果打开分页机制,还要做Linear Address 到物理地址的转化(Physical Address)。
线性地址是32位,高十位是页目录项索引,中间十位是页表项索引,最后12位是页内偏移,当然这是在选用4KB小页的情况,大页是4MB,则后22位都是页内偏移。页目录物理基地址存放在CR3中,共有1024项,因此用线性地址高10位作索引,找到相应的页目录项。在小页模式中,该项保存的是页表的高20位地址,因为页表只有4KB,所以低12位不需要。通过线性地址中间十位作页表项索引和页表基址进行计算得到页表项,该项中保存的物理页面的基址,基址加上线性地址低12位页内偏移,就得到了物理地址。在大页模式中,就省去了查页表这一步骤。
热心网友 时间:2022-03-24 06:02
就是每个字节分配一个地址,对于32位系统,最大寻址空间为2^32个字节,也就最大内存为4g。现在的位系统的寻址空间就大多了.