您好,登錄后才能下訂單哦!
Douglas McIlroy是Unix系統上管道機制的發明者,也是Unix文化的締造者之一。他歸納的Unix哲學如下:
程序應該只關注一個目標,并盡可能把它做好。讓程序能夠互相協同工作。應該讓程序處理文本數據流,因為這是一個通用的接口。
更加簡化的版本是:做一件事,做好它。雖然只有第三條是特指Unix系統的,但Unix開發者們常常同時強調這三個信條。
羅勃·派克在他的《Notes on Programming in C》中提到了以下格言。雖然這些規則是關于程序設計的,但作為Unix哲學絲毫不為過:
規則一:你永遠不會知道你的程序會在什么地方耗費時間。程序的瓶頸常常出現在意想不到的地方,因此在你確信找到瓶頸后再動手優化代碼吧。
規則二:測試代碼。只有在你詳細測試了代碼,并且發現一部分代碼耗費了絕大部分的運行時間時再對程序作速度優化。
規則三:功能全面的算法(fancy algorithm)在處理小規模問題時效率很低,這是因為算法時間效率中的常量很大,而問題往往規模很小。除非你知道你遇到的常常是復雜的情況,否則就讓代碼丑陋但是簡單而高效吧。(即使問題規模確實很大,也首先嘗試第二條規則。)
規則四:功能全面的算法比簡單的算法更容易產生Bug,更難實現。盡量使用簡單的算法和數據結構。
規則五:數據決定一切。如果選擇的數據結構能很好的管理數據,算法部分往往不言自明。記住,數據結構,而非算法,才是編程的關鍵。
規則六:沒有第六條規則。
Pike的第一、二條規則重申了高德納的著名格言:“過早的優化是一切罪惡的根源。”[1]Pike的第三、四條規則被肯·湯普遜改述成:“疑惑不定之時最適合窮舉。”事實上,這兩條規則也是KISS原則的具體表現。規則五在之前Fred Brooks的人月神話中也被提及。Jon Bentley的《Programming Pearls》中也有一章闡述了相同的設計哲學。此規則作為“如果你的數據結構很好,那么控制它的算法就無關痛癢了”的例子常常被簡化成“簡約地寫代碼,聰明地用數據”。第六條規則當然只是Pike針對蒙提·派森之小品Bruces sketch的幽默發揮而已了。
1994年,X Window系統開發組的成員Mike Gancarz根據他自己的Unix系統經驗以及和其他領域使用Unix系統的資深程序員們的討論結果,寫成了《The UNIX Philosophy》,提出了9條訓格之言:
一:小即是美。
二:讓程序只做好一件事。
三:盡可能早地創建原型。
四:可移植性比效率更重要。
五:數據應該保存為文本文件。
六:盡可能地榨取軟件的全部價值。
七:使用shell腳本來提高效率和可移植性。
八:避免使用可定制性低下的用戶界面。
九:所有程序都是數據的過濾器。
此外還有十條原則則并不為所有人認同,甚至還是爭論的焦點(如宏內核和微內核之爭):
一:應該允許用戶定制操作環境。
二:讓操作系統核心小而輕。
三:使用小寫字母并盡量簡短。
四:節約紙張,保護樹林。
五:沉默是金。
六:并行地思考。
七:部分加部分大于整體。
八:尋找問題的帕雷托法則。
九:程序隨需求而增長(Worse is better)。
十:層級地思考。
一個Unix內核-核心或操作系統的關鍵組件-包括像進程管理,內存管理,文件管理,設備管理和網絡管理的許多內核子系統。
每個子系統有一些功能:
并發性:由于Unix是一個多操作系統,多程序同時運行,以提高系統的性能。
虛擬內存(VM):內存管理子系統實現虛擬內存的概念,用戶不必擔心可執行程序的大小和RAM的大小。
分頁:它是一種技術,以盡量減少內部以及外部碎片在物理內存中。
虛擬文件系統(VFS):VFS是一個文件系統,用來幫助用戶隱藏不同的文件系統的復雜性。用戶可以使用相同的標準文件系統調用來訪問不同的文件系統。
內核提供這些和其他基本服務的中斷和陷阱處理,用戶和系統空間之間的分離,系統調用,調度,定時器和時鐘處理,文件描述符管理。
的Unix架構概念的一些主要功能是:
Unix系統使用集中式的管理制度和流程活動的操作系統內核。
所有非內核軟件被組織成獨立的,核心管理流程。
Unix系統搶先式多任務:可以同時運行多個進程,或者在小的時間片,幾乎在同一時間,任何進程都可以被打斷,并搬出由內核執行。這就是所謂的線程管理。
文件被存儲在一個分層文件系統磁盤上,與一個頂級整個系統中的位置(根,或“/”),文件和目錄,子目錄,子目錄的子目錄,等它下面。
除了 少數例外,設備和管理的進程之間的通信的某些類型的文件或假文件內的文件系統層次結構可見。這就是所謂的一切都是文件。然而,Linus Torvalds的狀態,這是不準確的,可以更好地表述為“一切是一個字節流”。[1]
UNIX操作系統支持下列特性和功能:
多任務和多用戶。
編程接口。
使用文件作為抽象的設備和其它的目的。
內置的聯網。(TCP / IP是標準的)
持久的系統服務進程名為“守護”和由init或inetd的管理。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。