摘要: #include <stdio.h>#include <string.h>#include <linux/if_tun.h>#include <sys/types.h>#include <net/if.h>#include <sys/stat.h>#include <fcntl.h>#include 阅读全文
posted @ 2016-05-12 16:35 CalvinWang 阅读(1741) 评论(0) 推荐(0) 编辑
摘要: 看这两段代码,哪个会core呢? #include <stdio.h> int main(){ int stack_of[100000000]; int* a; a = stack_of; a[99999999] = 0xff; return(0); } #include <stdio.h> int 阅读全文
posted @ 2016-05-09 16:31 CalvinWang 阅读(283) 评论(0) 推荐(0) 编辑
摘要: http://www.cnblogs.com/ggjucheng/archive/2011/12/14/2288004.html#_Toc311658065 贴个链接而已 阅读全文
posted @ 2016-05-06 17:31 CalvinWang 阅读(102) 评论(0) 推荐(0) 编辑
摘要: Linux的应用程序在core dump之后,内核会把该应该程序当前的内存信息dump出来,解开core文件以后可以看到函数的调用栈。那么如果没有core dump,可以看到函数的调用栈吗?当然可以了,Linux提供了相关了系统调用backtrace和backtrace_symbols。注意这两个系 阅读全文
posted @ 2016-05-06 15:16 CalvinWang 阅读(591) 评论(0) 推荐(0) 编辑
摘要: 1)fork函数总是“调用一次,返回两次”,在父进程中调用一次,在父进程和子进程中各返回一次。fork在子进程中的返回值是0,而在父进程中的返回值则是子进程的id。2)子进程在创建的时候会复制父进程的当前状态(PCB信息相同,用户态代码和数据也相同)。3)程序运行的结果基本上是父子进程交替打印,但这 阅读全文
posted @ 2016-05-04 09:50 CalvinWang 阅读(683) 评论(0) 推荐(0) 编辑
摘要: Linux divides its physical RAM (random access memory) into chucks of memory called pages. Swapping is the process whereby a page of memory is copied t 阅读全文
posted @ 2016-05-03 09:53 CalvinWang 阅读(1132) 评论(0) 推荐(0) 编辑
摘要: 简单的说就是编译器不同。GNU C提供的功能更多,加入了很多奇奇怪怪的宏(特殊属性声明)来优化编译出来的机器指令。如果你看到类似___XXX()____这样的东东,多半就是GNU C里面定义的。Linux内核的编译用的是GNU C。用GNU C的扩展特性,程序的可移植性会变差。最后一点:GNU C就 阅读全文
posted @ 2016-04-15 15:25 CalvinWang 阅读(308) 评论(0) 推荐(0) 编辑
摘要: 读芯片的寄存器定义文档的时候,每个寄存器都定义了各自的地址。这个地址看起来和内存的地址是一样一样的。那中间有什么关联呢?其实没啥大的关联,只不过寄存器的地址和内存的地址都是在CPU的寻址空间中。简单的说寄存器的地址指向的就是寄存器,跟其他什么什么的没有关系。访问寄存器的方式和访问内存的方式一样一样的 阅读全文
posted @ 2016-04-11 15:56 CalvinWang 阅读(2271) 评论(0) 推荐(0) 编辑
摘要: 还记得上一篇在介绍gcc的参数的时候有个超级难搞的-O参数吧。这个参数是设置编译优化的级别的。编译优化的一个假设是我们写的程序会贪婪无度的使用机器的资源,因此编译器会优化汇编代码,提升执行效率。但是带来的代价是可能会出现难以发现的逻辑错误。CPU是从寄存器中取出变量的值,寄存器中的值是从内存中读取出 阅读全文
posted @ 2016-04-11 15:09 CalvinWang 阅读(176) 评论(0) 推荐(0) 编辑
摘要: gcc就是用来编译源文件的命令咯,CPU又看不懂源文件。作为这么重要的命令,gcc的参数可以不少的,应该说是巨多。当然了,也可以直接 gcc hello.c hoho。 常用的选项 -c:生成.o文件,就是不连接 (compile) -S:输出汇编语言文件 -E:只做预处理,送往标准输出 (expr 阅读全文
posted @ 2016-04-07 16:02 CalvinWang 阅读(736) 评论(0) 推荐(0) 编辑