- 博客(10)
- 资源 (4)
- 收藏
- 关注
原创 Ticket机制
<br />某日你逛商场,理发,洗浴,住宿,店主或老板在你消费之后会给你一张所谓的“会员卡”,等你再次来消费的时候,只需出示此卡,商家就会视你为其顾客,使你享受该有之优惠并采取积分措施并计入磁卡,此事之办成,全凭一张卡,此卡商家并不保留,而全由顾客持有,为防止会员卡伪造而骗取优惠,可能会员卡上会有一条磁条,该磁条作防伪只用,商家只需将卡在其特定机器上只一刷便可知卡之真伪。对比这个办法,如果会员信息全部保留在商家处而非顾客持有的磁卡,而顾客只需保留自己的姓名等认证信息,那么随着顾客的增加,商家保留的信息将膨胀
2011-02-27 22:23:00 19824 2
原创 BIOS,MBR与grub-我从哪里来
<br />计算机运行起来后,一切都很正常,并且很多理论你都可以在很多资料上学到,然而,一切是如何开始的呢?开始意味着诞生,生活是乏味的,然而诞生一个生命却是需要十月怀胎的,一个生命总是在充满激情与畅想的十月之后诞生的,计算机的运行也不例外,在计算机中,对于运行而言最重要的东西其实不是操作系统,也不是应用程序,而是BIOS或者类似的东西,它里面记录着一张拓扑图,这张拓扑图描述了计算机的硬件是如何连接在一起的-比如网卡芯片在第几条pci总线上,以及各个硬件是如何配置的-比如时钟的值或者启动顺序,有了这张图,以
2011-02-27 19:02:00 22413 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 19458 1
原创 自己动手做计算机-计算机科学的本质
什么是计算机?计算机科学很高深吗?也许你会联想到集成电路,联想到汇编语言,操作系统之类的,然而真正的计算机本质上是很简单的,你自己都能自己动手做出来,所谓的集成电路只不过是实现计算机的一种方式而已,它能使计算机变得更快,更小,它纯属于另一个范畴,至于编程语言,那便是另另一个范畴了,如果你理解了计算机的本质,再理解这些概念就不会觉得难了。 本文我就带着想理解本质的同道中人自己动手做一台可以“编程”的计算机。首先计算机不一定非要是电子的,它完全可以是机械的,本文中我做的这台机器就不是电子的,因为如果想搞
2011-02-19 19:48:00 38318 82
原创 《用户故事与敏捷方法》-否
<br />IT精英?是纯粹的IT还是趋势追寻的白领?不修边幅?难道上世纪90年代的传说看多了了吗?卷发?觉得自己就是精英吗?
2011-02-13 20:18:00 17360
原创 指针和定长数组
<br />数组就是指针这个说法并不正确,只能说数组的名字是一个指针,指向数组的第一个元素,而数组的内容是该指针指向的内存后面连续的一段内存,这些内存可以用指针来寻址。重要的特点是“连续的一段内存”,因此数组元素就不能像链表节点那样仅仅通过一个指针来互相联系,它必须保证元素是一个挨着一个的,既然数组元素存在于连续内存,有了第一个元素的指针和元素的大小,后面的元素也就可以自然而然的得到了,可见数组是一种链表的特化,它不依靠显式的指针来首尾相接,而是靠“地址连续”这个特点隐式的首尾相接。<br />
2011-02-12 12:21:00 17889
原创 多级指针和链表
<br />如果看到一个声明:type **********************ptr;你会怎么想?估计一半人都疯了,如此声明一个变量的人本身要么是一个高手,要么是一个低能。这样的一排*事实上表示的是一个链表,链表上的每一个元素可以分布在内存的任意一个位置,它们之间每两个通过一个*相联系。*p定义一个指针,p指向一个内存位置,该位置中保存p声明的数据类型,而**p表示一个指针的指针,p指向一个位置,该位置存放一个指针,后者指向p声明的数据类型,类似的***p也一样表示一个指针,****p也没什么区别,这
2011-02-11 21:15:00 19147 11
原创 另一个视角解读计算机编码-补码编码
<br />数学是一个完全抽象的学科,而计算机是这个学科的一种形象化的实现,显然无法处理一些仅在抽象意义上有意义的特殊“数字”,比如无穷之类的东西,。像数学中的加法,乘法这样运算,计算机必须给与实现,然而由于数学中的实数加法(以及别的运算)是建立在实数域上的,而实数域又是无限的,而计算机只能处理有限域的运算,因此必须给定一个范围,一种方案是在这个范围内保证运算的正确性,超出范围的结果给出错误提示,然而这样的计算机不是很完美,毕竟它能力太有限了,仅仅给出错误提示是不能让人满意的,如果能在有限的编码上实现诸如实
2011-02-09 21:13:00 20025 38
原创 苏杭自由行之二-旅游间隙的思索
<br />晚间在旅馆看电视,有一个节目,中国达人秀的优胜者去欧洲,何谓优胜者,若一个正常的人和一个残疾的人取得了同样的成绩,那么谁会取胜呢?肯定是不正常的人,为什么总是有那么一些不正常的人才能占有优势呢?我们崇尚中庸却更欣赏四两拨千斤,总之,凡是不正常的事物,我们如果不能彻底压制就必须给予其很高的位置,我们没有一个特定的程序去公平的处理这一切,而只能用道德的力量来让稀缺事件成为人们崇尚的目标。<br /> 历经数次大地震,为何一些古塔屹立不倒,历经地基沉降,为何虎丘的斜塔屹立了千年,我仔细观察
2011-02-06 21:29:00 17255 1
一个iptables的stateless NAT模块实现
2014-12-27
模块化的nf-HiPAC
2014-11-21
关于linux内核以及其他个人体会的文集
2009-09-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人