自定义博客皮肤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)
  • 资源 (14)
  • 收藏
  • 关注

原创 ldd查看依赖关系

<br />通过readelf 或者objdump可以查看某一个可执行文件所依赖的共享库,而且这些共享库都是作为SONAME记录在ELF动态节的NEEDED上。<br />首先,我们看一下名词soname:<br />在linux上共享库都是以文件的形式来存放,而每一个共享库都被赋予了一个特别的名称,linux称之为soname。它包括了共享库的名称和版本号.然而这个soname只是一个软连接,它指向的文件才是真正的库文件。例如/lib/libc.so.6就是一个soname,它指向了 libc-2.10.

2010-09-29 00:50:00 6875 1

原创 用od转储二进制文件

od就是octal dump的意思,缺省情况下用八进制输出二进制文件zecho@zecho-laptop:~$ od /etc/ld.so.cache | head -50000000 062154 071456 026557 027061 027067 000060 001650 0000000000020 000003 000000 055470 000000 055507 000000 000003 0000000000040 055537 000000 055551 000000 000

2010-09-28 00:43:00 1687 1

原创 内核模块

      模块的作用不多说,它消除了宏内核的限制,通过使用模块可以预先编译大量的驱动程序,不会使内核膨胀。同时也可以使试验性的代码打包到模块中。      初始化和清理函数      模块的初始化函数和清理函数,保存在.gnu.linkonce.module段中的module实中。根据.gnu.linkonce.module段,内核来判断二进制文件是否为模块。定义如下:     struct module __this_module     __attribute__((section(".gnu.lin

2010-09-25 00:49:00 788

原创 指针和数组的效率对比

    我们知道指针表达式和下标表达式是等价的,比如:    array[10] = 10;    *(array + 10) = 10;     或者有时候我们这样写:    2[array]    但因为它表示成指针表达式为*(2 + array) ,所以这种古怪的写法和array[2]是相等的。    那么你应该用哪一个呢?     很多人会选择下标表示,我想他们更多是考虑下标的可读性和容易理解,但如果从性能上讲的话,这个选择可能会影响运行时的效率。    我们来做个实验:     1 #incl

2010-08-30 01:16:00 1259

原创 ubuntu--qemu调试linux内核环境搭建

<br />下载qemu源码:http://wiki.qemu.org/Download<br />我下的是qemu-0.12.4.tar.gz<br /> <br /> <br />zecho@zecho-laptop:~$ tar zxvf qemu-0.12.4.tar.gzzecho@zecho-laptop:~$ cd qemu-0.12.4 <br /> <br /> <br />需要在configure之前安装几个组件<br />zecho@zecho-laptop:~$ sudo

2010-06-13 12:37:00 4135

原创 永久地址映射

首先要看几个重要的数据结构和概念:   #ifdef CONFIG_X86_PAE#define   LAST_PKMAP   512#else#define   LAST_PKMAP   1024   #define   LAST_PKMAP_MASK     (LAST_PKMAP - 1)#endif定义了永久地址映射的,页表的数量,从这里我们也可以知道,

2010-05-19 21:49:00 6732

原创 临时地址映射

如有问题,欢迎一起讨论:-) 临时地址映射了建立了compile-time特殊的虚地址,分配的虚地址是从0xfffff000向后使用 和永久地址映射不同,它可以在中断或可延迟的上下文中使用而不会睡眠,在高端内存任一页框都可以通过窗口映射到次内核地址空间 首先看一些重要的数据结构和宏定义#define   __FIXADDR_TOP   0xfffff000 

2010-05-19 21:47:00 787

原创 伙伴系统算法

如有问题,欢迎一起讨论:-) struct free_area{    struct list_head  free_list; /*用于连接某一大小的空闲页框*/    unsigned long    *map;    /*涉及到上面大小的位图,每两个的对象之间共享一位*/};static struct page *__rmqueue(struct zone *

2010-05-18 00:08:00 4394

原创 bootmem

如有问题,欢迎一起讨论:-)  为了对页面管理机制作初步准备,Linux使用了一种叫bootmem分配器的机制,它仅仅用在系统引导时,为整个物理内存建立一个页面位图,位图建立开始于start_pfn,即内核映像终点_end,结束是max_low_pfn,主要用来管理0-896MB的范围。目的:在这个范围有的页面可能保留,有些页面可能是空洞,要搞清楚哪些物理页面是可以动态分配的。  

2010-05-16 18:00:00 1023

原创 内联汇编

      偶尔想看一下memcpy的源码,发现在linux里它是用内联汇编写的,所以就学了下,以前看linux源码时也曾碰到过很多内联汇编,但一直没有总结它的语法和使用,现在分析下,如有什么问题,欢迎留言讨论:-)      它的基本格式是:    asm("assembly code");       1、汇编指令必须在括号的引号里       2、如果有多条汇编指令,则需要用换号

2010-03-27 20:30:00 968

原创 数据类型另思

     C语言中包括了丰富的数据类型,包括了声明中显式定义的类型和用做表达式中间类型的导出类型。例如:     int  *p, x;     *p = x;     从这里我们可以知道x的地址类型(它的左值)是一个指向整数的指针。x值的类型(它的右值)是一个整数。     C语言的类型其实可以用前缀形式表示,什么是前缀形式呢,看下面的例子:     我们用一个表达式: a

2010-03-21 01:12:00 439

原创 Unsigned or Signed

     C语言允许整数直接进行比较,对于有符合数之间进行,则会扩展小一些类型的数;对于整数之间的一个顺序是:long long > long > int > short > char;  同样的,如果是无符号数之间的运算,则会扩展小一些类型的无符号数,这种扩展也被称为0扩展(Zero extend),但如果是有符合数和无符号之间呢,则规则就有些不确定。  unsigned int

2010-03-20 18:55:00 386

原创 Perl引用简单使用

#!/usr/bin/perlmy @all_with_name;sub initialize_provisions_list{    my @skipper = qw(bule_shirt hat jacket preserver sunscreen);    my @skipper_with_name = (The Skipper, /@skipper);   

2010-03-19 23:47:00 657

翻译 CHAPTER 5 References and Scoping

        我们可以像标量那样复制和传递引用。而且在任何时候,Perl都知道引用数据的数量。Perl也可以创建对匿名数据结构的引用(这种数据结构没有显式的名字)而且可以为了满足特定操作而创建引用。        数据的多个引用        在Chapter4已经探究了对数组的引用和把这种引用放到一个新的标量上        my @skipper = qw(blue_shirt 

2010-03-18 23:01:00 554

原创 存储管理

       今天我们看一下lcc的存储管理,在我们写的一些复杂的程序中,都需要用到动态内存的分配,即使用malloc,但我们都知道使用malloc就需要显式的使用free来释放掉。问题是有很多程序员会忘记释放空间,造成内存泄漏。       lcc在管理内存的思想是统一释放,这主要是来自于我们常遇到的窗口,就是在你关闭窗口时,所分配的按钮,滚动条等都释放了。       lcc主要是使用

2010-03-12 00:44:00 542

翻译 CHAPTER 3 Using Modules

     模块是为我们的程序建立好的块.它提供了子程序,变量和面向对象的类的重用。这一节,我们既能显示了如何建立自己的模块,有能看到如何使用别人已经写好的模块.      标准模块发布     Perl已经自带了很多模块.事实上,最近发布的版本中有50+MB都是模块.1996年10月,Perl 5.003_07有98个模块.今天,也就是2006年初,Perl 5.8.8有了359个.这

2010-03-01 22:30:00 740

翻译 CHAPTER2 Intermediate Foundations

     在我们开始享受这本书之前,我想介绍一些中级层次的Perl习惯用语,这些用语也将会贯穿整本书。而且它们是Perl程序员初学和进阶的分水岭。      列表操作符     你可能已经知道Perl中的几个列表操作符,但是你可能还没考虑过它们在列表中所发挥的作用。最常见的列表操作符或许就是print。我们提供给一个或多个参数,它将会把它们结合在一起.     print Two

2010-02-26 21:48:00 751

翻译 Intermediate Perl 翻译

    Intermediate Perl一直都没有看到中文版, 在看完Learning Perl后,想去试着翻译一下Intermediate Perl,当然因为对Perl的理解还没有达到一定程度,也是觉得对其有点儿感兴趣,才决定好好去学学,如果翻译的有什么问题,非常欢迎各位Perl高手们批评指点。     Intermediate Perl 提供了对Perl中级编程的介绍,是由畅销书

2010-02-26 21:33:00 1728

Perl语言入门(第五版).part2

终于找的它的中文版,还是很清晰的哦,这是part2,太大,分了两部分

2010-04-24

Perl语言入门(第五版).part1

终于找到它的中文版,而且还是很清晰的哦,这是part1哦,太大分了两部分

2010-04-24

高级编译器设计与实现

终于找的它的pdf,而且是清晰的哦,这个所谓的鲸书,把整个编译器的后端优化过了一遍...

2010-03-21

深入理解linux虚拟内存管理 英文版pdf

对于理解linux 虚拟内存的是必备的哦,是每个内核开发的案头书啊~~

2010-03-16

Perl最佳实践(中文版)part2

Perl最佳实践(中文版),很好的Perl语言进阶书籍,如果想在Perl上有些发展,是必备的哦

2010-02-25

Perl最佳实践(中文版)part1

Perl最佳实践(中文版),很好的Perl语言进阶书籍,如果想在Perl上有些发展,是必备的哦

2010-02-25

使用gdb进行调试 gdb

自己总结的gdb调试资料,详细的用例和分析...

2010-02-06

空空如也

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

TA关注的人

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