Nachos
Nachos操作系统
Nachos的全称是“Not Another Completely Heuristic Operating System”,它是一个可修改和跟踪的操作系统教学软件。它给出了一个支持多线程虚拟存储的操作系统骨架,可让学生在较短的时间内对操作系统中的基本原理和核心算法有一个全面和完整的了解。
功能介绍
在本科的操作系统教学中,能够提供一个展示真实操作系统是如何工作的工程环境是很重要的,但同时也要求这个工程环境便于学生的理解和修改,所以我们采用Nachos作为操作系统课程的教学实践平台。Nachos是美国加州大学伯克莱分校在操作系统课程中已多次使用的操作系统课程设计平台,在美国很多大学中得到了应用,它在操作系统教学方面具有以下几个突出的优点:
 采用通用虚拟机
Nachos是建立在一个软件模拟的虚拟机之上的,模拟了MIPS R2/3000的指令集、主存、中断系统、网络以及磁盘系统等操作系统所必须的硬件系统。许多现代操作系统大多是先在用软件模拟的硬件上建立并调试,最后才在真正的硬件上运行。用软件模拟硬件的可靠性比真实硬件高得多,不会因为硬件故障而导致系统出错,便于调试。虚拟机可以在运行时报告详尽的出错信息,更重要的是采用虚拟机使Nachos的移植变得非常容易,在不同机器上移植Nachos,只需对虚拟机部分作移植即可。
采用R2/3000指令集的原因是该指令集为RISC指令集,其指令数目比较少。Nachos虚拟机模拟了其中的63条指令。由于R2/3000指令集是一个比较常用的指令集,许多现有的编译器如gc++能够直接将C或C++源程序编译成该指令集的目标代码,于是就不必编写编译器,读者就可以直接用C/C++语言编写应用程序,使得在Nachos上开发大型的应用程序也成为可能。
 使用并实现了操作系统中的一些新的概念
随着计算机技术和操作系统技术的不断发展,产生了很多新的概念。Nachos将这些新概念融入操作系统教学中,包括网络、线程和分布式应用。而且Nachos以线程作为一个基本概念讲述,取代了进程在以前操作系统教学中的地位。
Nachos的虚拟机使得网络的实现相当简单。与MINIX不同,Nachos只是一个在宿主机上运行的一个进程。在同一个宿主机上可以运行多个Nachos进程,各个进程可以相互通讯,作为一个全互连网络的一个节点;进程之间通过Socket进行通讯,模拟了一个全互连网络。
 确定性调试比较方便,随机因素使系统运行更加真实
因为操作系统的不确定性,所以在一个实际的系统中进行多线程调试是比较困难的。由于Nachos是在宿主机上运行的进程,它提供了确定性调试的手段。所谓确定性调试,就是在同样的输入顺序、输入参数的情况下,Nachos运行的结果是完全一样的。在多线程调试中,可以将注意力集中在某一个实际问题上,而不受操作系统不确定性的干扰。
另外,不确定性是操作系统所必须具有的特征,Nachos采用了随机因子模拟了真实操作系统的不确定性。
 简单而易于扩展
Nachos是一个教学用操作系统平台,它必须简单而且有一定的扩展余地。Nachos不是向读者展示一个成功的操作系统,而是让读者在一个框架下发挥自己的创造性进行扩展。例如一个完整的类似于UNIX的文件系统是很复杂的,但是对于文件系统来说,无非是需要实现文件的逻辑地址到物理地址的映射以及实现文件inode、打开文件结构、线程打开文件表等重要的数据结构以及维护它们之间的关系。Nachos中具有所有这些内容,但是在很多方面作了一定的限制,比如只有一级索引结构限制了系统中最大文件的大小。读者可以应用学到的各种知识对文件系统进行扩展,逐步消除这些限制。Nachos在每一部分给出很多课程作业,作为读者进行系统扩展的提示和检查对系统扩展的结果。
 面向对象性
Nachos的主体是用C++的一个子集来实现的。面向对象语言日渐流行,它能够清楚地描述操作系统各个部分的接口。Nachos没有用到面向对象语言的所有特征,如继承性、多态性等,所以它的代码就更容易阅读和理解。
Nachos共有五个功能模块,分别是机器模拟、线程管理、文件系统管理、用户程序虚拟存储以及网络系统。
参考资料
最新修订时间:2024-05-21 11:20
目录
概述
参考资料