Unix是20世紀70年代初出現的一個作業系統,除了作為網路作業系統之外,還可以作為單機作業系統使用。Unix作為一種開發平台和台式作業系統獲得了廣泛使用,主要用於工程套用和科學計算等領域。
基本介紹
- 中文名:尤內克斯
- 外文名:UNIX
- 學科:計算機科學
- 類型:多用戶、多任務作業系統
- 設計原則:簡潔至上、提供機制而非策略
發展歷史,特點,功能模組,處理機和進程管理模組,存儲管理模組,設備管理模組,檔案系統,用戶界面,UNIX標準化,ISO C,IEEE POSIX,SUS,FIPS,UNIX版本,類Unix作業系統,與Linux對比,
發展歷史
UNIX系統是一個分時系統。最早的UNIX系統於1970年問世。此前,只有面向批處理作業的作業系統,這樣的系統對於需要立即得到回響的用戶來說是太慢了。在60年代末,Kenneth Thompson和Dennis Ritchie都曾參加過互動方式分時系統Multics的設計,而開發該系統所使用的工具是CTSS。這兩個系統在作業系統的發展過程中都產生過重大影響。在此基礎上,在對當時現有的技術進行精選提煉和發展的過程中,K.Thompson於1969年在小型計算機上開發UNIX系統,後於1970年投入運行。
1972年,DennisRitchie開發出C語言,用來改寫原來用彙編語言編寫的UNIX,由此產生了UNIX VersionV。1974年,Kenneth Thompson和Dennis Ritchie合寫的“The UNIX Time-Sharing System”在Communication of ACM上發表,正式向外界披露了UNIX系統。
當時,PDP-11系列小型計算機在世界各地已經得到廣泛套用,UNIX系統一開發後便廣泛配備於美國各大學的PDP-11系列計算機上,由此為UNIX的廣泛套用創造了物質條件。
1978年,UNIX Version VI發表,隨後又於1979年用於VAX-11超級小型機。以後,不斷地出現各種新的版本。美國電話電報公司分別於1981年和1983年發表AT&T UNIX SystemII和UNIX SystemV。美國加州大學伯克萊分校也先後發表了UNIX的版本BSD4.1,BSD4.2和BSD4.3。
UNIX系統的用戶日益增多,套用範圍也日益擴大。無論在各種類型的微型機、小型機,還是在中、大型計算機,以及在計算機工作站甚至個人計算機上,很多都已配有UNIX系統。不僅新推出的機型配有UNIX系統,而且一些歷史較久的生產廠商,也競相將原有機型配上UNIX系統以便打開銷路、爭取市場。
2020年,蘋果發布作業系統升級版本,將UNIX作業系統的強大功能和蘋果電腦的易用性相結合,提高了電腦的運行速度和電池壽命。
特點
UNIX系統在計算機作業系統的發展史上占有重要的地位。它確實對已有技術不斷作了精細、謹慎而有選擇的繼承和改造,並且,在作業系統的總體設計構想等方面有所發展,才使它獲得如此大的成功。UNIX系統的主要特點表現在以下幾方面:
1、UNIX系統在結構上分為核心程式(kernel)和外圍程式(shell)兩部分,而且兩者有機結合成為一個整體。核心部分承擔系統內部的各個模組的功能,即處理機和進程管理、存儲管理、設備管理和檔案系統。核心程式的特點是精心設計、簡潔精幹,只需占用很小的空間而常駐記憶體,以保證系統的高效率運行。外圍部分包括系統的用戶界面、系統實用程式以及應用程式,用戶通過外圍程式使用計算機。
UNIX的kernel是作業系統的樞紐,它為程式分配時間和記憶體,處理檔案存儲和回響系統調用的通信。shell作為用戶和核心之間的一個接口。當用戶登錄時,登錄程式檢查用戶名和密碼,然後啟動另一個稱為shell的程式。shell是一個命令行解釋器(CLI--command line interpreter)。它解釋用戶輸入的命令,並安排它們被執行。這些命令本身就是程式:當它們終止時,shell會給用戶另一個提示。
2、UNIX系統提供了良好的用戶界面,具有使用方便、功能齊全、清晰而靈活、易於擴充和修改等特點。UNIX系統的使用有兩種形式:一種是操作命令,即shell語言,是用戶可以通過終端與系統發生互動作用的界面;另一種是面向用戶程式的界面,它不僅在彙編語言,而且在C語言中向用戶提供服務。
3、UNIX系統的檔案系統是樹形結構。它由基本檔案系統和若干個可裝卸的子檔案系統組成,既能擴大檔案存儲空間,又有利於安全和保密。
4、UNIX系統把檔案、檔案目錄和設備統一處理。它把檔案作為不分任何記錄的字元流進行順序或隨機存取,並使得檔案、檔案目錄和設備具有相同的語法語義和相同的保護機制,這樣既簡化了系統設計,又便於用戶使用。
5、UNIX系統包含有非常豐富的語言處理程式、實用程式和開發軟體用的工具性軟體,向用戶提供了相當完備的軟體開發環境。
6、UNIX系統的絕大部分程式是用C語言編程的,只有約占5%的程式用彙編語言編程。C語言是一種高級程式設計語言,它使得UNIX系統易於理解、修改和擴充,並且具有非常好的移植性。
7、UNIX系統還提供了進程間的簡單通信功能。
UNIX中的所有東西要么是檔案,要么是進程。進程是一個執行中的程式,由一個唯一的PID(進程標識符)來識別;檔案是一個數據的集合。它們是由用戶使用文本編輯器、運行編譯器等創建的。
功能模組
作業系統要管理計算機系統的硬體資源和軟體資源,以便為用戶所使用。硬體資源一般指CPU(中央處理機)、存儲器(記憶體和外存)、外部設備等。軟體資源是指系統程式和數據,即作業系統、系統實用程式及套用軟體,以及用戶的程式和數據,它們都以檔案的方式存放在存儲器中。作業系統由若干個功能模組有機地聯繫在一起,協調地進行工作。這些模組是:處理機和進程管理模組、存儲管理模組、設備管理模組、檔案系統和用戶界面。
處理機和進程管理模組
由於處理機(CPU)是計算機中關鍵的資源,進程的執行與CPU密切相關,因此處理機和進程管理模組可簡稱為進程管理模組。確定哪些作業將調入記憶體運行和完成運行後撤出記憶體的工作稱為作業調度。把如何控制一個作業在運行階段的三個狀態間的轉換稱為進程調度。因而,如何充分發揮資源的利用率,使回響時間短,使各用戶作業等待執行的時間最短,是制訂相應的作業調度算法和進程調度算法的原則。只是在不同的作業系統中,對以上目標有不同的著重點,因而調度算法也就有所不同。
存儲管理模組
存儲管理是對作業從進入就緒狀態起到運行結束之間所使用的存儲器(包括記憶體和外存)進行管理。可以將存儲管理模組的任務分為存儲分配、地址映射和存儲保護3部分。
存儲分配
一個程式在編譯和連結後,得到一個稱為記憶體映像的檔案。該檔案描述了這個程式在運行時所需要的記憶體大小,其中包括代碼和數據區的地址。這些地址稱為邏輯地址,並且以首地址0為參考地址。每當一個作業調入記憶體,進入就緒狀態,存儲管理模組就要根據可利用的記憶體空間與作業所需要的記憶體兩者進行計算,給該作業分配相應的記憶體空間。
地址映射
將一個作業裝入記憶體,意味著一個進程將被創建。存儲管理模組會把該作業的映像檔案首地址(為零)對準記憶體中進程的首地址。這個進程的首地址或起始地址是記憶體中的物理地址,稱為偏移量(offset)。映像檔案的邏輯地址加上偏移量,得到記憶體中的地址值均為物理地址。計算邏輯地址到物理地址的轉換工作稱為地址映射。映像中所有的邏輯地址都可轉換為物理地址。
記憶體保護
記憶體空間總是被若干個進程分享,其中包括作業系統本身要常駐在記憶體中的那一部分。記憶體保護的任務是對記憶體空間中已劃分出的區域,知道它們各屬於哪些進程,並且知道每個進程有權訪問的區域。每當一個進程執行過程中需要訪問某個地址時,存儲管理模組就要檢查一下這個進程是否有權訪問這個物理地址。通常,每個進程在記憶體中的區域是該進程可以訪問的合法地址。如果訪問的地址落在該進程的區域之外,即產生了非法訪問。一旦遇到非法訪問,記憶體保護就要拒絕訪問,並進行出錯處理。
設備管理模組
設備管理模組的任務是為用戶提供方便和統一的界面,並根據作業對設備的申請,合理地分配這些資源,根據設備的性能和作用對設備分類,再用不同的驅動程式去驅動這些設備工作,以提高設備的效率。
檔案系統
檔案系統又可稱為信息管理模組,或者檔案管理模組,主要負責對軟體資源的管理。所有的軟體資源都以檔案的形式存放在存儲介質中,並以檔案為單位,在計算機中傳遞信息。因此,檔案被定義為一組相關信息元素的集合。所有的檔案在計算機中形成一個檔案系統,雖然與作業系統的一個管理模組同名,但是由於它們出現的場合及上下文不同,通常是可以區分的。
用戶界面
用戶界面(User interface)又稱為用戶接口。用戶通過用戶接口使用作業系統。良好的用戶接口將使用戶感覺到作業系統的友好和方便。用戶接口通常包括作業控制語言、操作語言和系統調用。
UNIX標準化
ISO C
ISO C標準由ISO/IEC的C程式設計語言國際標準工作組維護和開發。ISO C標準的意圖是提供C程式的可移植性,使其能適合於大量不同的作業系統,而不只是適合UNIX系統。此標準不僅定義了C程式設計語言的語法和語義,還定義了其標準庫。
1999年,ISO C標準被更新,並被批准為ISO/IEC 9899:1999,它顯著改善了對進行數值處理的套用軟體的支持。除了對某些函式原型增加了關鍵字restrict外,這種改變並不影響本書中描述的POSIX接口。restrict關鍵字告訴編譯器,哪些指針引用是可以最佳化的,其方法是指出指針引用的對象在函式中只通過該指針進行訪問。
1999年以來,已經公布了3個技術勘誤來修正ISO C標準中的錯誤,分別在2001年、2004年和2007年公布。如同大多數標準一樣,在批准標準和修改軟體使其符合標準兩者之間有一段時間延遲。隨著供應商編譯系統的不斷演化,對最新ISO C標準的支持也就越來越多。
IEEE POSIX
POSIX是一個最初由IEEE(Institute of Electrical and Electronics Engineers,電氣和電子工程師學會)制訂的標準族。POSIX指的是可移植作業系統接口(Portable Operating System Interfacc)。它原來指的只是IEEE標準1003.1-1988(作業系統接口),後來則擴展成包括很多標記為1003的標準及標準草案。
SUS
Single UNIX Specification(SUS,單一UNIX規範)是POSIX.1標準的一個超集,它定義了--些附加接口擴展了POSIX.1規範提供的功能。POSIX.1相當於Single UNIX Specification中的基本規範部分。
POSIX.1中的X/Open系統接口(X/Open System Interface,XSI)選項描述了可選的接口,也定義了遵循XSI(XSI conforming)的實現必須支持POSIX.1的哪些可選部分。這些必須支持的部分包括:檔案同步、執行緒棧地址和長度屬性、執行緒進程共享同步以及XOPEN__UNIX符號常量。只有遵循XSI的實現才能稱為UNIX系統。
FIPS
FIPS代表的是聯邦信息處理標準(Federal Information Processing Standard),這一標準是由美國政府發布的,並由美國政府用於計算機系統的採購。FIPS151-1(1989年4月)基於IEEE標準1003.1-1988及ANSIC標準草案。此後是FIPS151-2(1993年5月),它基於IEEE標準1003.1-1990。在POSIX.1中列為可選的某些功能,在FIPS151-2中是必需的。所有這些可選功能在POSIX.1-2001習中已成為強制性要求。
UNIX版本
Open Solaris
在UNIX的各發行版中,Open Solaris是唯一一個由商業版轉為開放原始碼的個例。
Oracle Solaris
在UNIX商業版中,Solaris是一個非常優秀的作業系統。
IBM AIX
AIX(Advanced Interactivee Xecutive)是IBM公司所有的UNIX作業系統。AIX源自於System V Release 3,運行在IBM公司的Power PC硬體架構之上。
HP-UX
HP-UX(Hewlett Packard UNIX,HPUX)是美國惠普公司在System v的基礎上開發的UNIX作業系統。
UNIX V6
1975年發表的UNIX V6版是比較成熟的版本,貝爾實驗室免費向美國各大學提供該版本,並開始廣泛地配備於各大學的PDP-11系列計算機上。1977年,UNIX首次移植到非PDP類型的計算機上。
BSD UNIX
除了貝爾實驗室外,另一個使用比較廣泛的UNIX版本是美國加州大學貝克利分校開發的BSD UNIX,該版本大量安裝在SUN工作站上。1993年推出了4.4BSD版本。BSD是網路的主要平台,對DARPA的TCP/IP提供了支持,其中的網路檔案系統(NFS)提供了與很多計算機機種的連線,NFS及AT&T開發的遠程檔案共享(RFS)使UNIX系統在網路支持方面保持領先地位。
Solaris
Solaris曾是使用最廣泛、最成功的商業UNIX實現版本。Sun公司的作業系統最初叫做Sun OS,主要基於BSD UNIX版本。
SCO UNIX(x86)
SVR3.2,影響較大的PC UNIX。
Ultrix(DEC)
根據4.2BSD再加上許多4.3BSD的東西。
Xenix(x86)
Intel硬體平台上的UNIX,以SVR2為基礎。
類Unix作業系統
類Unix作業系統具有可靠性高、安全性強和資料庫支持功能強大等優點,已成為最為安全、可靠、流行的大型伺服器作業系統,被廣泛套用於各行業的工業伺服器設備。然而,此類系統存在操作複雜、普適性低以及缺乏有效監測與維護手段等問題,並存在重要數據丟失和系統崩潰的風險,大幅縮短了硬體設備使用壽命。
常用的類Unix系統伺服器硬體檢測方法包括基於Linux Live技術的檢測方法、基於Windows togo技術的檢測方法和基於類Unix系統硬體檢測軟體的方法。雖使用Linux Live技術能抽取出開源軟體的原始碼,靈活定製硬體自動檢測軟體及生成所需的精簡版檢測報告。但由於Linux Live系統自帶的軟體驅動庫版本老舊且不完整,在不同硬體配置機器間的檢測中,需耗費大量時間從系統ISO驅動檔案庫中查找及安裝驅動程式(>30min),且常由於缺乏與最新伺服器硬體匹配的驅動檔案,造成系統無法啟動。基於Windows togo技術的檢測方法雖擁有完整的系統,但相較於基於Linux Live技術的檢測方法需要占用的隨身碟空間大(16GB以上),且對於隨身碟的讀取速度要求過高。而基於類Unix系統硬體檢測軟體的方法又存在檢測功能單一、兼容性不足和操作難度大的問題。
與Linux對比
UNIX和Linux的授權方式不同
從根本上講,UNIX和Linux最大的區別在於前者是對原始碼實行智慧財產權保護的傳統商業軟體。在UNIX發展初期,當時的UNIX著作權歸AT&T公司所有。為了促進UNIX的發展,AT&T公司以低廉甚至免費的許可將UNIX源碼授權給學術機構做研究或教學之用,許多機構在此源碼基礎上加以擴充和改進,形成了所謂的UNIX衍生版,這些衍生版反過來也促進了UNIX的發展。
後來AT&T公司意識到了UNIX的商業價值,不再將UNIX源碼授權給學術機構,並對之前的UNIX及其變種聲明了著作權權利。這對UNIX的發展產生了很大的影響。在隨後的幾十年中,UNIX的發展經常伴隨著產權糾紛。對於UNIX來說,套用比較廣泛的發行版大多數都是商業公司來維護,例如OracleSolaris、IBMAIX以及HPUX等。
Linux從一開始就是遵循GNU通用公共許可協定(GNU General Publice License,簡稱GNU GPL或GPL),GPL授予程式接受人以任何目的運行此程式的自由、再發行複製件的自由以及改進程式、並公開發布改進的自由。因此,任何個人或者公司都可以在GPL的允許範圍之內對Linux的代碼進行修改,並且進行再發行。另外,Linux可以運用於任何的領域,包括商業套用。
UNIX和Linux不存在技術上面的傳承關係
儘管Linux的設計思想受到了MINIX的很大影響,但是這種影響並不是技術上的,更多的是理念上的。Linux並沒有使用UNIX的一行代碼,是Linux完全從頭構建的作業系統。因此,Linux不是UNIX的衍生版,它是一個全新的作業系統。
UNIX和Linux對於硬體的要求不同
由於長期以來,UNIX都是由一些大型的公司在維護,因此UNIX通常與這些公司所生產的硬體相配套。例如,Oracle Solaris在很長的一段時間都只有SPARC平台的版本,HP-UX可以在HP的PA-RISC處理器、Intel的Itanium處理器的電腦上運行、IBMAlX則運行在IBM的Power PC架構之上。正因為如此,很大程度上限制了UNIX的廣泛套用。
UNIX是一個功能非常全面的作業系統,在某些方面超越Linux
經過30多年的不斷發展,UNIX的一些基本技術已變得十分成熟,有的已成為各類作業系統的常用技術。無數的實踐表明,UNIX是能達到大型主機可靠性要求的少數作業系統之一。許多UNIX大型:主機和伺服器在國內外的大型企業中每天24小時不間斷地運行。例如,不少大企業或政府部門,將其整個企業/部門信息系統建立並運行在以UNIX為主伺服器的客戶機/伺服器架構上。
Linux成功地模仿了UNIX系統和功能,它能夠在普通PC計算機上實現全部的UNIX特性,具有多任務、多用戶的能力。更為重要的是,Linux是一個開放原始碼的產品,任何個人或者公司都可以修改Linux核心的原始碼,實現或者增強自己想要的功能。
實際上,UNIX與Linux的區別還有很多,例如,UNIX擁有強大的網路功能,作為網際網路基石的TCP/IP協定就是在UNIX系統上開發和發展起來的。UNIX多用於超級計算機、小型機或者工作站,這些技術的成長與UNIX是分不開的。UNIX是歷史上影響最大、最成功的作業系統。
聯繫
Linux的起源可以追溯到古老的UNIX系統。正因為受到了UNIX的影響,才誕生了Linux。Linux繼承了UNIX的許多優良傳統,例如強大的網路功能、完善的命令以及良好的健壯性與穩定性。無論是從外觀上,還是從功能上,UNIX與Linux都是非常相似的。例如,UNIX的大部分常用命令都可以在Linux中找到相應的命令。
另外,Linux同樣是一個遵循POSIX標準的作業系統。因此,許多UNIX上面的套用可以非常方便地移植到Linux上面。同樣,Linux上面的套用也可以非常方便地轉移到UNIX上面。