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
还是要鼓励一下的