一、計算機軟件與操作系統
功能強大的計算機自從走進了人類的生活就發揮著越來越重要的作用,隨著時代的發展,計算機已與人們的日常生活息息相關。不能不說計算機軟件日新月異的發展在此起著關鍵作用。可以這么說,離開了軟件,計算機就成了廢銅爛鐵。計算機機軟件大致可以分為兩類:系統軟件和應用軟件。系統軟件用于管理計算機資源,并為應用軟件提供一個統一的平臺。應用軟件則在系統軟件的基礎上實現用戶所需要的功能。
而操作系統(Operation System)則是最基本的系統軟件,它控制計算機的所有資源關提供應用程序開發的基礎。
二、操作系統誕生的原因
計算機是由CPU、內存、磁盤、顯卡、聲卡等許許多多設備組成的,而且這些設備的廠商眾多,品種繁多,而且不同廠商生產的同種設備雖然完成同種功能,但是具體細節卻存在千差萬別。為了正確地管理和使用這些設備來實現具體的應用,這樣程序員就得了解和掌握各種設備的工作原理。
而且對于同種設備,由于不同的硬件廠商在實現細節上的差異使得程序員再次陷入了復雜的硬件控制的深淵!必須找到一種方法使得程序員從苦海中脫離出來!多年的研究與發展終于使得這個愿望成為現實。這個解決方法就是在硬件的基礎上加載一層軟件來管理整個系統。這個軟件通過設備驅動程序來與計算機硬件打交道,通過一系列的功能模塊將整個計算機硬件系統抽象成為一個公共、統一、開放的接口—虛擬機,從而使得程序員不必再陷入各種硬件系統的具體細節!這一層軟件就是操作系統。
三、什么是操作系統
操作系統是一個大型的軟件系統,其功能復雜,體系龐大。從不同的角度看的結果也不同,正是“橫看成嶺側成峰”,下面我們通過最典型的兩個角度來分析一下。
1.從程序員的角度看
正如前面所說的,如果沒有操作系統,程序員在開發軟件的時候就必須陷入復雜的硬件實現細節。程序員并不想涉足這個可怕的領域,而且大量的精力花費在這個重復的、沒有創造性的工作上也使得程序員無法集中精力放在更具有創造性的程序設計工作中去。程序員需要的是一種簡單的,高度抽象的可以與之打交道的設備。將硬件細節與程序員隔離開來,這當然就是操作系統。從這個角度看,操作系統的作用是為用戶提供一臺等價的擴展機器,也稱虛擬機,它比底層硬件更容易編程。
2.從使用者的角度看
從使用者的角度來看,操作系統則用來管理一個復雜系統的各個部分。操作系統負責在相互競爭的程序之間有序地控制對CPU、內存及其它I/O接口設備的分配。
比如說,假設在一臺計算機上運行的三個程序試圖同時在同一臺打印機上輸出計算結果。那么頭幾行可能是程序1的輸出,下幾行是程序2的輸出,然后又是程序3的輸出等等。最終結果將是一團糟。這時,操作系統采用將打印輸出送到磁盤上的緩沖區的方法就可以避免這種混亂。在一個程序結束后,操作系統可以將暫存在磁盤上的文件送到打印機輸出。從這種角度來看,操作系統則是系統的資源管理者。
四、操作系統發展歷史
下面我們結合計算機的發展歷史來回顧一下操作系統的發展歷程。
1.第一代計算機(1945-1955):真空管和插件板
40年代中期,美國哈佛大學、普林斯頓高等研究院、賓夕法尼亞大學的一些人使用數萬個真空管,構建了世界上第一臺電子計算機。開啟計算機發展的歷史。這個時期的機器需要一個小組專門設計、制造、編程、操作、維護每臺機器。程序設計使用機器語言,通過插板上的硬連線來控制其基本功能。
這個時候處于計算機發展的最初階段,連程序設計語言都還沒有出現,操作系統更是聞所未聞!
2.第二代計算機(1955-1965):晶體管和批處理系統
這個時期計算機越來越可靠,已從研究院中走出來,走進了商業應用。但這個時期的計算機主要完成各種科學計算,需要專門的操作人員維護,并且需要針對每次的計算任務進行編程。
第二代計算機主要用于科學與工程計算。使用FORTRAN與匯編語言編寫程序。在后期出現了操作系統的雛形:FMS(FORTRAN監控系統)和IBMSYS(IBM為7094機配備的操作系統)
3.第三代計算機(1965-1980):集成電路芯片和多道程序
60年代初,計算機廠商根據不同的應用分成了兩個計算機系列,一個針對科學計算,一個針對商業應用。隨著計算機應用的深入,對統一兩種應用的計算機需求出現了。這時IBM公司試圖通過引入System/360來解決這個問題。與這個計劃配套,IBM公司組織了OS/360操作系統的開發,然后復雜的需求,以及當時軟件工程水平低下使得OS/360的開發工作陷入了歷史以來最可怕的“軟件開發泥潭”,誕生了最著名的失敗論著----《神秘的人月》。雖然這個開發計劃失敗了,但是這個愿望卻成為了計算機廠商的目標。此時,MIT、Bell
Lab(貝爾實驗室)和通用電氣公司決定開發一種“公用計算機服務系統”----MULTICS,希望其能同時支持數百名分時用戶的一種機器。結果這個計劃的研制難度超出了所有人的預料,最后這個系統也以失敗結束。不過,MULTICS的思想卻為后來的操作系統很多提示。60年代未,一位貝爾實驗室曾參加過MULTICS研制工作的計算機科學家Ken
Thompson,在一臺無人使用的PDP-7機器上開發出了一套簡化的、單用戶版的MULTICS。后來導致了UNIX操作系統的誕生。目前UNIX操作系統主導了小型機、工作站以及其他市場。也是至今最有影響力的操作系統之一,而Linux也是UNIX系統的一種衍生,下一講我們將專門介紹一下UNIX的發展歷史。
4.第四代計算機(1980-今):個人計算機
隨著計算機技術的不斷更新與發展,計算機神奇般地闖入了人們的生活,現在以低廉的價格就可以獲得強大計算能力的計算機。價格不再是阻攔計算機普及的門檻時,降低計算機的易用性就顯得十分重要!由于UNIX系統的本身特點,使得其不太適合于在運行在個人計算機上,這時就需要一種新的操作系統。在這一歷史關鍵時候,IBM公司由于低估了PC機的市場,并未使用最大的力量角逐這一市場,這時Intel公司趁機進入,成為了當今微處理器的老大。同時善于抓住時機的微軟公司的總裁比爾·蓋茨適時地進入了這一領域,用購買來的CP/M搖身一變成為MS-DOS,并憑借其成為個人計算機操作系統領域的霸主。雖然是蘋果公司在GUI方面先拔頭籌,但由于蘋果公司的不兼容、不開放的市場策略,未能擴大戰果,這時微軟又適時地進入了GUI方面,憑借WINDOWS系統再次稱雄!
五、操作系統構成
一般來說,操作系統由以下幾個部分組成:
1)進程調度子系統:進程調度子系統決定哪個進程使用CPU,對進程進行調度、管理。
2)進程間通信子系統: 負責各個進程之間的通信。
3)內存管理子系統:負責管理計算機內存。
4)設備管理子系統:負責管理各種計算機外設,主要由設備驅動程序構成。
5)文件子系統:負責管理磁盤上的各種文件、目錄!
6)網絡子系統:負責處理各種與網絡有關的東西。
六、操作系統結構設計
操作系統有多種實現方法與設計思路,下面僅選取最有代表性的三種做一簡單的敘述。
1.整體式系統結構設計 這是最常用的一種組織方式,它常被譽為“大雜燴”,也可說,整體式系統結構就是“無結構”。
這種結構方式下,開發人員為了構造最終的目標操作系統程序,首先將一些獨立的過程,或包含過程的文件進行編譯,然后用鏈接程序將它們鏈接成為一個單獨的目標程序。
Linux操作系統就是采用整體式的系統結構設計。但其在此基礎上增加了一些形如動態模塊加載等方法來提高整體的靈活性,彌補整體式系統結構設計的不足。
2.層次式系統結構設計 這種方式則是對系統進行嚴格的分層,使得整個系統層次分明,等級森嚴!這種系統學術味道較濃!實際完全按照這種結構進行設計的操作系統不多,也沒有廣泛的應用。
可以這么說,現在的操作系統設計是在整體式系統結構與層次式系統結構設計中尋求平衡。
3.微內核系統結構設計 而微內核系統結構設計則是近幾年來出現的一種新的設計理念,最有代表性的操作系統有Mach和QNX。微內核系統,顧名思義就是系統內核很小!比如說QNX的微內核只負責:
¨ 進程間的通信
¨ 低層的網絡通信
¨ 進程調度
¨ 第一級中斷處理
七、操作系統橫向比較
計算機歷史中出現了許許多多的操作系統,然后大浪淘沙,無情地淘汰了許多,只留下一些經歷過市場考驗的:
1.桌面操作系統:
1)MSDOS:Intel x86系列的PC機上的最早的操作系統,微軟公司產品,曾經統治了這個領域,現在已逐漸被自家兄弟WINDOWS
9x系列所代替,現在除了一些低檔機外已不多見。
2)Windows 9x:微軟公司產品,從Windows 3.x發展而來,現在是基于Intel
x86系列的PC機上的主要操作系統,也是現然個人電腦中裝機量最大的操作系統。面向桌面、面向個人用戶。
3)Mac OS:蘋果公司所有,界面友好,性能優異,但由于只能運行在蘋果公司自己的電腦上而發展有限。但由于蘋果電腦獨特的市場定位,現在仍存活良好。
2.服務器操作系統:
1)UNIX系列:UNIX可以說是源遠流長,是一個真正穩健、實用、強大的操作系統,但是由于眾多廠商在其基礎上開發了有自己特色的UNIX版本,所以影響了整體。在國外,UNIX系統可謂獨樹一幟,廣泛應用于科研、學校、金融等關鍵領域。但由于中國的計算機發展較為落后,UNIX系統的應用水平與國外相比有一定的滯后。
2)Windows NT系列:微軟公司產品,其利用Windows的友好的用戶界面的優勢打進服務器操作系統市場。但其在整體性能、效率、穩定性上都與UNIX有一定差距,所以現在主要應用于中小企業市場。
3)Novell Netware系列:Novell公司產品,其以極適合于中小網絡而著稱,在中國的證券行業市場占有率極高,而且其產品特點鮮明,仍然是服務器系統軟件中的長青樹。
4)Linux操作系統
功能強大的計算機自從走進了人類的生活就發揮著越來越重要的作用,隨著時代的發展,計算機已與人們的日常生活息息相關。不能不說計算機軟件日新月異的發展在此起著關鍵作用。可以這么說,離開了軟件,計算機就成了廢銅爛鐵。計算機機軟件大致可以分為兩類:系統軟件和應用軟件。系統軟件用于管理計算機資源,并為應用軟件提供一個統一的平臺。應用軟件則在系統軟件的基礎上實現用戶所需要的功能。
而操作系統(Operation System)則是最基本的系統軟件,它控制計算機的所有資源關提供應用程序開發的基礎。
二、操作系統誕生的原因
計算機是由CPU、內存、磁盤、顯卡、聲卡等許許多多設備組成的,而且這些設備的廠商眾多,品種繁多,而且不同廠商生產的同種設備雖然完成同種功能,但是具體細節卻存在千差萬別。為了正確地管理和使用這些設備來實現具體的應用,這樣程序員就得了解和掌握各種設備的工作原理。
而且對于同種設備,由于不同的硬件廠商在實現細節上的差異使得程序員再次陷入了復雜的硬件控制的深淵!必須找到一種方法使得程序員從苦海中脫離出來!多年的研究與發展終于使得這個愿望成為現實。這個解決方法就是在硬件的基礎上加載一層軟件來管理整個系統。這個軟件通過設備驅動程序來與計算機硬件打交道,通過一系列的功能模塊將整個計算機硬件系統抽象成為一個公共、統一、開放的接口—虛擬機,從而使得程序員不必再陷入各種硬件系統的具體細節!這一層軟件就是操作系統。
三、什么是操作系統
操作系統是一個大型的軟件系統,其功能復雜,體系龐大。從不同的角度看的結果也不同,正是“橫看成嶺側成峰”,下面我們通過最典型的兩個角度來分析一下。
1.從程序員的角度看
正如前面所說的,如果沒有操作系統,程序員在開發軟件的時候就必須陷入復雜的硬件實現細節。程序員并不想涉足這個可怕的領域,而且大量的精力花費在這個重復的、沒有創造性的工作上也使得程序員無法集中精力放在更具有創造性的程序設計工作中去。程序員需要的是一種簡單的,高度抽象的可以與之打交道的設備。將硬件細節與程序員隔離開來,這當然就是操作系統。從這個角度看,操作系統的作用是為用戶提供一臺等價的擴展機器,也稱虛擬機,它比底層硬件更容易編程。
2.從使用者的角度看
從使用者的角度來看,操作系統則用來管理一個復雜系統的各個部分。操作系統負責在相互競爭的程序之間有序地控制對CPU、內存及其它I/O接口設備的分配。
比如說,假設在一臺計算機上運行的三個程序試圖同時在同一臺打印機上輸出計算結果。那么頭幾行可能是程序1的輸出,下幾行是程序2的輸出,然后又是程序3的輸出等等。最終結果將是一團糟。這時,操作系統采用將打印輸出送到磁盤上的緩沖區的方法就可以避免這種混亂。在一個程序結束后,操作系統可以將暫存在磁盤上的文件送到打印機輸出。從這種角度來看,操作系統則是系統的資源管理者。
四、操作系統發展歷史
下面我們結合計算機的發展歷史來回顧一下操作系統的發展歷程。
1.第一代計算機(1945-1955):真空管和插件板
40年代中期,美國哈佛大學、普林斯頓高等研究院、賓夕法尼亞大學的一些人使用數萬個真空管,構建了世界上第一臺電子計算機。開啟計算機發展的歷史。這個時期的機器需要一個小組專門設計、制造、編程、操作、維護每臺機器。程序設計使用機器語言,通過插板上的硬連線來控制其基本功能。
這個時候處于計算機發展的最初階段,連程序設計語言都還沒有出現,操作系統更是聞所未聞!
2.第二代計算機(1955-1965):晶體管和批處理系統
這個時期計算機越來越可靠,已從研究院中走出來,走進了商業應用。但這個時期的計算機主要完成各種科學計算,需要專門的操作人員維護,并且需要針對每次的計算任務進行編程。
第二代計算機主要用于科學與工程計算。使用FORTRAN與匯編語言編寫程序。在后期出現了操作系統的雛形:FMS(FORTRAN監控系統)和IBMSYS(IBM為7094機配備的操作系統)
3.第三代計算機(1965-1980):集成電路芯片和多道程序
60年代初,計算機廠商根據不同的應用分成了兩個計算機系列,一個針對科學計算,一個針對商業應用。隨著計算機應用的深入,對統一兩種應用的計算機需求出現了。這時IBM公司試圖通過引入System/360來解決這個問題。與這個計劃配套,IBM公司組織了OS/360操作系統的開發,然后復雜的需求,以及當時軟件工程水平低下使得OS/360的開發工作陷入了歷史以來最可怕的“軟件開發泥潭”,誕生了最著名的失敗論著----《神秘的人月》。雖然這個開發計劃失敗了,但是這個愿望卻成為了計算機廠商的目標。此時,MIT、Bell
Lab(貝爾實驗室)和通用電氣公司決定開發一種“公用計算機服務系統”----MULTICS,希望其能同時支持數百名分時用戶的一種機器。結果這個計劃的研制難度超出了所有人的預料,最后這個系統也以失敗結束。不過,MULTICS的思想卻為后來的操作系統很多提示。60年代未,一位貝爾實驗室曾參加過MULTICS研制工作的計算機科學家Ken
Thompson,在一臺無人使用的PDP-7機器上開發出了一套簡化的、單用戶版的MULTICS。后來導致了UNIX操作系統的誕生。目前UNIX操作系統主導了小型機、工作站以及其他市場。也是至今最有影響力的操作系統之一,而Linux也是UNIX系統的一種衍生,下一講我們將專門介紹一下UNIX的發展歷史。
4.第四代計算機(1980-今):個人計算機
隨著計算機技術的不斷更新與發展,計算機神奇般地闖入了人們的生活,現在以低廉的價格就可以獲得強大計算能力的計算機。價格不再是阻攔計算機普及的門檻時,降低計算機的易用性就顯得十分重要!由于UNIX系統的本身特點,使得其不太適合于在運行在個人計算機上,這時就需要一種新的操作系統。在這一歷史關鍵時候,IBM公司由于低估了PC機的市場,并未使用最大的力量角逐這一市場,這時Intel公司趁機進入,成為了當今微處理器的老大。同時善于抓住時機的微軟公司的總裁比爾·蓋茨適時地進入了這一領域,用購買來的CP/M搖身一變成為MS-DOS,并憑借其成為個人計算機操作系統領域的霸主。雖然是蘋果公司在GUI方面先拔頭籌,但由于蘋果公司的不兼容、不開放的市場策略,未能擴大戰果,這時微軟又適時地進入了GUI方面,憑借WINDOWS系統再次稱雄!
五、操作系統構成
一般來說,操作系統由以下幾個部分組成:
1)進程調度子系統:進程調度子系統決定哪個進程使用CPU,對進程進行調度、管理。
2)進程間通信子系統: 負責各個進程之間的通信。
3)內存管理子系統:負責管理計算機內存。
4)設備管理子系統:負責管理各種計算機外設,主要由設備驅動程序構成。
5)文件子系統:負責管理磁盤上的各種文件、目錄!
6)網絡子系統:負責處理各種與網絡有關的東西。
六、操作系統結構設計
操作系統有多種實現方法與設計思路,下面僅選取最有代表性的三種做一簡單的敘述。
1.整體式系統結構設計 這是最常用的一種組織方式,它常被譽為“大雜燴”,也可說,整體式系統結構就是“無結構”。
這種結構方式下,開發人員為了構造最終的目標操作系統程序,首先將一些獨立的過程,或包含過程的文件進行編譯,然后用鏈接程序將它們鏈接成為一個單獨的目標程序。
Linux操作系統就是采用整體式的系統結構設計。但其在此基礎上增加了一些形如動態模塊加載等方法來提高整體的靈活性,彌補整體式系統結構設計的不足。
2.層次式系統結構設計 這種方式則是對系統進行嚴格的分層,使得整個系統層次分明,等級森嚴!這種系統學術味道較濃!實際完全按照這種結構進行設計的操作系統不多,也沒有廣泛的應用。
可以這么說,現在的操作系統設計是在整體式系統結構與層次式系統結構設計中尋求平衡。
3.微內核系統結構設計 而微內核系統結構設計則是近幾年來出現的一種新的設計理念,最有代表性的操作系統有Mach和QNX。微內核系統,顧名思義就是系統內核很小!比如說QNX的微內核只負責:
¨ 進程間的通信
¨ 低層的網絡通信
¨ 進程調度
¨ 第一級中斷處理
七、操作系統橫向比較
計算機歷史中出現了許許多多的操作系統,然后大浪淘沙,無情地淘汰了許多,只留下一些經歷過市場考驗的:
1.桌面操作系統:
1)MSDOS:Intel x86系列的PC機上的最早的操作系統,微軟公司產品,曾經統治了這個領域,現在已逐漸被自家兄弟WINDOWS
9x系列所代替,現在除了一些低檔機外已不多見。
2)Windows 9x:微軟公司產品,從Windows 3.x發展而來,現在是基于Intel
x86系列的PC機上的主要操作系統,也是現然個人電腦中裝機量最大的操作系統。面向桌面、面向個人用戶。
3)Mac OS:蘋果公司所有,界面友好,性能優異,但由于只能運行在蘋果公司自己的電腦上而發展有限。但由于蘋果電腦獨特的市場定位,現在仍存活良好。
2.服務器操作系統:
1)UNIX系列:UNIX可以說是源遠流長,是一個真正穩健、實用、強大的操作系統,但是由于眾多廠商在其基礎上開發了有自己特色的UNIX版本,所以影響了整體。在國外,UNIX系統可謂獨樹一幟,廣泛應用于科研、學校、金融等關鍵領域。但由于中國的計算機發展較為落后,UNIX系統的應用水平與國外相比有一定的滯后。
2)Windows NT系列:微軟公司產品,其利用Windows的友好的用戶界面的優勢打進服務器操作系統市場。但其在整體性能、效率、穩定性上都與UNIX有一定差距,所以現在主要應用于中小企業市場。
3)Novell Netware系列:Novell公司產品,其以極適合于中小網絡而著稱,在中國的證券行業市場占有率極高,而且其產品特點鮮明,仍然是服務器系統軟件中的長青樹。
4)Linux操作系統
評論