FreeBSD内核编程初步

2009-05-13 09:21:34来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

发信人: gracewind (和风), 信区: FreeBSD        
标  题: FreeBSD内核编程初步(转载)
发信站: BBS 水木清华站 (Mon Aug 26 10:56:34 2002), 站内信件

FreeBSD内核编程初步

王波 Wb@email.online.ha.cn

随着Unix/Linux在国内的流行,基于他们的开发也变得越来越重要,因而更多的人对更
深层次的开发也越来越有兴趣。这些兴趣就包括对核心的研究、学习、开发、定制等等

虽然Linux的流行程度最高,但FreeBSD作为另外一种别具特色的操作系统,在很多地方
有其特殊的优势,特别是在网络功能方面,其强大的功能使其足以满足很多网络服务的
要求。事实上, 国内很多网络设备,比如防火墙等等,也是基于这种系统开发的。这样
的例子在国外也有类似的例子,甚至更有说服力。因为当前第二大的骨干路由器厂商-j
uniper,其核心代码就是基于FreeBSD的,当然他们使用了特殊的处理芯片,以加速数据
处理速度。事实上,如果有足够的硬件设计能力,加上FreeBSD的核心开发能力,设计和
实现一个超级路由器、防火墙等等网络设备,并不是一个遥不可及的事情,当然这样做
的基础就必然需要拥有核心开发能力。
要学习FreeBSD内核编程,第一步就是要学习FreeBSD操作系统本身。在这些方面,有不
少书籍和资料能提供帮助,其中最为著名的是那本《Unix设计和实现》,这本书是BSD  
Unix的设计者撰写的,由于FreeBSD是标准的BSD实现,因此使用FreeBSD来学习Unix其实
是顺理成章的事情,事实上,甚至Berkeley的操作系统课程也是使用FreeBSD作为教学系
统的。
虽然,学习了这些书之后,一个程序员应该能够完成一些系统级的编程工作,但是,毕
竟这些书只是讲述基本的原理,并没有一步一步的、手把手教给你如何定制系统内核,
因此,如何完成内核编程第一步也许还需要一些尝试和研究。FreeBSD毕竟是一个实际的
操作系统,而针对内核编程也不是一个简单的任务。这样,很多人都希望能得到一些进
一步的提示,以节约时间和经历。然而,这方面的文档就并不是十分丰富了。
我记得,某一个著名的Unix程序员说过,“Unix有很好的文档,但这些文档是用C写的”
,显然,从源代码中学习,是必然的,也是应该的一个过程。作为一个完整的操作系统
,其代码的复杂程度可想而知,因此,这个学习任务并不轻松,尤其在起步的时候。因
此在这里,我打算介绍一些最初步的内容,以一种特殊的方式来和对FreeBSD系统内核有
兴趣,但还没有开始系统内核编程实践的朋友进行交流。对于已经开始内核编程实践的
朋友,也许就可以忽略这篇文章,而真正从源代码出发,进行更深入的研究了。
学习内核编程有很多种起步方式,一种比较正规的方式是首先对源代码本身进行整体的
学习,例如购买一本源代码分析的书,并仔细阅读,另一种方式在一开始并不下很大的
工夫去研究所有的代码,而是基于兴趣基础,首先写一点点内核方面的东西,然后根据
兴趣可以逐步加深研究,直到掌握系统内核的某一个方面。当然,这两个方向并不是截
然对立的,可能在学习整体代码的时候,就打算进行实践,也可能在编写实际代码的时
候,由于需要,而在整体上对代码进行多次学习。

1.第一个内核模块

如果要打算实际编写核心代码,有一点是非常重要的,因为改写内核之后,系统需要重
新启动才能生效,每次改动都需要一次重新启动才能看到改动的结果,这样就导致核心
编程的交互性很差。然而,内核模块的方式能够解决这个问题,能够在不改动整体内核

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Xft和fontconfig的体系结构及用户指南

下一篇:FreeBSD一些小技巧