歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> 關於Unix

UNIX的優勢和不足


UNIX 好在哪裡
UNIX 如此的成功,這大大超出了它的創造者最初的設想。UNIX 成功的一個主要原因是它最初的發行發式。由於法令(consent decree)的限制,AT&T 不得不以極少的費用出售UNIX許可證和源代碼。世界各地的人們都可以索取和運行該系統。由於附帶源代碼,用戶可以分析它,更改它,告訴其他人自己所做的修改。然後AT&T 再將開多修改加入到新發行中。
在伯克利的工作更帶動了這一趨勢。總而言之,UNIX 在一種極為開放的過程〔或者說沒有過程〕中不斷發展。各國、各大洲的學術界、廠商、以及瘋狂的黑客們都為UNIX 的發展做出了貢獻。既便在UNIX 商業化之後.許多廠商也認識到開放系統的價值,將它們的成果公布於眾,制定了許多像NFS 這樣的開放規范。
最初的UNIX 設計非常精湛,井為後來版本和分支奠定了成功的基礎。它的一個最大的長處就是始終貫徹“越小越完美”的思想[ Allm 87] ,用一個小的內核提供一組必要功能的最小集。系統有許多小的實用工具完成簡單的數據處理。用戶可以通過管道機制以及可編程的shell 等工具將這些實用工具以各種方式組合起來,形成功能更強大的工具。
UNIX 的文件系統是這種小巧,簡單方式的一個典型代表。與當時使用諸如索引順序訪問方式(ISAM),層次順序訪問方式(HSAM)等復雜文件訪問方式的操作系統不同,UNIX 將文件看成是一個字節流。應用它可以在文件上建立任何數據結構,實用自己的訪問方式訪問文件,不需要文件系統的干預。
大多數系統應用都使用文本數據。例如,比較重要的系統數據庫/etc/passwd ,
/etc/fstab,以及/etc/ttys 都是普通的文本文件。盡管使用二進制的有結構的方法組織信
息會更有效,使用一般的文本可以讓用戶不必使用特殊的工具就可以訪問和處理這些文件。
文本是一件友好的,通用的,高度可移植的數據形式,可以用許多實用工具進行處理。
UNIX 另一個很突出的特點就是它簡單而統一的I/O 設備接口。UNIX 將所有的設備都用文件表示,用戶可以使用與處理文件相同的命令和系統調用集訪問設備。開發者寫程序完成I/O操作時不必考慮這個操作是對文件的,還是對用戶終端,打印機,或其他設備進行的。這一特性與shell 中的I/O 重定向一起提供了一個簡單而強大的I/O 接口。
促使UNIX 成功和流行的一個關鍵因素是它的可移植性。內核的大部分都是用C 語言寫
的。這就使其在移植到新機器時相對容易了許多。它先是用於 PDP-11,後來移植到 VAX-11
及其他許多機器、許多廠商都是開發出自己的新機器,然後簡單將 UNIX 移植到它的上面,
而不必重寫一個新的操作系統。
UNIX 的誤區在哪兒
事物總有相反的兩個方面。在贊譽UNIX 優點的同時,也不能忽略了它的缺點。對UNIX
進行如此客觀回顧的人中就有這樣一個人,他不是別人,正是DennisRitchie 本人。在1987
年 1 月 USENIX 會議中的一次 UNIX 回顧會晤中,RitChie 分析了許多 UNIX 的缺點[ Ritc87] 。下面我們對其進行簡述。
盡管UNIX 最初是一個簡單的系統。它已不再是這樣了。例如,AT&T 為了高效地對數據進行緩沖和將程序移植到非UNIX 系統上,為UNIX 系統增加了標准1/O 庫。這個庫相對其底層的系統調用接口已變得越來越復雜了。例如,read 和write 系統調用是原子性的(不可分的)操作,而I/O 庫中的緩沖破壞了這種原子性。
雖然UNIX 是一個優秀的操作系統,但大多數用戶並不需要一個操作系統,他們只要有一個可以完成特定任務的系統就行了。這些用戶並不關心底層文件系統結構和進程結構是否優美。他們只需要以最少的代價運行一個特定的應用(如編輯器,商務軟件包,繪圖程序)、早期的UNIX 缺少一個簡單統一的(最好是圖形的)用戶界面,這也是阻礙UNIX 被大眾接受的一個主要因素。用Ritchie 的話來說就是,“UNIX 簡單而一致,但只有天才(至少是程序員)才能賞識它的簡潔。”
以積木方式構造上工具利弊參半。盡管它優美而且從審美角度來說非常優美,但用戶需
要具有豐富的創造力和想像力才能高效地使用這些工具。許多用戶更喜歡使用個人計算機中
有的那些已集成好的,一步到位的程序。
從某件程度上說,UNIX 也是自己成功發展的受害者。它簡單的許可證條款以及可移植性造成它不可控制的發展和擴散。人們都對 UNIX 系統進行修補,每個小組都以不同的方式進行修改,結果是他們的系統往往不兼容。起初只有兩大勢力 一 AT&T 和 BSD 。它們都有自己的文件系統,內存結構,以及自己的信號和終端處理框架。很快許多廠商都發行了自己的變體,在一定程度上保持與AT&T 版本和BSD 版本的兼容性。後來,這種局面變得更加混亂了,許多應用開發者不得個花很大的力氣才能將它們的程序移植到各種不同的UNIX 上。
由於參加標准化的人們意見不一,標准化並沒有完全成功。這主要是每個廠商都想加入
一些特有的特性來標榜自己的“產品差異”,表明自己的產品與眾不同,或者優於它們的競爭對手。
Mach 系統的主要開發人員Rechard Rashid 更進一步地探討了UNIX 的失敗的原因。在Mach系列講座的開場白中[ Rash 89] ,他解釋了他們是如何通過對UNIX 發展的調查產生了開發Mach 系統的靈感。UNIX 有一種最小化的,積木式的工具構造方法。通過將小巧簡單的工具組合在一起來構造大型的復雜的工具。但這一方法井沒有用於內核的構造。
傳統的UNIX 內核不夠靈活,不具備很好的可擴充性,也很少代碼復用的設施。隨著UNIX
的發展,開發者只簡單把代碼加人內核,結果內核成了新功能的“傾銷地”。很快內核就膨脹起來.缺少模塊化,而且越來越復雜。Mach 試圖用一種新方法來解決它,它使用一組精簡的抽象概念從底向上重新編寫操作系統。現代UNIX 采同不同的方式解決這一問題,為若干子系統增加靈活的框架結構。
Copyright © Linux教程網 All Rights Reserved