操作系統原理

隨着計算機技術的日益發展,用戶直接使用大型機器並獨佔機器,無論是對機器的效率來說還是對方便用戶來說都不適宜。人們創造出一類依靠計算機來管理自己和管理用戶的程序,叫做操作系統。操作系統是隨着硬件和軟件的不斷髮展而逐漸形成的一套軟件系統,用來管理計算機資源(如處理器、內存、外部設備和各種編譯、應用程序)和自動調度用戶的作業程序,而使多個用戶能有效地共用一套計算機系統。

操作系統原理

操作系統是一個大型的程序系統,它負責計算機系統軟、硬件資源的分配和管理;控制和協調併發活動;提供用戶接口,使用戶獲得良好的工作環境

以多道程序設計爲基礎的操作系統具備的主要特徵是併發與共享。另外。由於操作系統要隨時處理各種事件,所以它也具備不確定性。

操作系統具有的資源管理功能包括:處理機分配、存儲管理、設備管理、軟件資源管理。操作系統資源管理的目標是提高系統資源的利用率和方便用戶使用。

操作系統的核心任務是系統資源分配、控制和協調併發活動。

批量操作系統的主要特徵是“批量”,優點是系統的吞吐率高,缺點是對用戶的響應時間較長,用戶不能及時瞭解自己程序的運行情況並加以控制。

分時操作系統一般採用時間片輪轉的辦法,使一臺計算機同時爲多個終端用戶服務,該系統對每個用戶都能保證足夠快的響應時間,並提供交互會話功能。分時系統與批量系統的主要差別在於,所有用戶界面都是通過像電傳打字機或CRT聯機終端那樣的設備產生的。每個用戶通過各自的終端使用計算機。分時系統具有的特點:並行性:共享一臺計算機的衆多聯機用戶可以在各自的終端上同時處理自己的程序;獨佔性:分時操作系統採用時間片輪轉的方法使一臺計算機同時爲許多終端用戶服務;交互性:用戶與計算機之間可以進行“對話”,用戶可以根據運算結果提出下一步要求,直到全部工作完成。

  (批量操作系統、分時操作系統的出現標誌着操作系統的初步形成。)

實時操作系統能夠對外部輸入的信息在規定的時間內(截止期限deadline)處理完畢並作出反應。其另一個重要的特徵是可預測性分析。操作系統功能應該具有有限的、已知的執行時間。對實時應用進程的CPU調度應該是基於時間約束的,以滿足截止期限的要求。主存管理,即使有虛擬主存,也不能採用異步和無法預測的頁面或段的換進換出。而文件在磁盤上的物理結構一般應採用連續分配方式,以避免耗時的、不可確定的文件操作,如動態確定磁盤柱面的搜尋操作。實時系統按其使用方式分爲實時控制和實時信息處理。實時系統要求有高可靠性和安全性,系統的效率(靈活性)則放在第二位,系統通常是採用雙工方式工作的。實時操作系統沒有分時操作系統那樣強的交互會話功能,通常不允許用戶通過實時終端設備去編寫新的程序或修改已有的程序。

在個人計算機和工作站領域有兩種主流操作系統:一個是微軟公司的磁盤操作系統(MS-DOS)和具有圖形用戶界面的視窗操作系統(Windows);另一個是UNIX系統和Linux系統。微軟公司用各種類型的Windows系統替代了MS-DOS操作系統,IBM公司也將MS-DOS升級爲多任務系統OS/2。UNIX系統是一個多用戶的、人機交互的分時操作系統,自問世以來十分流行,它運行在從高檔個人計算機到大型機等各種不同處理能力的機器上,提供了良好的工作環境;它所有的實用程序層和核心層的90%代碼是用C語言寫成的,具有可移植性、安全性,提供了很好的網絡支持功能,大量用於網絡服務器。而目前十分受歡迎的、開放源碼的操作系統Linux,則是用於個人計算機的、類似於UNIX的操作系統。

網絡操作系統除了具備一般操作系統應具有的功能模塊之外(如系統核心、設備管理、存儲管理、文件系統等),還要增加一個網絡通信模塊,該模塊由通信接口中斷處理程序、通信控制程序以及各級網絡協議等軟件組成。網絡操作系統提供的功能包括:允許用戶訪問網絡主機中的各種資源;對用戶訪問進行控制,僅允許授權用戶訪問特定的資源;對遠程資源的利用如同本地資源一樣;提供全網統一的'記賬辦法;聯機地提供最近的網絡說明資料;提供比單機更可靠的操作。

分佈式系統又稱爲分佈式計算機系統或分佈式數據處理系統,是由多個相互連接的處理單元組成的計算機系統,分佈式系統是一個一體化的系統。在整個系統中有一個全局的操作系統稱爲分佈式操作系統,它負責全系統的資源分配和調度、任務劃分、信息傳輸、控制協調等工作,併爲用戶提供一個統一的界面、標準的接口。

UNIX是多用戶交互式分時操作系統,在結構上分成核心層和實用層。其中,核心層小巧,設計得非常精幹簡潔,包括進程管理、存儲管理、設備管理、文件系統幾個部分,主要算法經過反覆推敲,對其中包含的數據結構和程序進行了精心設計,只需佔用很小的存儲空間,並能常駐內存,保證了系統較高的工作效率;實用層豐富,是那些能從核心層分離出來的部分,包含豐富的語言處理程序和其他操作系統常見的實用程序(如編輯程序、調試程序、有關係統狀態監控和文件管理的實用程序等),它們以核外程序形式出現並在用戶環境下運行。

UNIX使用靈活的命令語言shell。shell屬於核外程序,同時作爲一種程序設計語言,它具有許多高級語言所擁有的控制流能力,如if、for、while、until、case語句,以及對字符串變量的賦值、替換、傳遞參數、命令替換等能力。用戶可以根據這些功能用shell語言寫出“shell”程序存入文件,以後用戶只要打入相應的文件名就能執行它,這種方法易於系統的擴充。

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

UNIX系統中的文件是無結構的字節序列。在缺省情況下,文件都是順序存取的,但用戶如果需要的話,也可爲文件建立自己需要的結構,用戶可以通過改變讀/寫指針對文件進行隨機存取。UNIX將外部設備與文件一樣看待,外部設備如同磁盤上的普通文件一樣被訪問、共享和保護。

UNIX系統所有的實用程序層和核心層的90%代碼是用C語言寫成的,這使得UNIX成爲一個可移植的操作系統。操作系統的課移植性帶來了應用程序的可移植性,因而用戶的應用程序既可用於小型機,又可用於其他的微型機或大型機,從而大大提高了用戶的工作效率。UNIX也鼓勵用戶用UNIX的工具開發自己適合需要的環境,造成UNIX系統版本太多,應用程序的可移植性不能完全實現;UNIX的核心是無序模塊結構,不是層次式的,故顯得十分複雜,不易修改和擴充;UNIX也缺少諸如實時控制、分佈式處理、網絡處理等能力,這一缺點也在不斷改進中。

進程是指一個具有獨立功能的程序關於某個數據集合的一次運行活動。進程是一個能獨立運行的單位,能與其他進程並行的活動。進程是競爭計算機系統有限資源的基本單位,也是進行處理機調度的基本單位。

進程是程序在處理機上的一次執行過程,它是一動態概念;程序是指令的有序集合,其本身沒有任何運行的含義,它是一個靜態概念。進程是有一定生命期的,它能夠動態地產生和消亡,即進程可由“創建”而產生,由調度而執行,因得不到資源而暫停,以致最後由“撤銷”而消亡;程序可以作爲一種軟件資料而長期保存。

在支持多任務運行的操作系統中,活動的最小單位是進程。進程一定包含一個程序,因爲程序是進程完成功能的邏輯描述;而一個程序可以對應多個進程。如果同一程序同時運行於若干不同的數據集合上,它將屬於若干個不同的進程。或者說,若干不同的進程可以包含相同的程序,即用同一程序對不同數據先後或同時加以處理,就對應於好幾個進程。

  文件的邏輯結構可分爲兩種形式:無結構的流式文件、有結構的記錄式文件。

其中,無結構的流式文件是相關的有序字符的集合,文件長度即爲所含字符數。流式文件不分成記錄,而是直接由一連串信息組成。對流式文件而言,它是按信息的個數或以特殊字符爲界進行存取的。流式文件對操作系統而言,管理比較方便;對用戶而言,適於進行字符流的正文處理,也可以不受約束地靈活組織其文件內部的邏輯結構。UNIX系統中的文件採用流式結構,但爲了使用方便,UNIX將流式文件按512 B 的大小劃分爲若干個邏輯記錄,從而將流式文件結構轉換爲記錄式文件。

有結構的記錄式文件在邏輯上總是被看成一組連續順序的記錄的集合。每個記錄由彼此相關的域構成。定長記錄文件的長度可由記錄個數決定,變長記錄文件的長度爲各記錄長度之和。