据我所知,处理器通过缓存线将数据带入缓存,例如,在我的Atom处理器上,无论读取的实际数据大小如何,一次都会带来大约64个字节.
我的问题是:
想象一下,你需要从内存中读取一个字节,这64个字节将被带入缓存?
我可以看到的两种可能性是,64字节从感兴趣的字节下方最接近的64字节边界开始,或者64字节以某种预定方式在字节周围扩展(例如,一半以下,一半以上,或者上述所有).
这是什么?
我有2个共享头文件的程序.此头文件定义具有少量成员的结构.然后是#define : #define STRUCTURE_SIZE sizeof(OUR_STRUCTURE).
然后,此结构在共享内存STRUCTURE_SIZE中用于size参数shmget().
不幸的是,对于一个程序,STRUCTURE_SIZE最终为20758,而在另一个程序中,它最终为20764.所以当第二个程序试图获取共享内存时,shmget()返回EINVAL.
uname -a:
Linux machine 2.6.30.10-105.2.23.fc11.i686.PAE #1 SMP Thu Feb 11 07:05:37 UTC 2010 i686 i686 i386 GNU/Linux
g++ --version:
g++ (GCC) 4.4.1 20090725 (Red Hat 4.4.1-2)