1.计算机位数代表什么?
cpu一次处理数据的量代表操作系统的位数,32位系统,cpu一次只能计算32bit数据,总线一次只能传输32bit数据
当代cpu计算时间在0.2ns左右
2.内存的物理特性
内存最小的存储单位类似与二极管,它能存储一个电状态,高或低,可表示1或0
内存断电之后数据就会消失是因为内存条用的是电容存储的电荷
内存的存取速度在20ns左右,由内存给cpu提供数据,cpu效率可达1%
3.内存叶块和磁盘扇区
原先由磁盘向cpu传输数据,每次只能给cpu传输64bit的数据,如果传输一个大的字符串(10000bit),就需要传输5000次。有了内存之后我们一个扇区(4kb)的数据传输到内存,大大减少磁盘的读取次数,提高效率
内存的基本存储单元也是1字节或2字节(根据内存的不同而不同),但是操作系统为其划分了叶块,一个叶块是4kb,这样cpu发来一个地址信息,磁盘就立即将一整个叶块的数据发送到内存。这样读取大量数据会很快,但读取少量数据会造成浪费
4.操作系统分扇区的目的
更改默认的存储单元之后,存储单元就要用地址进行记录(每4kb记录一个地址),也就意味着,只要用了1kb,剩下的3kb就没办法用了,一个存储单元只能存储一份数据。
我们在定义int类型数据的时候,每个int类型数据都要占据4kb(一个叶块单元)。假如我们有10个int类型的数据,就要占用40kb的。内存的逻辑是多少个数据就占据多少个叶块单元,把这10个数据都封装到一个数组中,就变成了一个数据,大大减少内存消耗,这种逻辑叫buffer
例子:原来10个int类型数据要占据10个叶块
用一个数据去存储,它就会在一个叶块中,由于每个int类型数据都只会占据大小相同的内存空间,计算机就会计算出每个变量的开头地址,根据每个基本数据类型的大小进行计算,取出相应的bit数据。这就是为什么栈和队列全是数组类型的存储
?ps:这里有两个地址概念,一个是操作系统分配的内存地址,还有一个是自带的内存地址,输出的时候输出的操作系统分配到的地址
在内存充足的情况下,链表尽量分配连续的内存空间,而数组和链表不一样,数组是消耗连续的内存空间