开源中文网

您的位置: 首页 > NetBSD > 正文

NetBSD系列介绍--同步机制

来源:  作者:

NetBSD系列介绍--同步机制及工作的推后执行
1. 同步机制
kernel 线程化的第一步工作就是就是要把锁细化,不能整个 kernel 用一个大锁,否则会严重影响 SMP 的性能。这个工作的结果就是 src/sys/kern/kern_mutex.c,src/sys/kern/kern_condvar.c 和 src/sys/kern/kern_rwlock.c,这两个文件实现了《Solaris内核结构》中介绍的 mutex 和 reader/writer lock,第三个文件实现的叫条件变量(condition variable)。关于这些概念,标准的操作系统书上都应该有介绍,如果没有,参看《Solaris内核结构》,英文版叫《Solaris Internals》。
2. 软中断线程
NetBSD 5.0 中 Softirq 改成了用线程处理,这个是实现线程后对中断处理的一个优化,Softirq 是一种中断推后执行的机制,因为中断处理要尽量在短时间内完成,所以一般操作系统实现并不在中断中处理完所有事情,而是处理最紧急的部分,然后中断直接返回,剩下的部分用某种机制在后面合适的时候在来执行。NetBSD 5.0 中 Softirq 就是这种机制。 Softirq 改成线程处理,我认为一个明显的好处就是编写程序的时候在线程上下文,受到的限制要小很多,所以一般的函数都能用。实现在 src/sys/kern/kern_softint.c 中
3. NetBSD 中的工作队列 (work queue)
NetBSD 中的 work queue 是一组内核 API,也是一种推后执行的机制,在线程上下文中执行。实现在src/sys/kern/subr_workqueue.c 中。
4. callout队列
NetBSD 中 callout 是一中 timer 机制,它实现在指定的时间后执行指定的调用的功能,实现在
src/sys/kern/kern_timeout.c 中。 

Tags:NetBSD 同步机制
关于开源中文网 - 联系我们 - 广告服务 - 网站地图 - 版权声明