作業系統是計算機學科的基礎課程,是理解計算機執行原理的重要基石,學習作業系統不僅能夠讓程式設計人員了解計算機執行邏輯而且還有助於培養程式設計“軟實力”,如果想真正在程式設計之路上走下去,那麼作業系統將會是重要的加速器,本系列將走進作業系統課程,了解在計算機世界的規則...
一、作業系統是什麼說到作業系統,不少人會瞬間想到微軟的Windows系列,有經驗的程式設計人員或許會想到unix,Linux等,但對於作業系統的定義,不少人恐怕就說不上來了,其實在計算機學科領域至今也未形成一個統一的標準化的定義,出現這個問題一方面由於作業系統實現兩項相對獨立的功能---擴充套件機器和管理資源,另一方面取決於從什麼角度來看待作業系統---使用者觀點還是系統觀點。
1、作業系統作為擴充套件機器
作業系統可以將硬體細節與程式設計人員隔離開,使用者可以使用作業系統提供的各種命令,直接開啟檔案、讀寫檔案、更改目錄等,在做這些事情時,只需要關心自己要實現的目標,並不用考慮硬體是如何動作,從而隱藏了底層硬體的特性。通過作業系統的加工,呈現在使用者面前的機器是功能更強,使用更方便的機器,通常把邏輯之上覆蓋各種軟體,從而形成功能更強的機器稱為擴充套件機器或虛擬機器。
2、作業系統作為資源管理器
作業系統可以用來管理硬體資源和資料、程式等軟體資源,控制、協調各個程式對這些資源的利用,儘可能地充分發揮各種資源的作用,作為資源管理者,作業系統主要做以下工作:
監視各種資源,隨時記錄它們的狀態實施某種策略以決定誰獲得資源、如何獲得、獲得多少分配資源提供需求者使用回收資源,以便再分配3、使用者角度看作業系統
作業系統應當處於使用者與計算機硬體系統之間,為使用者提供使用計算機系統的介面。
4、系統角度看作業系統
作業系統是硬體之上的第一層軟體,它要管理計算機系統中各種硬體資源和軟體資源的分配問題,要解決大量對資源請求的衝突問題,決定把資源分配給誰,何時分配,分配多少等,使得資源的利用高效而且公平。此外作業系統要對IO裝置和使用者程式加以控制,保證裝置正常工作,防止非法操作,及時診斷裝置的故障等。
綜上所述,可以得到:
作業系統是軟體,而且是系統軟體,即作業系統由一整套程式組成。作業系統基本職能是控制和管理系統內各種資源,有效地組織多道程式的執行。作業系統提供眾多服務,方便使用者使用,擴充硬體功能。總之,通常可以這樣定義作業系統:作業系統是控制和管理計算機系統內各種硬體和軟體資源,有效地組織多道程式執行的系統軟體,是使用者和計算機之間的介面。
二、作業系統的主要功能作業系統主要功能有一下5個方面:儲存管理、作業和程序管理、裝置管理、檔案管理和使用者介面服務
1、儲存管理
儲存管理的主要功能包括:記憶體分配,地址對映,記憶體保護和記憶體擴充
1.1 記憶體分配
記憶體分配的主要任務是為每道程式分配一定的記憶體空間,為此作業系統必須記錄整個記憶體的使用情況,處理使用者提出的申請,按照某種策略實施分配,接收系統或使用者釋放的記憶體空間。由於記憶體是寶貴的系統資源,在制定分配策略時應該如何考慮提高記憶體的利用率,減少記憶體浪費。
1.2 地址對映
CPU在執行使用者程式時,要從記憶體中取出指令或資料,為此就必須把所用的相對地址(或稱邏輯地址)轉換成記憶體的實體地址。
1.3 記憶體保護
不同使用者的程式都放在同一個記憶體中,就必須要保證它們在各自的記憶體空間中活動,不能相互干擾,更不能侵佔作業系統的空間,為此需要建立記憶體保護機制。
1.4 記憶體擴充
一個系統中的記憶體容量是有限的,不能隨意擴充其大小。然而,當對記憶體“求大於供”的局面時,就需要採取虛擬儲存技術。將程式當前使用的部分放在記憶體,而其餘部分放在磁碟上,以後根據程式執行時的要求和記憶體當時使用的情況,隨機地將所需部分調入記憶體;必要時還要把已分配出去的記憶體回收,供其他程式使用(記憶體置換)
2、作業和程序管理
作業系統中有兩個重要概念,即作業與程序,簡言之,使用者的計算任務稱為作業,程式的執行過程稱作程序(程序是分配資源和在處理機上執行的基本單位)。眾所周知,計算機系統中最重要的資源是CPU,對它管理的優劣直接影響整個系統的效能。所以,作業和程序管理的基本功能包括:作業和程序排程、程序控制和程序通訊。
2.1 作業和程序排程
一個作業通常經過兩級排程才能在CPU上執行,首先是作業排程,它把選中的一批作業放入記憶體,並分配其他必要資源,為這些作業建立相應的程序,然後程序排程按照一定的演算法從就緒程序中選出一個合適程序,使之在CPU上執行、
2.2 程序控制
程序是作業系統中活動的實體,程序控制包括建立程序、撤銷程序、封鎖程序、喚醒程序等。
2.3 程序通訊
多個程序在活動過程中彼此間會發生相互依賴或者相互制約的關係,為保證系統中所有的程序都能正常活動,就必須設定程序同步機制,它分為同步方式與互斥方式。相互合作的程序之間往往需要交換資訊,為此,作業系統需要提供通訊機制。
3、裝置管理
裝置的分配和驅動由作業系統負責,即裝置管理的主要功能包括:緩衝區管理,裝置分配,裝置驅動和裝置無關性
3.1 緩衝區管理
緩衝區管理的目的是解決CPU和外設速度不匹配的矛盾,使它們充分並行工作,提高各自的利用率。
3.2 裝置分配
根據使用者的IO請求和相應的分配策略,為該使用者分配外部裝置、通道和控制器等
3.3 裝置驅動
實現CPU與通道和外設之間的通訊,由CPU向通道發出IO指令,後者驅動相應裝置進行IO操作。當IO任務完成後,通道向CPU發出中斷訊號,由相應的中斷處理程式進行處理
3.4 裝置無關性
裝置無關性又稱裝置獨立性,即使用者編寫的程式與實際使用的物理裝置無關,由作業系統把使用者程式中使用的邏輯裝置對映到物理裝置。
4、檔案管理
檔案管理功能包括:檔案儲存空間的管理,檔案操作的一般管理,目錄管理,檔案的讀寫管理和存取控制
4.1 檔案儲存空間的管理
系統檔案和使用者檔案都要放在磁碟上,為此,需要由檔案系統對所有檔案以及檔案的儲存空間進行統一管理:為新檔案分配必要的外存空間,回收釋放的檔案空間,提高外存的利用率。
4.2 檔案操作的一般管理
4.3 目錄管理
目錄管理包括目錄檔案的組織、實現使用者對檔案的“按名存取”,以及目錄的快速查詢和檔案共享等
4.4 檔案的讀寫管理與存取控制
根據使用者的請求,從外存中讀取資料或者將資料寫入外存中。為了保證檔案資訊的安全性,防止未授權使用者的存取或破壞,對各個檔案(包括目錄)進行存取控制
5、使用者介面服務
使用者上機操作時直接使用到作業系統提供的使用者介面,作業系統對外提供多種服務,使得使用者可以方便、有效地使用計算機硬體和執行自己的程式,使得軟體開發變的容易、高效。現代作業系統提供三種使用者介面:程式介面,命令列介面以及圖形使用者介面。
5.1 程式介面
也稱系統呼叫介面,系統呼叫是作業系統核心與使用者程式、應用程式之間的介面,它位於作業系統核心層的最外層。所有核心之外的程式都必須經由系統呼叫才能獲得作業系統的服務。系統呼叫只能在程式中使用,不能直接作為命令在終端上輸入和執行。由於系統呼叫能夠改變處理機的執行狀態,從使用者態變為核心態,直接進入核心執行,所以執行效率很高。使用者在自己程式中使用系統呼叫,從而獲取系統提供的眾多基層服務,
5.2 命令列介面
在提示符之後使用者從鍵盤上輸入命令,命令解釋程式接收並解釋這些命令,然後把它們傳遞給作業系統內部程式,執行相應功能。命令列介面不屬於作業系統核心,相應的程式是在使用者空間中執行的。
5.3 圖形使用者介面
使用者利用滑鼠,視窗,選單,圖示等圖形使用者介面工具,可以直觀、方便,有效地使用系統服務和各種應用程式及實用工具。圖形使用者介面也不屬於作業系統核心,相應的程式是在使用者空間中執行的。
三、作業系統的型別作業系統基本型別可分為5種:批處理系統,分時系統、實時系統、網路系統和分散式系統
1、批處理系統
早期的計算機作業系統大多數是批處理系統,在這種系統中,把使用者的計算任務按“作業”進行管理。其工作流程一般如下:
操作員把使用者提交的作業卡片放到讀卡器上,通過SPOOLing輸入程式及時把這些作業送入直接存取的後援儲存器(如磁碟)作業排程程式根據系統的當時情況和各後背作業特點,按一定的排程原則,選擇一個或幾個搭配得當的作業裝入記憶體準備執行記憶體中多個作業交替執行,當某個作業完成時,系統把該作業的計算結果交給SPOOLing輸出程式準備輸出,並回收該作業的全部資源上述步驟將一直重複下去,使得各作業一個接一個地流入系統,直到沒有作業。各個作業經過處理後又順序地退出系統,形成一個源源不斷的作業流。
可以看出批處理系統具有兩個特點---“多道”與“成批”
“多道”是指記憶體中存放多個作業,並且在外存上存放大量的後備作業。因此,這種系統的呼叫原則相當靈活,易於選擇一批搭配合理的作業調入記憶體執行,從而充分發揮系統資源的利用率,增加系統的吞吐量。“成批”是指系統執行過程中不允許使用者和機器之間發生互動作用,也就是說,使用者一旦把作業提交系統,他就不能直接干預該作業的運行了。批作業系統優點:
系統資源利用率高系統吞吐量大批作業系統缺點:
使用者作業的等待時間長沒有互動能力2、分時系統
針對批作業系統的缺點,人們提出了分時系統,它讓使用者通過終端裝置聯機使用計算機。
在單CPU系統中無法真正的實現多個程式的並行(兩個或兩個以上事件或活動在同時刻發生就稱作並行),為了在多道程式環境中提高資源利用率,往往採用多道程式分時共享硬體和軟體資源的技術,分時就是對時間的共享。在分時系統中,分時主要是指若干程式對CPU時間的共享。分享的時間單位稱為時間片,它往往很短,如幾十毫秒。這種分時的實現,需要有中斷機構和時鐘系統的支援。利用時鐘系統把CPU時間分成一個一個的時間片,作業系統輪流把每個時間片分給各個程式,每道程式一次只可以執行一個時間片。當時間片計數到時後,產生時間中斷,控制轉向作業系統,作業系統選擇另一道程式並分給它時間片,讓其投入執行。到達給定時間,再發中斷,重新選程式(或作業)執行,如此反覆。
兩個或兩個以上的程式在一段時間內,在同一CPU上執行就稱作併發,在分時系統中利用併發機制實現了一個物理CPU(也可以是多個物理CPU)在若干道程式之間的多路複用。
分時系統的基本特徵:
同時性,若干使用者可以同時上機使用計算機系統互動性,使用者能夠方便地與系統進行人機互動獨立性,系統中各使用者可以批次獨立地操作,互不干擾或破壞及時性,使用者能在很短時間內得到系統的響應分時系統的優點:
為使用者提供友好的介面,即使用者能在較短時間內得到響應,能以對話方式完成對程式的編寫,除錯,修改,執行和得到運算結果促進了計算機的普及應用,一個分時系統可帶多臺終端,同時為多個遠近使用者使用便於資源共享和交換資訊,為軟體開發和工程設計提供良好的環境常用的通用作業系統是分時系統與批處理系統的結合,其原則是:分時優先,批處理在後。“前臺”響應需頻繁互動的作業,“後臺”處理時間性不強的作業。
3、實時系統
在計算機的很多應用領域內,要求對實時取樣資料進行及時處理,做出相應的反應,如果超出限定的時間就可能丟失資訊或影響下一批資訊的處理。實時系統是指計算機能及時響應外部事件的請求,在規定的時間內完成對該事件的處理,並控制所有裝置和任務協調一致工作的作業系統。實時系統的目標是:對外部請求在嚴格時間範圍內做出反應,並有高可靠性和完整性。其主要特點是:資源的分配和排程首先要考慮實時性,然後才是效率。此外實時系統還應該具有較強的容錯能力。實時系統現在有三種典型的應用形式:過程控制系統、資訊查詢系統和事務處理系統。
實時系統與分時系統的差別:
互動性:分時系統提供一種隨時可提供多個使用者使用、通用性很強的計算機系統,使用者與系統之間具有較強的互動作業或會話能力,而實時系統的互動能力相對來說比較差實時性:分時系統響應時間的要求是人能夠接受的等待時間,數量級通常是秒;而實時系統對響應時間要求較高,數量級可達到毫秒,甚至微秒。可靠性:雖然分時系統也要求系統可靠,但是實時系統對可靠性要求更高4、網路作業系統
由於單臺計算機資源畢竟有限,為了實現異地計算機之間的資料通訊和資源共享,可將分佈在各處的計算機和終端裝置通過資料通訊系統聯結在一起,構成一個系統,這就是計算機網路,計算機網路需要兩大支柱----計算機技術和通訊技術。
計算機網路的特徵:
分佈性:網上節點機可以位於不同地點,各自執行自己的任務自治性:網上的每臺計算機都有自己的記憶體,IO裝置和作業系統,能夠獨立地完成自己承擔的任務互連性:利用互連網路把不同地點的資源(包括硬體資源和軟體資源)在物理上和邏輯上連線在一起,在統一的網路作業系統控制下,實現網路通訊和資源共享可見性:計算機網路中的資源對使用者來說是可見的,使用者任務通常在本地機器上執行,利用網路作業系統提供的服務可共享其他主機上的資源網路作業系統一般建立在各個主機的本地作業系統基礎之上,其功能是實現網路通訊,資源共享和保護,以及提供網路服務和網路介面等。在網路作業系統的作用下,對使用者遮蔽了各個主機對同樣資源所具有的不同存取方法。
網路作業系統的特性:
介面一致性:網路作業系統要為共享資源提供一個一致的介面,而不管其內部採取什麼方法予以實現。資源透明性:網路作業系統能夠實現對資源的最優選擇,它了解整個網路系統中共享資源的狀態和使用情況,能夠根據使用者的要求自動做出選擇。操作可靠性:網路作業系統利用硬體和軟體資源在物理上分散的優點,實現可靠的操作。處理自主性:網路作業系統中的各個主機都具有獨立的處理能力,在各主機上的資源被認為是區域性所有的執行並行性:計算機網路中任何一個工作站或通訊計算機都稱作一個節點,網路作業系統不僅實現本機上多道程式的併發執行,而且實現網路系統各節點機上程序執行的真正並行。5、分散式作業系統
分散式作業系統把大量的計算機組織在一起,彼此通過高速網路進行連線。分散式系統有效地解決了地域分佈很廣的若干計算機系統間的資源共享,並行工作,資訊傳輸和資料保護等問題。
分散式作業系統特點:
靈活性:根據使用者需求和使用情況,方便地對系統進行修改或者擴充可靠性:如果系統中某臺機器不能工作了,就有另外的機器做它的工作。可靠性包括可用性,安全性和容錯性高效能:分散式具有執行速度快,響應及時,資源利用高,而且網路通訊能力強可擴充性:分散式系統可以根據使用環境和應用的需要,方便地擴充或縮減其規模分散式系統是網路作業系統的更高形式,它保持了網路作業系統的全部功能,而且還具有可靠性和高效能。網路作業系統和分散式作業系統雖然都屬於管理分佈在不同地理位置的計算機,但最大的差別是:網路作業系統知道計算機確切的地址,而分散式系統則不知道計算機的確切地址;分散式作業系統負責整個資源的分配,能很好地隱藏系統內部的實現細節,如物件的物理位置,這些對使用者都是透明的。
四、計算機硬體結構從硬體的角度看,現代通用計算機系統是由CPU、記憶體和若干IO裝置組成,它們經由系統匯流排連結在一起,實現彼此通訊。從功能上講,是由五大功能部件組成,即運算器、控制器、儲存器、輸入裝置和輸出裝置。這五大功能部件相互配合,協同工作。其中運算器和控制器整合在一片或幾片大規模或超大規模積體電路中,稱為中央處理器(CPU)。
1、處理器
CPU是計算機的“大腦”,它從記憶體中提取指令並執行它們。CPU工作的基本週期是:提取指令,譯碼分析,執行指令。對後面的的指令按類似步驟進行處理。CPU內部包含若干暫存器,其中,一類是通用暫存器,用來存放關鍵變數和中間結果。另一類是專用暫存器,如程式計數器(PC),棧指標暫存器和程式狀態字(PSW)。同時一般作業系統都提供核心態與使用者態兩種處理機執行狀態。其目的是為了保護作業系統程式(特別是核心部分),防止受到使用者程式的損害。當執行作業系統程式時,處理機處於核心態。這時它具有較高特權,可以執行所有指令,包括普通使用者程式中不能使用的特權指令,從而能對所有暫存器和記憶體進行訪問,以及啟動IO操作等。而使用者程式是在使用者態下執行的,它的的許可權較低,只能執行指令集中非特權指令。
2、儲存器
在任何計算機中,儲存器都是最主要的組成部分之一。按照速度、容量和成本劃分,儲存器系統構成一個層次結構,如下圖所示:
頂層是CPU內部暫存器,其速度與CPU一樣快,所以存取它們沒有延遲。但是它的成本高,容量小,通常小於1KB。典型存取時間1ns下面一層是快取記憶體,它們大多由硬體控制。Cache的速度很快,它們放在CPU內部或非常靠近CPU的地方。當程式需要讀取具體資訊時,Cache硬體先檢視它是否在Cache中,如果在其中,就直接使用它;如果不在,就從記憶體中獲取該資訊,並把它放入Cache中,以備今後再次使用。但Cache成本很高,容量較小,一般小於4MB。典型存取時間2ns中間一層是記憶體或者稱為主存,它是儲存器系統的主力,也稱作RAM(隨機存取儲存器)。CPU可以直接存取記憶體及暫存器和Cache中的資訊,但是不能直接存取磁碟上的資料。因此,機器執行的指令及所用的資料必須預先存放在記憶體及Cache和暫存器中。然而記憶體中存放的資訊是易丟失的,當機器電源被關閉後,記憶體中的資訊就全部丟失了。再往下一層是磁碟,稱作輔助儲存器,它是對記憶體的擴充套件。磁碟上可以永久的保留資料,而且容量特別大,現在常用的磁碟容量為250GB~2TB。磁頭是可以移動的,由於是機械裝置,所以磁碟上資料的存取速度低於記憶體存取速度最下層是磁帶,它記錄的資料可以永久儲存,而已還可以根據情況換磁帶,故容量很大,但是由於它的存取速度很慢,所以不適宜進行隨機存取,所以,磁帶裝置一般不能用做輔存,它的主要用途是作為檔案系統的後備,存放一些不經常使用的資訊或者用作系統間傳送資訊的介質。3、IO裝置
IO裝置是人機互動的工具,它通常由控制器和裝置本身兩部分組成。控制器是IO裝置的電子部分,它協調和控制一臺或多臺IO裝置的操作,實現裝置操作與整個系統操作的同步。裝置控制器本身有一些緩衝區和一組專用暫存器,負責在外部裝置和本地緩衝區之間移動資料。裝置實際上隱藏在控制器的後面,因而,作業系統總是與控制器打交道,而不是與裝置直接作用。由於裝置的種類有很多,因而裝置控制器的類別就很多,這就需要不同的軟體來控制它們。這些向控制器釋出命令並接收其回答資訊的軟體就是裝置驅動程式。不同作業系統上的不同控制器分別對應不同的裝置驅動程式,理論上講,驅動程式可以在核心之外執行,但當前的系統都把它放在作業系統中,使其在核心方式下執行。
4、匯流排
按照總線上傳送的資訊所起的作用,系統匯流排基本上可以分為如下三部分:
資料匯流排:用於傳輸計算機各部件之間資料的通道,其寬度隨位元組而定。32位結構的資料匯流排應是32根,64位結構的資料匯流排應為64根。資料匯流排是雙向匯流排,即兩個方向都可以傳送資料。地址匯流排:從CPU送來地址的地址線,它可以是儲存器的地址,也可以是IO裝置控制器中控制暫存器或資料暫存器的地址。地址匯流排決定了CPU所能訪問的最大記憶體空間的大小。控制匯流排:在該線上出現的訊號是各模組之間傳送資料時所需的全部控制訊號本文內容參考孟慶昌老師所著《作業系統》一書