自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 资源 (4)
  • 收藏
  • 关注

原创 Ticket机制

<br />某日你逛商场,理发,洗浴,住宿,店主或老板在你消费之后会给你一张所谓的“会员卡”,等你再次来消费的时候,只需出示此卡,商家就会视你为其顾客,使你享受该有之优惠并采取积分措施并计入磁卡,此事之办成,全凭一张卡,此卡商家并不保留,而全由顾客持有,为防止会员卡伪造而骗取优惠,可能会员卡上会有一条磁条,该磁条作防伪只用,商家只需将卡在其特定机器上只一刷便可知卡之真伪。对比这个办法,如果会员信息全部保留在商家处而非顾客持有的磁卡,而顾客只需保留自己的姓名等认证信息,那么随着顾客的增加,商家保留的信息将膨胀

2011-02-27 22:23:00 17517 2

原创 BIOS,MBR与grub-我从哪里来

<br />计算机运行起来后,一切都很正常,并且很多理论你都可以在很多资料上学到,然而,一切是如何开始的呢?开始意味着诞生,生活是乏味的,然而诞生一个生命却是需要十月怀胎的,一个生命总是在充满激情与畅想的十月之后诞生的,计算机的运行也不例外,在计算机中,对于运行而言最重要的东西其实不是操作系统,也不是应用程序,而是BIOS或者类似的东西,它里面记录着一张拓扑图,这张拓扑图描述了计算机的硬件是如何连接在一起的-比如网卡芯片在第几条pci总线上,以及各个硬件是如何配置的-比如时钟的值或者启动顺序,有了这张图,以

2011-02-27 19:02:00 20105 5

原创 x86体系下linux中的任务切换与TSS

<br />tss的作用举例:保存不同特权级别下任务所使用的寄存器,特别重要的是esp,因为比如中断后,涉及特权级切换时(一个任务切换),首先要切换栈,这个栈显然是内核栈,那么如何找到该栈的地址呢,这需要从tss段中得到,这样后续的执行才有所依托(在x86机器上,c语言的函数调用是通过栈实现的)。只要涉及地特权环到高特权环的任务切换,都需要找到高特权环对应的栈,因此需要esp2,esp1,esp0起码三个esp,然而linux只使用esp0。<br />tss是什么:tss是一个段,段是x86的概念,在

2011-02-23 21:02:00 12971 2

原创 linux启动原理之-initrd和Debian实例

<br />init/main.c中的start_kernel函数完成了所有的全局特性初始化,这些全局特性包括内核运转所需要的基础设施,比如虚拟内存设施,进程调度设施,中断设施,缓存设施,VFS设施等,接下来启动1号进程的内核部分,在start_kernel的最后rest_init函数中启动之:<br />static void noinline rest_init(void)<br />{<br />    kernel_thread(init, NULL, CLONE_FS | CLONE_

2011-02-23 21:00:00 17152 1

原创 自己动手做计算机-计算机科学的本质

什么是计算机?计算机科学很高深吗?也许你会联想到集成电路,联想到汇编语言,操作系统之类的,然而真正的计算机本质上是很简单的,你自己都能自己动手做出来,所谓的集成电路只不过是实现计算机的一种方式而已,它能使计算机变得更快,更小,它纯属于另一个范畴,至于编程语言,那便是另另一个范畴了,如果你理解了计算机的本质,再理解这些概念就不会觉得难了。     本文我就带着想理解本质的同道中人自己动手做一台可以“编程”的计算机。首先计算机不一定非要是电子的,它完全可以是机械的,本文中我做的这台机器就不是电子的,因为如果想搞

2011-02-19 19:48:00 38313 82

原创 《用户故事与敏捷方法》-否

<br />IT精英?是纯粹的IT还是趋势追寻的白领?不修边幅?难道上世纪90年代的传说看多了了吗?卷发?觉得自己就是精英吗?

2011-02-13 20:18:00 15055

原创 指针和定长数组

<br />数组就是指针这个说法并不正确,只能说数组的名字是一个指针,指向数组的第一个元素,而数组的内容是该指针指向的内存后面连续的一段内存,这些内存可以用指针来寻址。重要的特点是“连续的一段内存”,因此数组元素就不能像链表节点那样仅仅通过一个指针来互相联系,它必须保证元素是一个挨着一个的,既然数组元素存在于连续内存,有了第一个元素的指针和元素的大小,后面的元素也就可以自然而然的得到了,可见数组是一种链表的特化,它不依靠显式的指针来首尾相接,而是靠“地址连续”这个特点隐式的首尾相接。<br />    

2011-02-12 12:21:00 15583

原创 多级指针和链表

<br />如果看到一个声明:type **********************ptr;你会怎么想?估计一半人都疯了,如此声明一个变量的人本身要么是一个高手,要么是一个低能。这样的一排*事实上表示的是一个链表,链表上的每一个元素可以分布在内存的任意一个位置,它们之间每两个通过一个*相联系。*p定义一个指针,p指向一个内存位置,该位置中保存p声明的数据类型,而**p表示一个指针的指针,p指向一个位置,该位置存放一个指针,后者指向p声明的数据类型,类似的***p也一样表示一个指针,****p也没什么区别,这

2011-02-11 21:15:00 16839 11

原创 另一个视角解读计算机编码-补码编码

<br />数学是一个完全抽象的学科,而计算机是这个学科的一种形象化的实现,显然无法处理一些仅在抽象意义上有意义的特殊“数字”,比如无穷之类的东西,。像数学中的加法,乘法这样运算,计算机必须给与实现,然而由于数学中的实数加法(以及别的运算)是建立在实数域上的,而实数域又是无限的,而计算机只能处理有限域的运算,因此必须给定一个范围,一种方案是在这个范围内保证运算的正确性,超出范围的结果给出错误提示,然而这样的计算机不是很完美,毕竟它能力太有限了,仅仅给出错误提示是不能让人满意的,如果能在有限的编码上实现诸如实

2011-02-09 21:13:00 20024 38

原创 苏杭自由行之二-旅游间隙的思索

<br />晚间在旅馆看电视,有一个节目,中国达人秀的优胜者去欧洲,何谓优胜者,若一个正常的人和一个残疾的人取得了同样的成绩,那么谁会取胜呢?肯定是不正常的人,为什么总是有那么一些不正常的人才能占有优势呢?我们崇尚中庸却更欣赏四两拨千斤,总之,凡是不正常的事物,我们如果不能彻底压制就必须给予其很高的位置,我们没有一个特定的程序去公平的处理这一切,而只能用道德的力量来让稀缺事件成为人们崇尚的目标。<br />     历经数次大地震,为何一些古塔屹立不倒,历经地基沉降,为何虎丘的斜塔屹立了千年,我仔细观察

2011-02-06 21:29:00 14949 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关注的人

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