我有分寸

Linux, 用户空间, 和微内核

gnawux kernellinuxworks

正在修改我的unleashed,发现有些想法因为书的结构或书的定位,实在不方便放进去,于是就来这里聊聊。

当年,AST攻击Linux的论据之一就是Linux不是微内核,架构落后,而Linus反诘的言论很简单——Linux比Minix更高效。

不过从最近Linux内核的发展看,在有些方面倒确实是向着微内核的方向在演进了,这种不是非革命的方式的演化似乎确实在操作系统内核演进历史中比较少见。

微内核或说Linux发展的思路之一是——尽量减少内核功能,尽量让一些模块改在用户空间实现——越少的功能,越少的犯错,至少错误不在内核里就好解决得多嘛。很著名的在用户空间实现的原来属于或基本属于内核的功能包括:

  • udev ——用户空间的即插即用——同一功能的内核产品devfs虽然进入内核很久,却始终未能达到设计目标,最终又被清除出内核。
  • fuse——用户空间文件系统——内核中的文件系统支持已经够多了,而今,用户空间文件系统又带来了ntfs-3g, sshfs以及很多加密文件系统的支持,可以想见,将来会有大量新的文件系统支持被放到fuse框架之下。
  • uswsusp——用户空间的挂起系统——内核中的挂起到硬盘和挂起到内存已经实现很久了,而功能更丰富的swsusp2始终也没能撬开kernel的大门,最终,uswsusp倒是要把前浪推到沙滩上了,uswsusp可以更灵活地结合挂起到内存和挂起到硬盘、采取各种压缩方式……很显然,已经超过了他的内核空间的前辈们了。
  • usplash/splashy——用户空间的bootsplash——内核空间的bootsplash从来没有成功地进入过主线内核,虽然很多用户都希望拥有这个功能,现在,这个功能已经被在用户空间实现了。

随着Linux需要支持的硬件、协议、文件系统、算法等越来越多,越来越多的东西可能将在用户空间被实现,单从一个业余观察者的角度看,硬件驱动和网络协议都有可能被部份地转移到用户空间去实现,如果看一下 fuse 的话我们就会发现,放在用户空间不一定意味着低效,却意味着内核的质量风险更低,照着这个趋势发展下去,很难说Linux在几年之后会不会成为一个“准微内核”。

呵呵,我们等着这一天的到来吧。

gnawux
me!#$!@#$@#$wangxu!@#$%^&*()_me