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

市场上的中文好书还是不多, 经典的好多都还是英文.

不过机械工业的有些书还是很好的, 就是卖的有点贵......
页: 1 2 3 4 5 6 [7] 8
查看完整版本: FreeBSD设备驱动和程序开发您知晓多少,积极分享送好书(获奖名单已公布2013-4-12)