linux 内核:匠心独运之无锁环形队列kfifo
1. 前言 金庸老爷子在《神雕侠侣》中说独孤求败的玄铁重剑时,说道“重剑无锋,大巧不工”。他说的是如果个人修养达到一定的阶段,“花石草木皆可为剑”,而不需要更多技巧。在linux内核中从来不缺少简洁、优美、高效的实现代码,缺少的是发现这些美...
1. 前言 金庸老爷子在《神雕侠侣》中说独孤求败的玄铁重剑时,说道“重剑无锋,大巧不工”。他说的是如果个人修养达到一定的阶段,“花石草木皆可为剑”,而不需要更多技巧。在linux内核中从来不缺少简洁、优美、高效的实现代码,缺少的是发现这些美...
epoll是linux下多路复用io接口select/poll的增强版本,它能显著减少程序在大量并发连接中只有少量活跃的情况下的系统cpu利用率,因为它不会复用文件描述符集合来传递结果而迫使开发者每次等待事件之前都必须重新准备要被侦听的文件...
signal机制在linux中是一个非常常用的进程间通信机制,很多人在使用的时候不会考虑该机制是具体如何实现的。signal机制可以被理解成进程的软中断,因此,在实时性方面还是相对比较高的。linux中signal机制的模型可以...
linux中的strip命令简介 一、下面是man strip获得到的信息,简单的说就是给文件脱掉外衣,具体就是从特定文件中剥掉一些符号信息和调试信息,使文件变小。 name strip...
简介 64位系统运行的可执行文件的符号表地址和实际运行时地址差异甚大。 譬如使用nm查看函数的地址为0x69207,但是运行时打印函数的地址为0x7fa3333f8207。 那么我们通过backtrace,手动打印,gdb,pstack获取...
一、导读 backtrace中,一般都只有一些地址。但是利用addr2line这个工具,就可以找到对应的代码行。前提条件是可执行程序或者动态链接库编译的时候带-g选项。 具体来说,分两种情况: 如果关注的一行backtrace位于一个可执行...
1 objdump反汇编示例 源文件main.c: /* main.c */ #include
当程序突然暴毙崩溃之后我们首先要查明白三件事: 程序什么时候死的; 程序死在哪里(哪个函数,哪行代码); 怎么死的。 为了查明白这三件事情最常用的方法是: 取出内核在程序临终前生成的core文件,core文件就是程序将死之时留下的遗言; 通...
一、maps文件 maps文件可以查看某个进程的代码段、栈区、堆区、动态库、内核区对应的虚拟地址。 7f9c24b000-7f9c25f000 r-xp 00000000 00:02 3295 /lib64/libgcc_s.so.1 7f...
简介 google protocol buffer( 简称 protobuf) 是 google 公司内部的混合语言数据标准,目前已经正在使用的有超过 48,162 种报文格式定义和超过 12,183 个 .proto 文件。他们用于 rp...