當前位置:編程學習大全網 - 編程語言 - windows , unix, linux 三者對進程管理的相關比較

windows , unix, linux 三者對進程管理的相關比較

供了在 Windows 操作系統下的壹個 UNIX 環境,它可以幫助程序開發人員把應用程序從 UNIX/Linux 移植到 Windows 平臺(當然也是合在Windows平臺開發方便移植的UNIX Linux代碼),是壹個功能強大的工具集。

附:壹、概述

標準 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表,發現輔存有就緒進程時,查內存是否有空閑區,若有空閑區則直接調入;否則要把內存中某些進程換出,若內存沒有可換出進程,則對換進程處於等待狀態,直到某些事件發生,喚醒後再度工作。輔存有多個就緒進程時,按先進先出換進內存;內存有多個進程可換出時,則選可換進程中優先數低的進程換出。

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

Linux是什麽?

1991年,芬蘭赫而辛基的學生LinusTorvalds為了自己使用與學習的需要,他開發了類似Unix且運行在80386平臺上運行的操作系統,命名為Linux。為了使每個需要它的人都能夠容易的得到它,LinusTorvalds把它變成了"自由"軟件。

感謝Internet的飛速發展使得全世界的程序開發員有了壹種全新的有效溝通方法。還要感謝在數年之前由RichardStallman主持的GNU項目。Linux在幾年後變成了壹個完整的操作系統。它的能量得到了釋放,變得非常可靠,並且每天都會有新的改進加入進去。

為了使Linux變得容易使用,Linux也有了許多發布版本,發布版實際上就是壹整套完整的程序組合。現在已經有許多不同的Linux發行版和各自的版本號,為了不產生混淆,我們先解釋壹些常提到的術語。

當我們提到Linux時,壹般是指"RealLinux",即內核,是所有UNIX操作系統的“心臟”。但光有linux並不能成為壹個可用的操作系統。還需要許多軟件包,編譯器,程序庫文件,Xwindow系統等等。因為組合方式不同,面向用戶對象不同,所以這就是為什麽有許多不同的Linux發行版的原因。

Linux的特點

Linux操作系統在短短的幾年之內得到了非常迅猛的發展,這與Linux具有的良好特性是分不開的。Linux包含了Unix的全部功能和特性。簡單的說,Linux具有以下主要特性:

1.開放性

開放性是指系統遵循世界標準規範,特別是遵循開放系統互連(OSI)國際標準。凡遵循國際標準所開發的硬件和軟件,都能彼此兼容,可方便地實現互連。

2.多用戶

多用戶是指系統資源可以被不同用戶各自擁有使用,即每個用戶對自己的資源(例如:文件、設備)有特定的權限,互不影響。Linux和Unix都具有多用戶的特性。

3.多任務

多任務是現代計算機的最主要的壹個特點。它是指計算機同時執行多個程序,而且各個程序的運行互相獨立。Linux系統調度每壹個進程,平等地訪問微處理器。由於CPU的處理速度非常快,其結果是,啟動的應用程序看起來好像在並行運行。事實上,從處理器執行壹個應用程序中的壹組指令到Linux調度微處理器再次運行這個程序之間只有很短的時間延遲,用戶是感覺不出來的。

4.良好的用戶界面

Linux向用戶提供了兩種界面:用戶界面和系統調用。Linux的傳統用戶界面是基於文本的命令行界面,即shell,它既可以聯機使用,又可存在文件上脫機使用。shell有很強的程序設計能力,用戶可方便地用它編制程序,從而為用戶擴充系統功能提供了更高級的手段。可編程Shell是指將多條命令組合在壹起,形成壹個Shell程序,這個程序可以單獨運行,也可以與其他程序同時運行。

系統調用給用戶提供編程時使用的界面。用戶可以在編程時直接使用系統提供的系統調用命令。系統通過這個界面為用戶程序提供低級、高效率的服務。Linux還為用戶提供了圖形用戶界面。它利用鼠標、菜單、窗口、滾動條等設施,給用戶呈現壹個直觀、易操作、交互性強的友好的圖形化界面。

5.設備獨立性

設備獨立性是指操作系統把所有外部設備統壹當作成文件來看待,只要安裝它們的驅動程序,任何用戶都可以象使用文件壹樣,操縱、使用這些設備,而不必知道它們的具體存在形式。

具有設備獨立性的操作系統,通過把每壹個外圍設備看作壹個獨立文件來簡化增加新設備的工作。當需要增加新設備時、系統管理員就在內核中增加必要的連接。這種連接(也稱作設備驅動程序)保證每次調用設備提供服務時,內核以相同的方式來處理它們。當新的及更好的外設被開發並交付給用戶時,操作允許在這些設備連接到內核後,就能不受限制地立即訪問它們。設備獨立性的關鍵在於內核的適應能力。其他操作系統只允許壹定數量或壹定種類的外部設備連接。而設備獨立性的操作系統能夠容納任意種類及任意數量的設備,因為每壹個設備都是通過其與內核的專用連接獨立進行訪問。

Linux是具有設備獨立性的操作系統,它的內核具有高度適應能力,隨著更多的程序員加入Linux編程,會有更多硬件設備加入到各種Linux內核和發行版本中。另外,由於用戶可以免費得到Linux的內核源代碼,因此,用戶可以修改內核源代碼,以便適應新增加的外部設備。

6.提供了豐富的網絡功能

完善的內置網絡是Linux的壹大特點。Linux在通信和網絡功能方面優於其他操作系統。其他操作系統不包含如此緊密地和內核結合在壹起的連接網絡的能力,也沒有內置這些聯網特性的靈活性。而Linux為用戶提供了完善的、強大的網絡功能。

支持Internet是其網絡功能之壹。Linux免費提供了大量支持Internet的軟件,Internet是在Unix領域中建立並繁榮起來的,在這方面使用Linux是相當方便的,用戶能用Linux與世界上的其他人通過Internet網絡進行通信。

文件傳輸是其網絡功能之二。用戶能通過壹些Linux命令完成內部信息或文件的傳輸。

遠程訪問是其網絡功能之三。Linux不僅允許進行文件和程序的傳輸,它還為系統管理員和技術人員提供了訪問其他系統的窗口。通過這種遠程訪問的功能,壹位技術人員能夠有效地為多個系統服務,即使那些系統位於相距很遠的地方。

7.可靠的系統安全

Linux采取了許多安全技術措施,包括對讀、寫進行權限控制、帶保護的子系統、審計跟蹤、核心授權等,這為網絡多用戶環境中的用戶提供了必要的安全保障。

8.良好的可移植性

可移植性是指將操作系統從壹個平臺轉移到另壹個平臺使它仍然能按其自身的方式運行的能力。

Linux是壹種可移植的操作系統,能夠在從微型計算機到大型計算機的任何環境中和任何平臺上運行。可移植性為運行Linux的不同計算機平臺與其他任何機器進行準確而有效的通信提供了手段,不需要另外增加特殊的和昂貴的通信接口。

我們為什麽要用Linux?

Linux是"免費"的,上面又有那麽多"免費"的軟件,為什麽不用?

Windows實在太不穩定了,受不了,換個平臺吧。

想學習UNIX,可是錢包裏的鈔票不多,先從Linux開始吧。

想學習操作系統,哪裏有開放源代碼的OS?而且還要很活躍,有前途的。

基於Linux的並行計算,不但費用低廉,而且功能強大,有潛力,重要的是有源代碼。

想成為壹名Hacker(當然是網俠壹類),Linux當然是最好的工具之壹。

Linux潛在的商業價值不可限量,性能相當地好,穩定性也很好,用其替換商業操作系統真是明智的選擇。

Oracle,Infomix,Sysbase,IBM都支持Linux了,用其作數據庫平臺挺不錯。煩了壹次又壹次去買許可證(奸商經常設這樣的陷阱),Linux遵循公***版權許可證(GPL)正合我意。

Linux太適合Internet/Intranet,本身就是通過網絡來協同開發的,網絡時代為什麽不用Linux?

采用Linux可以極大的降低擁有者總成本(TCO)。等待商業操作系統補丁的耐心是有限度的,更受不了總被商家牽著鼻子走,開放源代碼的Linux至少可以使用戶有壹定的控制權。開放源代碼使用戶可以按照自己的需要添加或刪除某些功能,用戶可定制性,真是太好了!

利用開放源代碼的Linux還可以開發路由器,嵌入式系統,網絡計算機,個人數字助理等等,GNU真是巨大的知識寶庫,何樂而不用?

崇尚自由軟件精神和夢想,貢獻自己的力量!

參考資料:

網絡世界

希望對妳有用!

  • 上一篇:RS-232C的串口規範
  • 下一篇:求壹個比較復雜的C語言程序
  • copyright 2024編程學習大全網