Nachos的特點功能介紹
在本科的作業系統教學中,能夠提供一個展示真實作業系統是如何工作的工程環境是很重要的,但同時也要求這個工程環境便於學生的理解和修改,所以我們採用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共有五個功能模組,分別是機器模擬、執行緒管理、檔案系統管理、用戶程式和虛擬存儲以及網路系統。