freebsd介绍

首先看你读内核来做什么。如果是学习系统和设计,建议学BSD,因为BSD(或OpenSolaris)的代码相对Linux,更具规范性和工程性,组织架构的设计相对更优秀,这点从Linux和BSD/OpenSolaris的整体架构进化可以看出来(当然你也可以说是因为其不够先进。一些构架,比如总线抽象设计,内核层的一些抽象设计,出自BSD社区或OpenSolaris的手笔然后被其他社区借鉴进化,不少功能实现出自GNU社区手笔也会被其他社区借鉴进化。如果是学功能,自然Linux和OpenSolaris的功能无疑比BSD多不少,比如Tickless这些东西。如果是拿来做产品,那么互联网产品绝大部分是Linux,产品的东西因为BSD协议的关系,有相当一部分用的BSD,比如许多的网络安全产品、苹果的时间胶囊等。

说到书,BSD的书有一本讲设计的几乎已经是OS里面的经典,只要是有一些分量的书都会引用:4.4BSD设计与实现,和它的升级版 freebsd设计与实现。从设计本身来说,这两本书都从设计考量本身出发告诉你为什么当时这样设计,自然比给你分析api要有深度的多(因为作者就是BSD系统的设计者,注意是系统而不是功能,这一点和大多数解析Linux的书不一样)。因此你想具体分析一些功能怎么实现的,太细节的东西以我个人经验来看,你就算现在花功夫分析了,也记不了多久,更何况代码是不断变化的,Linux一些小版本的升级都可能会对代码进行调整;相反原理、设计思考、取舍理由这些东西可能更让你受益。即使某些功能在现在看来可能是过时,但BSD本身整体构架的稳定性和扩展性,足以使得在有足够人力物力资源的情况下也能快速添加完善其他系统具备的新功能,这个稳定性也保证了你的学习投资。进化的快是好事也不是好事,外人看着热闹,但要说做开发,谁都知道设计的稳定性有多重要。

如果你只想学某些技巧,BSD中同样也有很多既符合C标准又很有意思的设计,比如你可以了解下BSD的各种树,这是用宏来完成的数据结构,你想拿出来用的话只需要把.h文件拷贝进你自己的过程里去。如果你对shell和make熟悉的话,可以花时间了解下FreeBSD和NetBSD的Makefile体系设计,设计的叹为观止。

说到整体系统,你不妨去/usr/share/man/man9/看它的kapi,这个文档是对内核接口(注意不是系统调用接口,是内核中自己的接口)的最权威也最全面的描述。这份文档的质量和数量足以满足绝大多数对内核细节学习的需要。另外,BSD代码的工程规范、注释等东西,其实你要看明白某个具体函数的实现并不困难。

影响BSD使用的最大原因我看来是硬件驱动而不是功能,机器上不去想用也用不了。

当然,学Linux内核的更多是为了得到一份好工作,学BSD很多时候要么是公司产品自身的需要要么是个人兴趣或学习使然,学习的目的不同所以BSD的内核资料便不会如Linux那般丰富。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值