Minix3简介

Minix3是一款非常小巧简单且可靠的操作系统。2005年塔南鲍姆(Andrew Tanenbaum)组建新团队,对Minix进行彻底重构。

Minix历史

Minix第一版(Minix1)于1987年发布,是首个提供源代码的UNIX克隆版本,并得到迅速发展,很快就有了自己的USENET新闻组(comp.os.minix),在互联网只对大学研究人员和学生开放的时代,3个月时间汇聚了4万名订阅者。

Minix的早期用户之一,一位来自芬兰的学生莱纳斯·托瓦尔兹(Linus Torvalds),为运行Minix,买了一台个人电脑,并用心地研究Minix,后来决定编写自己的操作系统。

Linus系统发展成现今的Linux系统。尽管莱纳斯对Minix非常了解,但并非像一些人所说的那样从Minix窃取代码。

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

Minix重生

尽管Minix曾(现在仍然)被广泛用于操作系统教学,但在2005年塔南鲍姆组建了一个新的团队,对系统进行了彻底的重构。

Minix3与Minix 1、Minix 2有一些渊源,但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硬件封装,没有一个进程作为超级用户运行。其中一个被称为轮回服务器的进程,跟踪其他所有进程,当其中一个进程开始生病或崩溃时,它会用一个新版本替换它。

许多错误都是暂时性的,通常由异常时序触发。大多数情况下,重启有问题的组件,即可解决问题,系统能自行修复无需重启操作系统,甚至无需用户注意。

这种特性被称为自愈,传统系统不具备这种特性。

Minix结构

Minix3的结构如下所示:

MINIX3架构

由一系列分层构成,最下层是一个在内核模式运行的微内核,大约3000行C和800行汇编组成。

在此之上是一层设备驱动程序,每个驱动程序都在一个单独的用户模式进程中运行,以便在失败时方便替换。

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

最后,也是最重要的:用户进程。

尽管MINIX 3与其他UNIX系统完全不同,但它支持应用程序的标准接口POSIX,因此,很容易移植UNIX软件。

组件间使用固定长度的消息进行通信。如,用户进程请求文件I/O,会向文件服务器发送消息,文件服务器检查缓存,若所需的数据块不存在,则向磁盘驱动程序所在的进程发送消息。

虽然,发送消息会增加一些开销(在奔腾4上大约500 nsec),但系统响应仍然很快。

如,一个完整的系统构建大概需要120次编译,但仍能在10秒内完成。

用户界面

用户角度来看,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 Window:

minix3截屏

可用性

Minix3是BSD许可下的开源软件,有自己的网站 ,可从中下载源文件和二进制文件。

只需启动CD-ROM,以root身份登录,输入:

setup

安装过程大约需要10分钟。安装后输入:

packman

即可从CD-ROM或网站软件包中进行有选择的安装。

目前Minix3在x86硬件上运行,同时也适用于VMware和Xen等虚拟机。

Minix3于2005年末上市以来,网站已有超过30万的访问者,下载量约75,000次。

网站每天有超过1000名访客,有一个活跃的Google USENET新闻组comp.os.minix,可在那里提问和解答、发布新软件、讨论Minix3。

Minix3是一项社区项目,非常欢迎各种人士的帮助。