自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

落尘纷扰的专栏

在现实中守护程序员内心的一方净土

  • 博客(18)
  • 收藏
  • 关注

转载 windows如何知道已经连接上Internet

原文地址:http://blog.superuser.com/2011/05/16/windows-7-network-awareness/

2015-03-30 22:27:37 2218

原创 diff/patch命令以及quilt工具的使用

quilt命令具有生成补丁和应用补丁的功能,但它的优势是还可以作为管理补丁的工具。一个比较大的项目可能由不同开发者共同维护,其中很多修改都以补丁的方式提供,这些补丁可能存在依赖关系。quilt工具在源代码目录中生成一个patches/目录,里面存放所有可用的补丁,记录了所有patches的先后顺序,并提供了一系列操作这些补丁的命令。quilt以栈的形式管理补丁,最先打上的补丁位于栈底,最后打上的补丁位于栈顶(top)。打patch的动作称为push,取消补丁的动作称为pop。

2015-03-09 23:02:55 12441

转载 Kernel编译和链接中的linker script语法详解

先要讲讲这个问题是怎么来的。(咱们在分析一个技术的时候,先要考虑它是想解决什么问题,或者学习新知识的时候,要清楚这个知识的目的是什么)。我在编译内核的时候,发现arch/arm/kernel目录下有一个这样的文件:vmlinux.lds.S。第一眼看上去,想想是不是汇编文件呢?打开一看,好像不是。那它是干嘛的?而且前面已经说过,make V=1的时候,发现这个文件的用处在ld命令中,即ld

2015-03-09 21:25:33 1880

原创 GCC的__attribute__ ((constructor))和__attribute__ ((destructor))

gcc允许为函数设置__attribute__ ((constructor))和__attribute__ ((destructor))两种属性,顾名思义,就是将被修饰的函数作为构造函数或析构函数。程序员可以通过类似下面的方式为函数设置这些属性: void funcBeforeMain() __attribute__ ((constructor)); void funcAfterMain() __attribute__ ((destructor));带有(constructor)属性的函数将在main

2015-03-08 22:21:24 6014

原创 backtrace函数的使用

backtrace()是glibc(>=2.1)提供的函数,用于跟踪函数的调用关系。以下对backtrace()函数的说明以及实例,都来自其man page。函数定义       #include        int backtrace(void **buffer, int size);       char **backtrace_symbols(void

2015-03-07 00:11:09 14050 1

原创 vim学习笔记

之前的一篇文章中提到在“use vim like a pro”中学习vim工具的使用,这里我记录了一些我经常用到的vim命令,做个笔记。####use vim like a pro#####vim shortcut key::q :q! :wq ZZ  #exit current file:qa :qa!  #exit all opened filesvimtutor

2015-03-06 23:09:57 614

转载 use vim like a pro

学习vim使用的一个很好的网址,在google上搜"use vim like a pro"就可以了。但是有的时候进不去,所以在这里备份一下~Use Vim Like A ProWhy Bother? (reasons)There are many other editors, some being quite excellent. There is no

2015-03-06 23:07:21 1696

原创 谈谈NAPI机制

1. 引入问题内核收包主要有两种手段:轮询和中断。通过轮询,内核可以不断持续的检查设备时候有包收上来,例如设置一个定时器,定期检查设备上的某个定时器。这种方法会轻易浪费掉很多系统资源。如果采用中断收包,当设备收到包时,可以产生一个硬件中断通知内核,内核将中断其他活动,然后调用一个中断处理程序以满足设备的需求,内核只是将数据包放到某个队列中并通知内核中的收包模块。这种方式是非常常见的,在低流量负载下...

2015-03-04 22:11:27 4487

原创 内核中dump_stack()的实现,并在用户态模拟dump_stack()

本文介绍linux内核中dump_stack()函数的工作原理,并据此实现了用户态的栈回溯的方法,实现的代码基于mips体系结构。

2015-03-04 21:50:51 6376 1

转载 【转贴】大公司的边角料人才

我曾去过两家软件公司做顾问,一家比较有规模的公司(简称A),另外一家是20人不到的小公司(B公司)。在这期间我见识到了他们对于“人才”使用(或者称利用、发挥、储备、what ever)的一个有趣现象。        A和B其实做的软件业务类型是差不多的,只不过A实力雄厚、人脉广阔、老板高富美白靓。B公司刚起步,老板矮穷土肥圆,业务远不及A公司的规模,不过在团队的努力下公司也处于不断上升期。

2015-03-03 22:58:43 955

原创 使用gcc的-finstrument-functions选项进行函数跟踪

GCC Function instrumentation机制可以用来跟踪函数的调用关系,在gcc中对应的选项为“-finstrument-functions”。可查看gcc的man page来获取更详细信息。编译时如果为gcc加上“-finstrument-functions”选项,那在每个函数的入口和出口处会各增加一个额外的hook函数的调用,增加的这两个函数分别为:void __cyg

2015-03-03 22:34:43 9852 8

原创 strace工具的实现原理

strace是Linux系统下的一个用来跟踪系统调用的工具,它的实现基础是ptrace系统调用。使用strace工具可以跟踪一个程序执行过程中发生的系统调用。

2015-03-03 22:12:30 13958 1

原创 MIPS中的异常处理和系统调用

本文介绍mips体系结构中异常处理机制,并详细分析了系统调用异常的实现。

2015-03-03 21:40:29 9006

原创 内核符号表的生成和查找过程

Linux内核中的函数名、全局变量等,都保存在一个全局的符号表中,本文介绍内核符号表的生成及查找过程。

2015-03-02 22:40:55 8737

原创 Linux内存管理(4) - 不连续页的分配vmalloc

本文目的在于分析Linux内核中的vmalloc函数。内核版本为2.6.31。我们知道物理上连续的映射对内核是最好的,但不是总能成功。在分配一大块内存时,可能无法找到连续的内存块。在用户空间这不是问题,因为普通进程设计为使用处理器的分页机制,当然这会降低速度并占用TLB。在内核中也可以使用同样的技术,典型的例子为vmalloc()。vmalloc是一个接口函数,内核代码用它来分配在虚拟

2015-03-02 21:22:31 3021 2

原创 Linux内存管理(3) - slab分配器和kmalloc

本文目的在于分析Linux内存管理机制的slab分配器。内核版本为2.6.31。1.    SLAB分配器内核需要经常分配内存,我们在内核中最常用的分配内存的方式就是kmalloc了。前面讲过的伙伴系统只支持按页分配内存,但这个单位太大了,有时候我们并不需要这么大的内存,比如我想申请128字节的空间,如果直接使用伙伴系统则需分配4KB的一整页,这显然是浪费。slab分配器将页拆分为更小

2015-03-02 21:04:46 4985

原创 Linux内存管理(2) - buddy系统

本文目的在于分析Linux内存管理机制中的伙伴系统。内核版本为2.6.31。1. 伙伴系统的概念在系统运行过程中,经常需要分配一组连续的页,而频繁的申请和释放内存页会导致内存中散布着许多不连续的页,这样,当某一时刻要申请一块较大的连续内存时,虽然系统内存余量足够,即很多页是空闲的,但找不到一大块连续的内存供使用。Linux内核中使用伙伴系统(buddy system)算法来管理内存页。它把所有的空...

2015-03-02 20:54:17 6084

原创 Linux内存管理(1) - bootmem分配器

内核中分配内存基本都基于伙伴系统,但是在内核启动之初,伙伴系统尚未建立,这时需要一个临时的内存分配器负责提供内核早期的内存需求,例如存放内核的代码段和数据段,以及将内存进行简单的管理供后续伙伴系统使用,这就是bootmem分配器。本文基于Linux 2.6.31的内核源码对bootmem分配器的工作过程进行分析。

2015-03-01 23:20:42 1999

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除