地址总线有多少位,寻址空间就有多少位。地址总线可以存在多种状态:32根地址总线就有2的32次方个状态。
比如:32位指的是给内存编号只能编到32个二进制位。
0x7fffffffffffffff以下的内存由用户操作,上面的内存地址由操作系统自己调用。
代码段放编译后的程序,数据段放常量、变量,中间的绿色是自由可分配空间。
1
系统内存分配
64 = 48 + 16
用户内存隔离开的好处
32位 4G
用户内存又进行了分隔:栈、自由可分配内存、堆,数据段,代码段,
64位内存分隔为=48+16,用户内存与操作系统内存隔开的好处:
可以通过操作系统把应用程序关闭,避免机器卡住
2^30=1G,2^40=1T,
操作系统会对所有内存进行编号
编号=唯一的内存字节的地址
1字节存放8个二进制位的数据
2^10=1024=1k,1024*1024=1M,1024*1024*1024=1G,
2个2G内存条=一个4G内存条效果
32bit的计算机最多插4G内存条
32位地址总线=32位寻址空间
32位指的就是门牌号最多32位
一个十六进制的数字可以表示4位二进制的数字
CPU用地址总线寻址,32 位操作系统的地址总线是32位,也就是寻址空间是32位
有多少地址总线,就有多少种状态,就能寻找和使用多大的内存
32位 操作系统就有 2^32 个地址总线和状态
32bit CPU: 2^32 bit == 4GB
64bit CPU: 2^64 bit == 4GB*4GB == 4TB*4MB == 16PB*1K == 16EB
在64位操作系统中 前48位是系统分配给用户的,后面是系统自用
64bit 中 16进制位 表示程序可使用的内存< 0x7fffffffffffffff
其它的进制位直接给操作系统> 0x7fffffffffffffff - 0xffffffffffffffff
程序使用的内存分为(低到高)
最低位:代码段---加载代码指令:主函数和子函数
数据段---全局变量 或 常量 const
数据段和代码段一般是操作系统规划好了的
堆
动态可分配内存:越大用户可调用的资源就越大
栈:依次顺序执行函数,从主函数开始向下执行
最高位:操作系统内核
32位bit:内存编号只能编到32个二进制位
操作系统:管理内存,编号,规划。
用户内存隔离开的好处:
操作系统的内存不会被大量占用
避免机器卡住/卡死/死机等状态
可通过操作系统把应用关闭
使得操作系统更安全
自由可分配内存
用户内存隔离开的好处
一个内存的最小存储单位1个字节
32位4G
2的32次方=1K*1K*1K*4
4G个字节
64位
计算机内部
32位:内存编号只能编到32个二进制位
操作系统:管理内存,编号,规划。
用户内存隔离:避免系统内存故障
字节 K M G T P E...
32位操作系统最多可以管理4G内存
内存的空间分配,系统内核,栈,堆,数据,代码