计算机体系结构之内存讲解
今天把自己搞的还不太明白的几个知识点总结一下,首先是内存!
我们把内存分成众多的存储单元,每个存储单元都有一个地址。计算机通过这个地址取其中的指令或者读写其中的数据。但是需要注意的是每个存储单元只能存放一字节的数据,也就是说多字节数据占据多个存储单元,我们把起始地址当作这个数据的地址。
内存地址是从0开始的整数,具体到多大取决于你的CPU地址空间。举个简单的例子:cpu在内存或硬盘里面寻找一个数据时,先通过地址线找到地址,然后再通过数据线将数据取出来。 如果有32根.就可以访问2的32次方的空间,也就是4GB.
32位系统,可访问内存空间4G,可能你的电脑内存空间不够4G,这4G是虚拟内存,3G归用户态,1G归内核态
用户空间内存分布图:
未初始化或初始化为0的全局变量和静态变量:.bss段;
初始化(初始化不为0)的全局变量和静态变量:可读可写.data数据段;
局部变量,函数的形参:stack栈;
函数,main():.text代码段;
const修饰的变量,常量字符串(内容不可改,所占内存字符串长度加1):只读.data数据段;
动态分配的空间:堆;