为什么呢? 在人多时候最沉默的BSD......

林希 发布于 2013/01/16 14:47
阅读 4K+
收藏 2

是这样的, 现在市面有关Linux 内核的书很多, 正在学习这方面的人也很多, 我想问一下为什么有关FreeBSD, NetBSD内核这方面的书却那么少呢? 或者最真实的原因是什么呢?

如果有业内的朋友,还希望真诚的指点啊,谢谢

加载中
2
gvim
gvim

首先看你读内核来做什么。如果是学习系统和设计,建议学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那般丰富。

林希
林希
@gvim 距离进入还很远吧,只是自己更加喜欢BSD的文化和信仰,觉得他儒雅而执着
gvim
gvim
回复 @林希 : 欢迎进入BSD的空间...
林希
林希
呵呵,受教了,写的不错
1
擅长被美女推倒
擅长被美女推倒

bsd你可以认为只有一家在做,而linux却有很多公司在一起捧,IBM,google等只要是听过的公司基本都捧场,就是微软也假仁假义的提供代码,所以BSD和linux不是一个数量级的对手了,

但是因为bsd授权较灵活,好多代码不开源的系统一般都选择用bsd,避免不必要的商业风险,比如国内不少做防火墙的,就选择bsd内核,

0
ddatsh
ddatsh
用的人少
0
泡不烂的凉粉
泡不烂的凉粉

可能是BSD比较保守。 个人贡献代码没有 LINUX 那样方便。代码审核比较繁琐。新特性应用很麻烦。没有像LINUX那样,喜欢的代码就可以抄过来用。

0
mallon
mallon
BSD真的比Linux差远了
xinfang_cn
xinfang_cn
中国现在也有个半间谍性质的高校科研机构在做这个项目。希望他们不要把成果对准老百姓的网络监控,不要把枪口对着老百姓、以及知识精英。 我想中国开源论坛应该讨论点更有技术性的东西,而不是停留在VBOX好不好用,VMware占用多少硬盘空间等等,
xinfang_cn
xinfang_cn
至于8139 的FIFO读写都是2KB,也就是说差不多每收发一个数据包,就要CPU中断一次,停下里处理TCP事务,历史上的小巨人3COM ,收发是3KB的,那时IEEE的tcp-IP标准就是1500B,也就是说3COM是花小钱半大事。(当时FIFO还是很贵的)
xinfang_cn
xinfang_cn
8169 到的发送FIFO 只有8KB,远远没有BROADCOM 7782的96KB,所以8169要消耗巨大的DMA操作进行DMA读写,把CUP拖垮,不过8169 的接受FIFO是48KB的,单纯上网浏览,下载,还可以的,
xinfang_cn
xinfang_cn
但我说的,是针对非专业领域应用,比如家用SERVER,小型论坛,如果BSD能进一步开发TCP的零缓存输出,直接把CPU加工好的数据,直接映射给网卡的DMA读缓冲,下一步,哪怕是很鸡肋RTL8139、8169,都能直接从DMA的地址寄存器获取内存片的数据,而不是让CPU再次COPY到NIC的内存DMA读出区域。
xinfang_cn
xinfang_cn
当然,82575还同时根据不同的TCP套接层转给不同的CPU(最多达4路),至于更新的网络芯片有没有进一步完善,Intel才知道,不过82574的确是通过软件的方式完成的,现在,非Intel网络平台,也就BroadCOM NC374有这种基于硬件级的TCP 卸载引擎,也就是说非常适合于储存应用,
下一页
0
mallon
mallon

想当初GNU缺内核的时候,正是由于BSD的保守才导致Linux突起的。Linux雄起了,大多数人也就习惯了。反正上层软件环境都一样,还有多少人愿意投精力到第二个内核呢?

0
中山野鬼
中山野鬼
不清楚哦。不过什么都讲究个圈子,linux无非这圈子足够开放,开放到你我都能深入的了解他。仅此而已。。。。我对BSD没有了解过,哈。不敢说其好坏。。
0
宏哥
宏哥
这是商业的选择,不要问为什么 顺势而为
0
陶邦仁
陶邦仁

看市场吧,linux受众比较广泛,同时也是个圈子的问题,或许你没有dive into bsd这个圈子吧。。。仅是拙见

返回顶部
顶部