免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2373 | 回复: 0
打印 上一主题 下一主题

NetBSD系列介绍--同步机制 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-08-14 23:11 |只看该作者 |倒序浏览

                                                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 中。
               
               
               
               
               
               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/16553/showart_2027746.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP