Minix3简介

Minix3是一个可靠的操作系统的项目,同时也用于未来50美元的单片笔记本电脑和一般桌面应用,重点是Minix3非常小巧、简单并且可靠。

在过去的一年中,你多久重启一次电视机?可能比重新启动计算机少得多。当然,这其中有很多“原因”,但越来越多的用户不想听到重启一词。他们希望他们的计算机始终完美的运行而不会崩溃。

Minix历史

Minix3有着光明的未来,但过去它有点格格不入。Minix第一版(Minix1)于1987年发布,是首个提供源代码的UNIX克隆版本。它发展迅速,很快就有了自己的USENET新闻组(comp.os.minix),在3个月内有40,000名订阅者,在互联网只对大学研究人员和学生开放的时代,这是一个很漂亮的数字。

Minix的早期用户之一是芬兰学生莱纳斯·托瓦尔兹(Linus Torvalds),为了运行Minix,他去买了一台个人电脑,并非常用心地研究Minix,然后决定编写自己的操作系统,灵感来自Minix。尽管莱纳斯对Minix非常了解,但他并没有像一些人所说的那样从Minix那里窃取任何代码。Linus系统发展成为现今的Linux系统。

Minix的作者Andrew Tanenbaum和Torvalds,曾就操作系统设计进行过一些公开的讨论,最初是在1992年,最近一次是在2006年。

Minix重生

尽管Minix曾经(现在仍然)被广泛用于大学的操作系统课程教学,但在2005年它得到了新的推动,塔南鲍姆组建了一个新的团队,将其作为一个高度可靠的系统进行了彻底的重构。Minix3与Minix 1和Minix 2(作为一个符合posix的操作系统于1997年发布)有着一些渊源,但实际上Minix3是一个新系统(类似于Windows XP和Windows 3.1的关系)。

各种研究表明,软件中每1000行代码大约包含6-16个bug,而设备驱动程序的bug是操作系统其它部分的3-7倍。当70%的操作系统由设备驱动程序组成时,显然设备驱动程序是一个很大的麻烦来源。对于Windows XP来说,85%的崩溃是由于设备驱动程序中的错误造成的。

 

显然,为了使操作系统可靠,必须做一些事情来处理有bug的设备驱动程序。尽管设备驱动程序中存在不可避免的bug,但构建可靠的系统是MINIX 3背后的原始驱动力。

Minix设计

minix3实现高可靠性的方法是故障隔离。与传统的操作系统有所不同的是,在传统的操作系统中,所有代码都链接到一个在内核模式下运行的巨大二进制文件中,在MINIX 3中,只有很少一部分代码在内核模式下运行——总共大约4000行。

这段代码处理中断、进程调度和进程间通信。操作系统的其余部分作为用户模式进程的集合运行,每个进程由MMU硬件封装,没有一个进程作为超级用户运行。其中一个被称为轮回服务器的进程,会跟踪所有其他进程,当其中一个进程开始生病或崩溃时,它会自动用一个新版本替换它。

由于许多错误是暂时的,由异常时序触发,在大多数情况下,重新启动有问题的组件就可以解决问题,系统可能自行修复,无需重新启动,甚至无需用户注意。这种特性被称为自愈,而传统系统不具备这种特性。

Minix3的结构如图1所示,它由一系列分层构成。在最下层,是一个以内核模式运行的微内核,由大约3000行C和800行汇编程序组成。在此之上是一层设备驱动程序,每个驱动程序都在一个单独的用户模式的进程中运行,以便在失败时方便替换它。

MINIX3架构

然后是服务器(servers),它们构成了操作系统的核心。这些包括上面提到的转世服务器、文件服务器、流程管理器、X服务器、数据存储等各种服务器。

最后也是最重要的:用户进程。尽管在内部,MINIX 3与其他UNIX系统完全不同,但它支持应用程序的标准POSIX接口,因此可以很容易地移植普通UNIX软件。

组件间通过传递固定长度的消息进行通信。例如,用户进程请求文件I/O,会向文件服务器发送消息,然后文件服务器检查缓存,如果所需的块不存在,则向磁盘驱动程序所在的进程发送消息以获取块。

虽然发送消息会增加一些开销(在3-GHz奔腾4上大约500 nsec),但系统响应仍然很快。例如,一个完整的系统构建需要超过120次的编译,但仍然能在10秒内完成。

Minix用户界面

从用户的角度来看,Minix3看起来像UNIX,只是不那么臃肿。它带有X Window系统和400多个标准UNIX程序,包括:

Shells:ash,bash,pdksh,rsh 
编辑器:emacs,nvi,vim,elvis,elle,mined,sed,ed,ex 
语言工具:cc,gcc ,g ++,bison,flex,perl,python,yacc 
编程工具:cdiff,make,patch,tar,touch 
网络:ssh,telnet,ftp,lynx,mail,rlogin,wget,pine 
文件工具:cat,cp,bzip2, compress,mv,dd,uue,GNU实用程序 
文本实用程序:grep,head,paste,prep,sort,spell,tail 
管理:adduser,cron,fdisk,mknod,mount,cvs,rcs 
游戏:dungeon,nethack 

目前用户界面只是X,但是如果找到合适的轻量级GUI,就可以添加GUI。这是一些 屏幕截图。

minix3截屏

Minix可用性

Minix3是BSD许可下的开源软件,它有自己的网站 ,可以从中下载所有源文件和二进制文件(可引导CD-ROM映像)。安装它,只需启动CD-ROM,以root身份登录,然后键入:setup。安装大约需要10分钟。

安装后,只需输入:packman即可从CD-ROM或网站大量软件包中进行有选择的安装。目前Minix3在x86硬件上运行,但PowerPC和Xscale的端口正在进行中。同时也适用于VMware和 Xen等虚拟机。

自Minix3于2005年末上市以来,该网站已有超过30万的独立访问者,并且已下载了大约75,000次CD-ROM映像。目前,该网站每天有超过1000名访客。有一个活跃的Google USENET新闻组comp.os.minix,可以在这里提问和回答问题,发布新软件,讨论Minix3。

Minix3是一项社区项目,非常欢迎各种人士的帮助。赶紧去获取Minix系统并尝试一下,加入Minix的未来。