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

原创 从罗马帝国精英军团/秦帝国军制谈iOS/Android

<br />下文有时将iPhone/iPad成为iX<br />如今,iPhone/iPad和Android如火如荼,看着这一现象,没什么好让人惊讶的,阿诺德·汤因比曾经说,任何历史都是当代史,既然是个等价代换,那么也可以说,当代史同时在任何时间段都有体现!在谈论移动终端市场的两强相争之前,我想先说说罗马帝国和秦帝国。<br />     实际上,很多好奇的中国人都希望这两个帝国打上一仗,当然是想让秦胜利,然而祖籍非陕西的人就不会觉得自己是被侵略的吗?一般不会的,这是因为秦帝国在各方面统一了标准

2011-05-29 14:31:00 8525 2

原创 linux内核中符号地址的获取

<br />有些内核函数或者内核变量是不导出的,但是确实需要用,那该怎么办?因此寻找内核符号地址就有必要进行一下总结,更有甚,如果想找一条特定的指令,比如movl的指令地址,那更需要投入一些精力!总的来说,我总结了下面五种方式:<br />1.通过procfs中的kallsym文件或者System.map文件直接查找<br />这种方式借助于文件,依赖于文件的存在,不需要什么编程能力,只要会在文件中查找信息即可<br />2.google一下<br />这种方式借助于互联网,依赖你对信息的筛

2011-05-29 13:40:00 4636

原创 杀死linux的僵尸进程

linux并不把进程的树形结构导出给普通用户,然而在内核中,它却使用树形结构来管理进程。linux内核使用“子进程退出,父进程收尸,父进程退出,子进程被过继”这种方式来管理进程的死亡,然而却少了一种,那就是父进程不给子进程收尸的情况,这就是僵尸进程的原因。     既然知道了僵尸进程为何产生,那么想干掉它们就简单了。记住:任何没有人为因素的纯技术问题都是可以解决的!如何操作呢?很简单,就三步:1.将僵尸进程从树形进程组织中摘除;2.将僵尸进程过继给一个特定的进程;3.该特定进程调用wai

2011-05-28 16:24:00 6531 1

原创 多种方法获取sys_call_table(linux系统调用表)的地址

<br />一.方法一:常用方式,也是一google一堆的方式<br />我们首先需要找到call table-with-offset的特征,先看下面的代码<br />syscall_call:<br />        call *sys_call_table(,%eax,4)<br />假设我们没有vmlinux可供gdb反汇编,那也只有采用模拟的方式了,模拟出一个call *sys_call_table(,%eax,4),然后看其机器码,然后在system_call的附近基于这个特征进行寻找

2011-05-28 14:06:00 17283

原创 linux内核hack-运行中动态添加系统调用

LINUX中每次添加一个系统调用都要完成重新编译内核,然后制作initrd等工作,不得不说这是一件繁重的工作,很多人本来已经构思好了自己的一个系统调用,要添加到内核,然后却被这些工作所中断,毫不夸张的说,制作initrd就很麻烦,虽然基于cpio的initrd可以利用几条命令完成,然而只要有一个错误,你就不得不重启系统。     我们都知道,内核模块运行在内核态,可以访问所有的内存空间,那么能不能在系统运行期间,不用重新编译内核,而运用内核模块机制实现添加系统调用呢?答案是肯定的,因为一个基本原理:内核

2011-05-25 23:10:00 7277 1

原创 傅立叶变换的实质-正交之美

引:最近在搞一个音频解码器,将随意录制好的声音按照不同的频率分离出不同的音频流,然后推到不同的音箱中,如果再考虑一下音场的谐性,那就是一个N.1声道的解码系统了。我只是想在女儿(或者儿子)出生之前为她做点事情,以便能最终做出个东西送给她(或者他)。     在实践的过程中,遇到了傅里叶变换,作文以记之。最终我会导出一个很常用的变换-傅里叶变换参考:信号:信号是一个很广义的概念,它可以是一种波,也可以是一个阵列,它还可以是一个函数,它甚至是整个世界,总之只要能运载信息,它就可以被称为信

2011-05-21 22:47:00 15777 6

原创 倚南窗以寄傲-审容膝之易安

...

2011-05-19 21:32:00 6258 2

原创 linux内核模块的强制删除-结束rmmod这类disk sleep进程

一.问题:前些日子在工作中遇到一个文件,当rmmod一个模块的时候,在模块的exit函数中阻塞了,rmmod进程杀也杀不掉,永远呆在那里,发现它已经是D(disk sleep)状态了,真的无能为力了吗?我不相信这个事实,所以今天在稍微闲暇的时候换换脑子,终于有了解决办法。二.分析:解铃还须系铃人,既然是在内核中出了问题,还是需要在内核中寻找办法,解决这类问题的前提是对内核卸载模块的精确理解,流程都理解透了,害怕找不到原因吗?原因都找到了,办法肯定是有的!(这也是我从公司学习到的最重要的东西!),

2011-05-18 22:52:00 14703 2

原创 netlink机制-总结

<br />1.为何我认为netlink要比procfs和sysfs更好?<br />答曰:基于文件系统的方案好处在于文件系统是“设置即所见”,缺点也正在于这种所见即所得的特性,由于文件系统的管理目前是基于用户的,就算为sysfs/procfs设置了了内核访问策略,这种策略也会复杂的让人望而却步!管理员A希望为内核增加1000个配置,她使用了sysfs,管理员B希望在sysfs中查一个信息,他ls了一下,这要比xxx --help好用很多,然而“我的天啊,1000多个个文件,哪个是我想要的啊!?”,

2011-05-18 22:44:00 8893

原创 netlink机制-实现系统调用

<br />上篇文章《linux的配置接口-netlink原理和设计》展示了netlink如何完成kill系统调用,然而这个例子不足以说明netlink的强大,如果我不实现一个netlink式的系统调用,很多人是不会信服的,本文就展示一个netlink实现的read调用。<br />     在展示代码之前,我还是要不厌其烦的说一下netlink的优点,总的来说,netlink有以下三个优点:<br />1.netlink便于提供统一的入口,它的作用类似于socketcall。<br />2.net

2011-05-17 22:02:00 7944

原创 linux的配置接口-netlink原理和设计

<br />站在雨里泪水在眼底....<br />linux内核是可配置的,配置的方式有好多种呢!对于linux平台上上的开发者和管理员来讲,这几种配置方式可困扰了不少人儿。这里的配置不是指运行中的内核动态的配置,而是指当有新的设备或者内核特性添加进内核的时候,用户需要进行的配置。本文主要列举三种配置方式,最终落实于netlink方式的配置。<br />1.传统方式<br />传统方式一般认为是使用ioctl或者系统调用的方式,如果使用ioctl,当我们为设备驱动或者内核本身增加一个新的配置

2011-05-16 23:01:00 11266 2

原创 今天照了大肚照

今天陪老婆去照了大肚照,本来累了一周了好不容易盼到周六想睡个懒觉,结果比平时起床还早!要去照相!然而一想到俺家小小,我就很激动,为了俺家小小,我一定加倍努力,做一个好爸爸。     照相的人比较多,都是婚纱照,心里想着说不定明年他们一对对的就也要来照大肚照了,哈哈!...我们的运气总是这么好,上次照婚纱照时是店里的摄影总监给我们照的,而且那天很凉快,照相的人也不多,今天那个总监出去拍外景了,剩下一个长发男人,眼睛挺小,但是很有艺术感,照的很不错。     最近由于缺乏运行和过度喝啤酒,肚子有点大,我

2011-05-14 22:51:00 4924

原创 码分多址(CDMA)的本质-正交之美

引子:CDMA是个很重要的通信概念,很多的大学教科书上都会提到它,甚至我们今天可能都在使用它。然而提到cdma,很少有资料提到它的思想是多么的有创意,教科书上关于cdma的章节都过于复杂,过于数学化,虽然也有一些简便的描述方式,但是却几乎没有资料揭示cdma是多么的简单,实际上它比其他很多的概念都要更简单。     如果仅仅希望理解诸如cdma的概念而不得不去学习一大堆数学是很悲哀的事情!如果最终你费了九牛二虎之力把数学推理过程搞明白了,你对数学本身的理解将超过你对cdma的理解,本来数学仅仅是

2011-05-14 22:26:00 89777 75

原创 从《黑客和画家》中证实的观点

<br />曾经写过一篇《多级指针和链表》中描述了数组和链表其实是一回事,数组只是链表的一种链表具有一般性,数组仅仅是一种优化。字符串类型其实是字符数组的一种优化。实际上,数组也好,字符串也好,在语言的语义上都不应该存在,链表可以表示他们,数组只是链表的一种特殊情况,所有元素所在内存相邻而已,字符串又是一种数组,因此它也是一种链表。事实上,在编程语言的层次上,语言的语义并不明白内存的布局,因此设计数组这种数据结构本身就是不合理的。<br />     最近在地铁上,看了《黑客和画家》这本书,证实了上面的

2011-05-10 22:08:00 4191 3

原创 LVrrp的设计过程-基于链路的vrrp

<br />引:<br />近期工作上安排我做一个双链路热备系统,沿着这个轨迹,从vrrp开始,我设计了一个LVrrp的协议,它完全适用于非交叉非全互联的多链路热备和负载均衡的情况,所谓的非交叉和非全互联指的是链路两端是固定的,并且任意两条链路之间在两端不存在交叉情况。<br />     事后得知,有时候不是我们不想做某件事,而是因为我们做不好!事后还得知,其实RSVP的设计过程不过如此。还有一个收获,诸如ospf协议并不能解决所有的问题,有的时候,在特定的环境,自己设计一个协议解决问题要比使用标

2011-05-10 21:56:00 4414

原创 动物和计算机-自组织是悬空的钢丝

<br />0.任何时候,零和游戏都是富有刺激性和挑战性的,然而零和游戏是危险的,不仅仅对于失败者,因为失败者会萎缩到无,而此时胜利者也没有存在的意义,因此零和本身并不是稳态!<br />1.任何运行中的可对刺激进行反应的物体都需要两个前提,一个是能量持续供给,另一个是反射机制。这是由物理学定律左右的,任何人都无法更改。 <br />2.动物本身的能量来自食物,然而却是通过心脏这个泵供给到全身各个细胞,其大脑来控制反射。我们看到,心脏在不断的心跳中运输能量,同时,我们可以把心脏的周期跳动也看做反射之一,

2011-05-07 17:54:00 3981 1

原创 凌晨有点想法

<br />1.DMA的性能<br />DMA性能高吗?如果DMA仅仅是使用芯片传输数据,那么它和cpu相比,优势在哪呢?芯片的能力很可能没有cpu强,加上外设芯片还要占据总线等,问题不在这里,问题在于DMA的优势在于外设芯片dma策略的设计,很多dma设计了DMA环形描述符,外设芯片根据环形描述符的引导,使用流水线技术完成数据的传输。<br />     注意,环形描述符是流水线得以实现的本质原因,因为一个环形的描述符(使用环形的原因在于复位简单和索引简单)可以引导多个存储器域的地址区间,因此如果

2011-05-02 00:24:00 3839 2

原创 操作系统内核子系统的协调工作

<br />第一部分、内务子系统<br />操作系统内核的管理功能以及执行最终也要归于cpu的执行流,因此最简单的设计就是将内核的内务也设计成进程,但是对于一些特别的内务这个办法就不适用了,因为这些内务的特殊性恰恰在于它们是依赖cpu的,或者说是和cpu进行接口的。如果我们把计算机视为一台人类发明的智能的机器,那么很自然的,类似上帝造人那样,我们会把计算机设计成人的模样,计算机应该有心跳和反射。<br />     到底什么是内核的内务呢?其实举个例子就明白了。餐厅是顾客吃饭的地方,然而餐厅服务

2011-05-02 00:11:00 4457 1

一个iptables的stateless NAT模块实现

如果你在寻找Linux上配置诸如Cisco设备上的static双向NAT的方法,这个或许就是你想要的; what?你觉得它完不成PAT?是的,它不行。但是想做PAT为何不使用现有的iptables实现呢?它可以自动为你解决元组唯一性问题。不要从概念上分析,事实上,static双向NAT是完全对称的,一对一的 ,也只有在BOX两边的网络在拓扑级别是完全对等的情形下,这种NAT或许才是有用的,Cisco设备经常处在这样的位置,比如一个很大的stub节点的出口位置,比如两个domain的中间位置... 我将名字取为STATIC-2-WAY-NAT,比较长也比较怪,完全不符合UNIX的小写短名传统,我的想法是:这样可以少写很多的帮助信息,因为名字就是自解释的。

2014-12-27

模块化的nf-HiPAC

原版的nf-hipac需要为内核打patch,且只支持较低版本的内核,构建起来相对比较麻烦。 模块化后的nf-hipac可以直接作为内核可加载模块编译,且适配了高版本的Linux内核。为了移植工作简化,去掉了和iptables模块的联动支持!

2014-11-21

配置文件还有一些other

代码和配置iptables配置文件,还有一些别的东西

2010-04-16

关于linux内核以及其他个人体会的文集

本文集是我用将近两年的时间写成的,大多数文章是关于linux内核的,另外还有一些我自己对计算机的理解,还有一些历史,音乐方面的东西。适合于对linux内核思想感兴趣的阅读,文章偏重于对于思想的理解。

2009-09-07

空空如也

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

TA关注的人

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