axlrose 发表于 2013-03-15 11:15

回复 50# hellioncu


    国内用FreeBSD的就少,更别说开发FreeBSD程序的,开发FreeBSD驱动的又更少了

chishanmingshen 发表于 2013-03-15 16:47

从freebsd内核开发转到linux内核的飘过~~

send_linux 发表于 2013-03-15 17:22

chishanmingshen 发表于 2013-03-15 16:47 static/image/common/back.gif
从freebsd内核开发转到linux内核的飘过~~

这个应该有不少经验吧,可以和大家分享一下啊

chishanmingshen 发表于 2013-03-15 19:35

可是我一直没接触过驱动,没有发言权啊。。。

之前搞协议层。

回复 53# send_linux


   

chishanmingshen 发表于 2013-03-15 20:17

本帖最后由 chishanmingshen 于 2013-03-16 09:19 编辑

还是谈谈我的感觉吧。

1.拿我比较熟的协议栈看,bsd确实比较稳定。只要读读近二十年前的《详解(卷2)》,即使是现在比较新的9.0,你也会发现很多代码,而且是框架,竟然完全没变!

bsd的协议栈层次清晰,但是linux就没二层的明确处理,而是用skb给了一个间接的处理。

网络的根就是rfc,而bsd对rfc支持是天然的,基本上rfc都是依据bsd实验的。(想想早期rfc时,那个时候还没有linux呢~)


2.没搞过驱动,但是也了解些。
bsd代码变化很少,对驱动支持尤其慢。对于使用bsd开发的公司来说,经常等不了bsd的官方更新,而是从linux直接移植相关驱动。比如atr、rss等。

3.bsd的新技术更新较慢。
比如linux很早就支持smp,而bsd只是近年才支持。而linux下的rps等技术在bsd上更是没听说,slob、slub啥的也一样。

4.bsd创新少
在linux,可以看到cfs已经很革命了,但是在bsd,估计是行不通了的。可能因为当年的unix大师都已经逝去,而linus本人还把关的缘故吧,哈哈。

5.跟gcc的关系
linux跟gcc是彻底的绑定,而bsd则不同,可能用其它代替,比如clang。
看代码可以看出,跟bsd比,linux用的都是强依赖于gnu c的很高级的c语言语法。

6.资料
这个都知道的,bsd资料很少且都是e文的。而linux则满街都是。

7。分支
bsd分支太多,且差异不小。但linux的内核没有分支,不过这个应该是吸取了bsd的教训。
bsd现在已经各个团体维护了,但是linux太多受linus一个人的影响了,不论这个影响是好是坏。


8。用途
Bsd应该只有用于服务器之类的部署,而linux则是遍地开花,android分支都合入主线了。其实我觉得占领了嵌入式就是占领了世界。连嵌入式鼻祖风河都已经开始卖定制linux了。


8。代码
其实作为一个开发者,给我最直观的感觉是bsd的代码很短且稳定,而linux的则太多且变化大。
Bsd代码很简洁,比如在bsd是没有屏障这些晦涩的东西,因为底层已经做好封装了。
而Linux的定位很多,代码太灵活了,自然加大代码量了。


一句话,bsd很经典,linux很潮流。

mirnshi 发表于 2013-03-16 11:04

FreeBSD协议栈上的处理流程很流畅,分支钩子比较少,曾分析过FreeBSD的处理流程,可以在博客或Google上找得到。早年曾喜欢用netgraph做东西,时间长了,就觉得有些鸡肋了,处理流程有些冗余,尽管方便了开发人员。

FreeBSD的代码对于开发者而言,完整性要高于适用性的,不过鲜见国内公司贡献代码给FreeBSD。

貌似10多年前FreeBSD4就支持SMP了,只是支持的不是很好,可以在双P3机器上跑SMP核的。

FreeBSD的内核编译也使用了很多gcc的特性,否则随便用个编译器就编译了。虽说是都是C,但还是有依赖性的。要不然CLANG进入基本系统,也不用这么费劲了。

FreeBSD的内核和外围应用程序是一个整体的。有差异才是最好的,Matthew Dillon当年与FreeBSD开发者意见不合,跑出去弄了个DragonFlyBSD,也搞出了很多特性,比如HammerFS

内核开发不是搞OS,很多都是基于内核的应用开发,比如基于协议栈做的网络安全等等。涉及的代码不是很多,低下头,花上2-3个月,足以吃透协议栈。BSD的代码又很简洁,遇到什么问题,看代码解决问题的成功率是非常高的。觉得内核开发难度高,是因为如果程序出错,很多情况下内核会崩溃掉,对于初学者建立一个可调试内核的开发环境是做内核开发的前提。

chishanmingshen 发表于 2013-03-16 11:59

我说的smp还包括numa,貌似最新bsd还不支持。呵呵

回复 56# mirnshi


   

mirnshi 发表于 2013-03-16 12:32

回复 57# chishanmingshen

smp是基础。但numa与smp是有很多差异的。FreeBSD还没有完全支持numa。
   

ulovko 发表于 2013-03-17 11:59

真是一本好书吖 :emn31:

pitonas 发表于 2013-03-18 09:38

还是要鼓励一下的
页: 1 2 3 4 5 [6] 7 8
查看完整版本: FreeBSD设备驱动和程序开发您知晓多少,积极分享送好书(获奖名单已公布2013-4-12)