免费注册 查看新帖 |

Chinaunix

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

Linux 2.6.22定稿 [复制链接]

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

                                Linus在周六关闭了linux kernel这一轮的合并窗口,并
释出
2.6.22的第一个候选版本。
这次的动作相当大,更改了近7000个文件,涉及体系结构、驱动、文件系统、网络、安全、构建脚本、重组、清理...你能想到的几乎都涉及到了。更为详细的信息请参阅其短格式的更改
日志
和长格式的更改
日志

如此冗长的日志我是没有精力详细读完的,也更加佩服每天都埋在补丁堆里的Linus了。众多更改中,只有两项比较吸引我的眼球:
SLUB内存分配器

事件的文件描述符(Signalfd)
。程序设计中的内存管理我关注也有一段时间了,关于它我会另辟文章总结。至于后者,我以前也有
文章
简单讨论过,只是没有想到它会这么快进入官方内核,甚至当时我都不看好它,这次内核选它而不是
kevent
接口,也许是出于对“功能正交”这个设计原则的考虑,不知道kevent以后还有没有机会进入官方内核!
事件的文件描述符化除了上面提到的内核实现,
libevent
库中其实早就存在另一套用户空间的实现方法:
  • 定时器:将所有超时事件按照时间的前后组织成一个红黑树,每次抽取最近到期的超时事件,将其与当前时间的间隔作为超时参数传递给select/poll/epoll类函数,当select/poll/epoll由于超时返回,或者是时间自然到期或超时,相应的超时任务就将被调度执行。
  • 信号:libevent接管系统的信号处理,在它提供的信号处理函数中,首先将相应信号的计数器值增加,然后通过将一个字符‘a’写入预先创建的UNIX域套接字对的一端来唤醒正在UNIX域套接字对的另一段等待的select/poll/epoll,随后libevent将在主循环中调用用户为这个信号注册的信号处理函数。
不难发现,在libevent的信号实现中,UNIX域套接字对充当了通信通道,在唤醒主主循环的过程中起到了至关重要的作用,如此技巧不能不让人感叹,其它的一些事件是不是也能如法炮制呢?比如inotify和aio等,必要的时候还可以引入帮助线程。
按照以上的分析,似乎没有哪种事件不可以在用户空间实现统一接口,如果这样,还真的有必要把类似机制放进内核么?性能?
               
               
               
               

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP