Linux是一個主要運行於PC機的UNIX克隆系統,它不僅具備UNIX系統的全部特征,而且與POSIX標准兼容。Linux的功能包括真正的多任務、虛擬內存、共享庫、需求裝載、共享的寫時復制程序執行、優秀的內存管理以及TCP/IP網絡支持等。它的發行遵守GNU的通用公共許可證。而Windows NT操作系統卻和Linux有著完全不同的開發模式和發展歷史。下面對兩種操作系統進行一些比較。
■ 進程管理及調度:Linux開銷較小
在進程管理及調度方面,Linux是一個單塊式的操作系統,操作系統通常在用戶進程的內存空間內進行,可免去發生系統調用時的進程切換開銷。Windows NT是一個准微內核操作系統,許多功能以單獨的進程實現,從而提高了系統的模塊化程度,但進程切換上的開銷要大一些。
Linux支持內核級的線程,但它將線程定義為進程的另一個“執行上下文”,從而簡化了進程/線程之間的關系和調度程序的設計,它的線程庫提供了和POSIX兼容的線程同步機制。Windows NT支持的線程是典型的進程/線程模型。它的線程同步機制和Linux類似。Linux中進程是基本的調度單位,它提供了三種調度策略。
■ 進程間通信機制:Linux更靈活
在進程間通信機制上,Linux提供了標准的UNIX IPC機制,而Windows NT則在基本IPC機制的基礎上,提供了許多直接面向應用程序的高級IPC機制。從本質上看,Linux的IPC機制接近於IPC原語,比較底層,提供了最大的靈活性,也可以在此基礎上建立更加復雜的高級IPC機制,而Windows NT在原語級提供的IPC機制有管道、命名管道、消息傳遞、共享內存、信號量等。
■ 內存管理:Linux優於Windows NT
在內存管理上,Linux 和Windows NT在面對相同的進程地址空間大小時,對內存布局的使用方式不同。Windows NT實際只為進程准備了2GB弱的可用虛擬地址空間,而Linux中的進程地址空間使用更靈活些。
在虛擬內存的使用上,Linux內核為用戶管理了非常多的細節問題,用戶可以認為自己真正擁有4GB地址空間,而不用關心虛擬內存是否提交物理存儲等問題。Windows NT則為程序員提供了多種虛擬內存使用方案,雖然這些方案的使用有些復雜,但卻提供了一定程度上的靈活性。它也支持DOS和Win16程序的執行,但為了提供這種兼容性,它的內存管理付出了極高的性能代價。
Linux 和Windows NT雖然均提供了內存共享技術,但它們的實現有些細微的差別。Linux提供給用戶的接口非常簡單,只需將自己的虛擬內存空間區域附加到共享內存對象之上。Windows NT則是通過內存映射文件提供共享內存機制,從使用上講,略顯復雜。
Linux的內存交換管理靈活性很強,用戶可以在普通的文件系統上建立“無洞”的文件作為交換空間,還可以使用多個交換文件,從而可以動態增加交換文件。它也提供了利用交換分區作為交換空間的方法,此方法是優選的交換空間方案。Windows NT的頁面文件很難擺脫碎片化的危險,為了保證它采用無碎片的頁面文件,必須采取一定的措施。
Linux 和Windows NT在高速緩存的使用上有一些共同之處,均盡量采用系統的全部空閒RAM作為高速緩存區域,但Linux在高速緩存管理上有一些獨到之處,這是它性能之所以高的根本原因所在。
■ 安全性:Linux具有一定優勢
在安全性方面,Linux采用的是UNIX在安全性方面成功的技術,盡管有一些安全漏洞,但因為設計上的開放性,這些漏洞能夠在很快的時間內發現並得到解決。Windows NT雖然采用的ACL技術,更加復雜和嚴密,但因為其密碼加密步驟過於簡單,密碼容易被破解。安全性設計上的不公開性也導致其有很多安全上的漏洞。