操作系统的内存对齐机制学习笔记
http://blog.csdn.net/lgouc/article/details/8235471
http://blog.sina.com.cn/s/blog_67c294ca01012qbu.html
数据对齐并不是操作系统的内存结构的一部分,而是C P U结构的一部分
是这么理解吗?cpu要读取内存中的数据,以多少为单位进行读取呢?以4个字节,还是8个字节。还是16个字节为单位来读取内存数据?
目前主要以2个字节为单位吗?是的。2个字节作为对齐单位。
以多少个字节为单位来读取内存的数据,这是cpu的知识。与cpu有关系。
数据项只能存储在地址是数据项大小的整数倍的内存位置上。如int类型占用4个字节,地址只能在0,4,8等位置上。
也就是说,这个数据的首个地址必须是它的倍数。
比如一个数据大小是6个字节。现在要存入内存中去,首个内存地址的位置必须是6的倍数,即6*n才行:6,12,18........这样就可以。
这是结论,有这个限制要求。原因是什么,减少cpu读取内存的次数。不进行内存对齐的话,读取次数将会增加。
内存对齐的本质:减少cpu读取内存的次数。一次性尽可能多读取数据进来。是这样的吗?
处理器的内存存取边界是什么意思?
http://www.cnblogs.com/xkfz007/archive/2012/10/08/2715163.html 这篇文章讲述了cpu与内存之间的关系
内存对齐是操作系统为了快速访问内存而采取的一种策略,简单来说,就是为了放置变量的二次访问。操作系统在访问内存 时,每次读取一定的长度(这个长度就是操作系统的默认对齐系数,或者是默认对齐系数的整数倍)。如果没有内存对齐时,为了读取一个变量是,会产生总线的二 次访问。
几个基础知识:内存的每个地址能够存储多少数据。1个字节。
cpu的执行指令速度
大部分简单指令的执行只需要一个时钟周期,也就是1/3纳秒。光在这个时间点也只能走10厘米。
由于主存中使用电容来存储信息,为了防止因自然 放电而导致的信息丢失,就需要周期性的刷新它所存储的内容,这也带来额外的等待时间。