當前位置:編程學習大全網 - 源碼下載 - 關於UNIX

關於UNIX

壹、概述

標準 UNIX 操作系統是壹個交互式的分時系統,提供了壹個支持程序開發全過程的基礎和環境,可以支持40個終端用戶。UNIX系統是由美國電報電話公司(AT&T)下屬的Bell實驗室的兩名程序員K.湯普遜(Ken Thompson)和D.裏奇(Dennis Ritchie)於1969~1970年研制出來的。UNIX問世以來十分流行,它運行在從高檔微機到大型機各種具有不同處理能力的機器上。目前,UNIX除了可在PDP-11 、DEC公司的VAX-11系統的各種機型上運行之外,還可以在IBM的370、3300系列機和Amdahi公司、Data General公司、Hp公司的系列機上。近年來,幾乎所有的16位機、32位微型計算機都競相移植UNIX。這種情況在操作系統發展的歷史上是極為罕見的。隨著UNIX的普及,書寫系統的C語言也成為引人註目的語言,得到廣泛使用。

UNIX系統獲得了巨大的成功,這有著內在的原因和客觀的因素。客觀條件之壹是,UNIX問世之前己有許多操作系統研制成功,其中有成功的經驗,也有失敗的教訓,而UNIX的設計者正是經過認真考慮,作了適當的取舍,使UNIX站在前人肩頭上獲得成功(MULTICS用了200人年未達到原定目標,UNIX只用了2個人年);其二是,由於當時人們需要壹個使用方便、能提供良好開發環境、大小適中的系統,UNIX恰是生逄其時;其三是,UNIX是在PDP-11系列機上開發出來的,這種機器在世界上己得到廣泛應用,這為UNIX廣泛配置創造了條件。當然,UNIX成功的關鍵是在於自身的性能和特點。

UNIX的主要特點是:短小精悍、簡易有效、並具有易理解、易擴充、易移植性。

UNIX的核心程序由約10000行C語言代碼和1000行匯編語言代碼構成,被分成能獨立編譯和匯編的44個文件,每個文件又分若幹過程。這些文件可分以下三類:

⑴匯編語言文件:系統只有2個文件用匯編語言編程,包含33個匯編子程序,與機器硬件直接相關的部分,如中斷處理、系統啟動等,為了提高效率,有些頻繁使用的基本過程,也用匯編語言編寫。

⑵C語言文件:***有28個,其中包括進程管理的主要過程,它們又可分成190個子程序 。文件可以獨立編譯,經裝配程序連接裝配後就可執行。

⑶C語言全局變量文件:***14個,其中含有結構的重要說明。這類文件不能獨立編譯,而必須和某個C語言文件壹起編譯。

二、UNIX操作系統的主要特點

1.精巧的核心與豐富的實用層

UNIX系統在結構上分成內核層和實用層。核心層小巧,而實用層豐富。核心層包括進程管理、存儲管理、設備管理、文件系統幾個部分。UNIX核心層設計得非常精幹簡潔,其主要算法經過反復推敲,對其中包含的數據結構和程序進行了精心設計。因此,核心層只需占用很小的存儲空間,並能常駐內存,以保證系統以較高的效率工作。

實用層是那些能從核心層分離出來的部分,它們以核外程序形式出現並在用戶環境下運行 。這些核 外程序包含有豐富的語言處理程序。UNIX支持十幾種常用程序設計語言的編譯和解釋程序,如C、APL、FORTRAN77、PASCAL、SNOBOL、COBOL、BASIC、ALGOL68等語言及其編譯程序。還包括其他操作系統常見的實用程序,如編輯程序、調試程序、有關系統狀態監控和文件管理的實用程序等。UNIX還有壹組強有力的軟件工具,用戶能比較容易地使用它們來開發新的軟件。這些軟件工具包括:用於處理正文文件的實用程序troff,源代碼控制程序SCC

S(Source Code Control System),命令語言的詞法分析程序和語法分析程序的生成程序LEX(Generator of Lexical Analyzers)和YACC(Ye

t Another Compiler Compiler)等。另外,UNIX的命令解釋程序Shel

l也屬於核外程序 。正是這些核外程序給用戶提供了相當完備的程序設計環境。

UNIX的核心層向核外程序提供充分而強有力的支持。核外程序則以內核為基礎,最終都使用由核心層提供的低層服務,它們逐漸都成了“UNIX系統”的壹部分。核心層和實用層兩者結合起來作為壹個整體,向用戶提供各種良好的服務。

2.使用靈活的命令程序設計語言Shell

Shell首先是壹種命令語言。UNIX 的200多條命令對應著200個實用程序。Shell 也是壹種程序設計語言。它具有許多高級語言所擁有的控制流能力,如if、for、while、until、case語句,以及對字符串變量的賦值、替換、傳替參數、命令替換等能力。用戶可以利用這些功能用Shell語言寫出“Shell”程序存入文件。以後用戶只要打入相應的文件名就能執行它。這種方法易於系統的擴充。

3.層次式文件系統

UNIX系統采用樹型目錄結構來組織各種文件及文件目錄。這樣的組織方式有利於輔助存儲器空間分配及快速查找文件,也可以為不同用戶的文件提供文件***享和存取控制的能力,且保證用戶之間安全有效的合作。

4.文件和設備統壹看待

UNIX系統中的文件是無結構的字節序列。在缺省情況下,文件都是順序存取的,但用戶如果需要的話,也可為文件建立自己需要的結構,用戶也可以通過改變讀/寫指針對文件進行隨機存取。

UNIX將外圍設備與文件壹樣看待,外圍設備如同磁盤上的普通文件壹樣被訪問、***享和保護。用戶不必區分文件和設備,也不需要知道設備的物理特性就能訪問它。例如系統中行式打印機對應的文件名是/dev/lp 。用戶只要用文件的操作(write)就能把它的數據從打印機上輸出。這樣在用戶面前,文件的概念簡單了,使用也方便了。

5.良好的移植性

UNIX的所有實用程序和核心的90%代碼是用C語言寫成的,這使得UNIX成為壹個可移植的操作系統。操作系統的可移植性帶來了應用程序的可移植性,因而用戶的應用程序即可用於小型機,又可用於其他的微型機或大型機。從而大大提高了用戶的工作效率。

雖然UNIX系統取得了巨大的成功,但它也不是沒有缺點的。概括起來,對UNIX的批評有如下幾點:

1.UNIX系統的版本太多,造成應用程序的可移植性不能完全實現

UNIX是用C語言寫成的,因而容易修改和移植。UNIX也鼓勵用戶用UNIX的工具開發適合自己需要的環境,這樣造成了UNIX版本太多而不統壹。為了解決這壹問題,目前 AT&T己與四家重要的微機廠家(Inte

r,Motorola ,Zilog和National Semiconductor)合作制訂統壹的UNIX

system V版本,這將會給UNIX的標準化以重大影響。

2.UNIX系統缺少諸如實時控制、分布式處理、網絡處理能力

這壹缺點也在不斷改進中,以UNIX為基礎的分布式系統和具有實時處理能力的系統己在研制中,有的已研制成功。

3.UNIX系統的核心是無序模塊結構

UNIX系統的核心有90%是用C語言寫成的,但其結構不是層次的,故顯得十分復雜,不易修改和擴充。

UNIX系統的這些缺點比起它的成就而言是十分次要的,它的成功是輝煌的。

三、UNIX系統結構

UNIX操作系統采用以全局變量為中心的模塊結構,因而系統結構較為復雜,這主要表現在:模塊間的循環調用和文件之間的全局變量問題。

從結構上看,UNIX可以分為核心層和外殼層,核心層又分成與硬件接口的設備驅動、物理存儲塊管理的最低層及實現存儲管理、文件管理、設備管理、進程管理等功能的低層。核心的外層是系統調用,它是UNIX核心的對外接口。最外層的Shell是用戶與UNIX系統的接口,其他的各種實用程序和用戶程序也在這壹層運行。

系統結構如圖8.1所示。

1.Shell

UNIX提供的用戶接口是壹種被稱為Shell的命令語言,這種命令語言的解釋程序也稱為Shell 。在系統初始啟動時為每個用戶建立壹個Shell進程,每個Shell進程等待用戶輸入命令。命令的最簡單形式是壹個命令行,由命令名和若幹參數組成,中間用空格隔開。Shell解釋執行命令時,先區分命令名和參數,然後根據命令名找出對應的文件,把文件讀入內存,並按給出的參數解釋執行。

命令的執行是通過 fork 系統調用來完成的,Shell進程調用for

k後,fork創建壹個Shell進程的子進程且讓Shell進程等待。子進程解釋執行命令,命令執行結束時子進程調用exit系統調用完成終止子進程和釋放父進程的工作。Shell進程被釋放後,給出允許用戶輸入下壹個命令行的提示,命令的基本執行過程如圖8.2。

UNIX的交互系統要求用戶必須等待前壹行命令執行結束,在終端上出現提示符後才能輸入下壹個命令行。由於有些命令的執行時間較長,因此為了減少用戶等待時間,在UNIX系統中允許用戶使用Shell命令語言編寫程序來表示壹組命令的執行順序,用命令語言編寫成的程序稱Shell程序。Shell程序存放在文件上,需要時由命令解釋程序去執行Shell程序中的各個命令。

2.系統調用

系統調用是用戶程序請求操作系統為其服務的惟壹形式,在UNIX中把系統調用稱為程序員接口。UNIX規定用戶程序用捕俘(trap)指令請求系統服務,UNIX核心中的中斷捕俘程序根據trap的類型轉向相應的處理程序。Trap指令形式如下:

UNIX第6版***有41條系統調用,可以分成以下三類:

①與進程管理有關的系統調用,如建立子進程、等待子進程、睡眠、發信號、修改數據段大小等。

②與文件管理有關的系統調用,如建立文件、連接文件、打開文件、關閉文件 、讀文件 、寫文件以及修改當前目錄、修改文件屬性等。

③其他系統調用,如取當前用戶號 、取日歷時間 、讀取進程運行時間、改變優先數等。

在系統調用中,參數的傳遞有兩種方式。第壹種方式:在程序中通過trap指令後繼單元傳送。這壹方式又分為直接方式和間接方式。在直接方式中,允許在trap指令的後繼單元中最多可放5個參數;在間接方式中,trap指令的後繼單元放的是壹個參數區指針,在這個參數區可以存放更多的參數。第二種方式是通過寄存器R0,R1傳遞參數的。

UNIX的系統程序員界面這包括了大量的庫子程序和標題文件。標題文件定義了在系統調用中使用的復雜數據結構;庫子程序和庫函數為系統調用提供了附加的程序支持。

3.存儲管理

UNIX系統最初是在 PDP-11 上開發的,PDP-11是段式結構的存儲器,在PDP-11中把段稱作頁,每壹頁可包含若幹塊,每塊64個字節,主存以塊為單位進行分配。

存儲分配采用優先適應算法,存儲空間使用空閑區表來管理。每表占50項,每項2個單元,壹個指向相應空閑區起始塊號,另壹個指出空閑區大小。表內各項次序按空閑區地址從低到高排列,若有兩個相鄰空閑區則合並成壹個。表項內容為0,表示表尾。

由於PDP-11不支持虛擬存儲器,所以UNIX中內存用戶區和磁盤對換區的分配和釋放由存儲管理模塊管理。在對換程序的管理下內存用戶區和磁盤對換區連成壹體,起著虛擬存儲器的作用。對換進程掃描PCB表,發現輔存有就緒進程時,查內存是否有空閑區,若有空閑區則直接調入;否則要把內存中某些進程換出,若內存沒有可換出進程,則對換進程處於等待狀態,直到某些事件發生,喚醒後再度工作。輔存有多個就緒進程時,按先進先出換進內存;內存有多個進程可換出時,則選可換進程中優先數低的進程換出。

當進程要增加頁長時,可通過申請新頁、釋放舊頁來實現。若內存無足夠空間,則在輔存申請新頁,同時將進程整個換到輔存。

  • 上一篇:如何卸載英雄聯盟中的QT語音。
  • 下一篇:上海有什麽地方比較好玩?
  • copyright 2024編程學習大全網