计算机原理
文章平均质量分 80
BOY
这个作者很懒,什么都没留下…
展开
-
ELF文件格式
原创 2013-03-06 20:26:04 · 604 阅读 · 0 评论 -
为什么要指令重排序和屏障的作用
内存屏障是一个很神奇的东西,之前翻译了linux内核文档memory-barriers.txt,对内存屏障有了一定有理解。现在用自己的方式来整理一下。在我看来,内存屏障主要解决了两个问题:单处理器下的乱序问题和多处理器下的内存同步问题。为什么会乱序现在的CPU一般采用流水线来执行指令。一个指令的执行被分成:取指、译码、访存、执行、写回、等若干个阶段。然后,多条指令可以同时存在于流水转载 2013-03-02 17:49:17 · 4438 阅读 · 2 评论 -
编译链接原理
gcc -E 进行预处理(cl -E 是vs下编译器的预处理)gcc -S main.c -o main.s 编译(翻译成汇编)as hello.s -o main.o 汇编(翻译成2进制) 下面进行链接gcc -c main.c -o main.o 也是对程序只进行编译,并不链接gcc main.c -o main 对程序进行编译并链接 1、符号:原创 2013-04-02 13:59:18 · 1112 阅读 · 0 评论 -
lock
lock是一个指令前缀,Intel的手册上对其的解释是:Causes the processor's LOCK# signal to be asserted during execution of the accompanying instruction (turns the instruction into an atomic instruction). In a multiproces转载 2013-04-04 17:02:33 · 683 阅读 · 0 评论 -
Linux内核中的内存屏障
前言之前读了关于顺序一致性和缓存一致性讨论的文章,感觉豁然开朗。对linux内核中出现的种种同步和屏障,想做一点总结。缓存一致性之前一直认为linux中很多东西是用来保证缓存一致性的,其实不是。缓存一致性绝大部分是靠硬件机制实现的,只有在带lock前缀的指令执行时才与cache有一点关系。(这话说得绝对,但我目前看来就是这样)我们更多的时候是为了保证顺序一致性。转载 2013-04-14 15:53:56 · 627 阅读 · 0 评论