wenhq
发表于 2013-03-18 10:50
接触的FreeBSD不多,感觉真匮乏底层的interrupt,软中断,singal之类的东西。需要学习。
txgc_wm
发表于 2013-03-19 18:02
回复 2# muwanqing_cu
都?
are you sure?
Gavin
发表于 2013-03-20 17:04
呃,虽然接触好多年了,不过一时也说不上来啥呢
用户态有很多细小的差别,平时也不太注意,碰到的时候基本都可以比较容易的解决,通过翻看man或者google。自带的make是pmake,和gmake有很多不同,不过不习惯的可以直接改用gmake。
内核态差别很大,当然基础概念还是差不太多的,但是实现就完全不一样了
虽然有设计与实现那本书,不过讲的比较泛泛,这次这本书算是填补了一点空缺,版上以前有人上传过英文电子版,我看了有一多半吧,写的还不错。很高兴看到这么快就有中文翻译版本。因为这本书不太厚,所以讲的不太深入,但是拿来入个门还是非常好的,我已经在公司推荐过了。
另外网络相关部分可以参考《TCP/IP详解 卷二:实现》,做网络的同学估计都知道。
PS:还有几本啊:D)
lloydm
发表于 2013-03-21 07:29
superwiles
发表于 2013-03-22 20:06
本来还想上来喷一下,不过是中文版,还是让手指轻松点吧,哈哈
简单说,今天的freebsdkernel 相对linux kernel总体设计要简单,很多概念雷同,实现不一样。 比如 spin lock, freebsd 就要简单不少。
freebsd目前最大的一个问题其实是虚拟化,官方没有类似kvm 的虚拟机, 很多厂商其实已经有了,就是不upstream
mirnshi
发表于 2013-03-23 10:52
superwiles 发表于 2013-03-22 20:06 static/image/common/back.gif
本来还想上来喷一下,不过是中文版,还是让手指轻松点吧,哈哈
简单说,今天的freebsdkernel 相对linux ...
除非是想在freebsd系统上跑其他OS,从某种层面上,jail可以满足很多需求了。
wait_rabbit
发表于 2013-03-23 21:05
今天在图书大厦翻了一个小时,感觉这个中文版翻译得挺好。译者的态度很认真,重要的名词也给出了英文,赞一下。{:3_193:}
浏览了一下内核接口,觉得比 linux 的要简单、整齐。同步、中断等匆匆翻过,都差不多。感觉有 linux 内核经验的人,要转移到 FreeBSD 应该比较容易。看了最后两章有关协议栈的,觉得蛮清晰。:wink:
dhc5251
发表于 2013-03-24 15:26
BSD系接口变化较少(相对于Linux),FreeBSD主要对x86和PPC平台支持比较完善。由于以BSD许可发布,很多商业公司背后支持FreeBSD开发,但很少把成果公布出来,对我们新手来说,学习资源太少了。
to407
发表于 2013-03-24 20:59
平时一直在Linux和Solaris上工作,对FreeBSD也就是大概的了解。
也上来讲一些自己观点里 FreeBSD和别的系统的不同点,侧重于应用,而不是驱动。
1. os kernel本身,Linux版本的变化比较大,社区化的开发模式,让更多新的特性融入,但也带来了代码版本兼容性的问题,这个在FreeBSD里就比较少问题,因为架构变得少,更像Solaris这样的UNIX更是10年换一个版本的,旧代码兼容性问题少了很多。
但这并不代表BSD自己就没有特立独行的地方, 像Linux里的LKM(Linux Kernel Module),在现在版本的FreeBSD里,被称为KLD,我个人觉得这是FreeBSD的自己玩的地方,我在linux kernel里做调试的那一套,搬到FreeBSD里基本上就没用了。
2. 跟驱动相关一些的,内核模块相关的interrupt/module event handler, 这边我觉得从架构上讲就和Linux不同了,像Linux上新kernel从2.5开始就把旧的bottomhalves完全清掉了,本身现在就有tasklet/softirq/workqueues,这些在BSD上也没有。我觉得与其说BSD稳定,不如说Linux更追求性能。
3. 从C的API实现角度,大同小异,因为要做移植工作,我平时一直会把SUS3的标准拿来看看,也可以看得出很多不同的地方,比较著名的是vfork()在FreeBSD上有其实现,但在新版本Linux上利益于copy-on-write技术,就直接抄的fork(),并标为过时。还有Linux现在考虑不同平台的移植性,很多时候使用了包装ssize_t,而像lseek()这个api,在linux上正常返回值为正,而在FreeBSD上,比如/dev/kmem设备,offset也可以是负值。同样像fcntl()这种比较依赖实现的,比如F_SETFL 可以在BSD上改O_SYNC,而在Linux上不能设。
4.
比如thread的实现,这一块FreeBSD上也可以用pthread, 这样移植的问题也少了。 网络编程这一块,不同处显然少了更多,因为socket/TCPIP这些本来就是UNIX/SYSV都实现好了拿来用的,而且很稳定,协议本身不要太多改,直接搬apue/unp,移植压力不大。
sidgwick
发表于 2013-03-24 21:41
市场上的中文好书还是不多, 经典的好多都还是英文.
不过机械工业的有些书还是很好的, 就是卖的有点贵......