複製鏈接
請複製以下鏈接發送給好友

Nachos

(Nachos操作系統)

鎖定
Nachos的全稱是“Not Another Completely Heuristic Operating System”,它是一個可修改和跟蹤的操作系統教學軟件。它給出了一個支持多線程虛擬存儲的操作系統骨架,可讓學生在較短的時間內對操作系統中的基本原理和核心算法有一個全面和完整的瞭解。
外文名
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共有五個功能模塊,分別是機器模擬、線程管理、文件系統管理、用户程序虛擬存儲以及網絡系統。