一个程序在电脑中打开后,系统就会给它分配4G的虚拟内存空间。
虚拟内存的地址又叫逻辑地址。一般都是以0x00401000开始。
(这些是空的,不是实的。物理内存才是真实的。)
.
.
在8086的 实模式下,把某一 段寄存器左移4位,然后与地址ADDR相加后被直接送到内存总线上,这个相加后的地址就是 内存单元的物理地址,
而程序中的这个地址就叫 逻辑地址(或叫虚拟地址)。
在80386的保护模式下,这个逻辑地址不是被直接送到内存总线,而是被送到 内存管理单元(MMU)。MMU由一个或一组芯片组成,其功能是把逻辑地址映射为物理地址,即进行地址转换。
.
.
内存地址是按位来编号的吗?每一个进制位,编一个内存地址。
还是按字节来编号的。每一个字节,编号一个内存地址。
在内存中,晶体管是二进制位中的位。
晶体管通电时,存储的就是1;关电时,存储的是0。
二进制的“0”或“1”就是1位。
8个晶体管就是一个字节。
但有个疑问,
不知道一个内存地址,是一个晶体管的编号,还是一个字节的编号。
.
.
我猜下,在内存条中,
第一个晶体管就是第一位的内存地址。
最后一个晶体管就是最后一位内存地址。
第一位内存地址用0表示, 最后一位用4095999999表示(4GB)
内存地址是16进制的数据(4GB)= F4240000
不知对不对, 如有错请高手指正
在C语言中,用0x开头表示16进制数。
我猜下,4G的内存条,
0x00000000就是第一位地址。
0xF4240000是最后一位的内存地址。
//
位的内存地址,就是变量的内存地址。
从这个内存地址开始计算,8位为1个字节。
字节的大小,就是这个变量占用内存空间的大小。
//
这些都是虚拟的内存地址,从0x00401000开始计算的。
.
.
这个逻辑地址不是被直接送到内存总线,而是被送到 内存管理单元(MMU)。MMU由一个或一组芯片组成,其功能是把逻辑内存地址映射为物理内存地址,即进行地址转换。
虚拟内存的地址又叫逻辑地址。一般都是以0x00401000开始。
(这些是空的,不是实的。物理内存才是真实的。)
.
.
在8086的 实模式下,把某一 段寄存器左移4位,然后与地址ADDR相加后被直接送到内存总线上,这个相加后的地址就是 内存单元的物理地址,
而程序中的这个地址就叫 逻辑地址(或叫虚拟地址)。
在80386的保护模式下,这个逻辑地址不是被直接送到内存总线,而是被送到 内存管理单元(MMU)。MMU由一个或一组芯片组成,其功能是把逻辑地址映射为物理地址,即进行地址转换。
.
.
内存地址是按位来编号的吗?每一个进制位,编一个内存地址。
还是按字节来编号的。每一个字节,编号一个内存地址。
在内存中,晶体管是二进制位中的位。
晶体管通电时,存储的就是1;关电时,存储的是0。
二进制的“0”或“1”就是1位。
8个晶体管就是一个字节。
但有个疑问,
不知道一个内存地址,是一个晶体管的编号,还是一个字节的编号。
.
.
我猜下,在内存条中,
第一个晶体管就是第一位的内存地址。
最后一个晶体管就是最后一位内存地址。
第一位内存地址用0表示, 最后一位用4095999999表示(4GB)
内存地址是16进制的数据(4GB)= F4240000
不知对不对, 如有错请高手指正
在C语言中,用0x开头表示16进制数。
我猜下,4G的内存条,
0x00000000就是第一位地址。
0xF4240000是最后一位的内存地址。
//
位的内存地址,就是变量的内存地址。
从这个内存地址开始计算,8位为1个字节。
字节的大小,就是这个变量占用内存空间的大小。
//
这些都是虚拟的内存地址,从0x00401000开始计算的。
.
.
这个逻辑地址不是被直接送到内存总线,而是被送到 内存管理单元(MMU)。MMU由一个或一组芯片组成,其功能是把逻辑内存地址映射为物理内存地址,即进行地址转换。