一、前言
作業系統的重要性不言而喻,學習作業系統對我們理解計算機的工作流程是非常有利的,也很有利於我們學習掌握其他語言,因為語言中的很多概念都是直接和作業系統相關的,學好作業系統就是基礎中的基礎,所以,很有必要好好掌握作業系統這門基礎知識。
二、何為作業系統
作業系統(OS,Operating System)是配置在計算機硬體上的第一層軟體,是對硬體系統的首次擴充。它在計算機系統中佔據了重要地位,彙編程式、編譯程式、資料庫管理系統等系統軟體,都依賴於作業系統的支援,需要取得作業系統的服務。
三、作業系統的作用
為什麼需要作業系統?可以很簡單的會帶,因為為了方便使用者使用計算機,所以需要作業系統,如果沒有作業系統,使用計算機將會無比的困難,因為機器只能識別0,1二進位制碼,而普通人不可能去通過二進位制碼而計算機打交道,所以必須需要作業系統,這樣普通使用者才能很好的使用計算機,比如windows作業系統,Linux作業系統,它們都使得我們使用計算機變得非常的簡單。既然需要在計算機中裝作業系統,那麼操作到底有什麼作用呢。
3.1 OS作為使用者與計算機硬體系統之間的介面
使用者可以通過如下三種方式使用計算機。
① 命令方式;OS提供了命令介面,使用者可輸入命令取得作業系統的服務,並控制使用者程式的執行。
② 系統呼叫方式;OS提供了系統呼叫,使用者可在應用程式中呼叫系統呼叫,來實現與作業系統的通訊,並取得它的服務。
③ 圖形、視窗方式;這應該是使用者最熟悉的一種方式,只需要通過滑鼠簡單的點選就能夠實現與作業系統之間的通訊,並取得它的服務。
OS作為介面示意圖如下。
3.2 OS作為計算機系統資源的管理者
OS管理的計算機系統資源如下。
① 處理器;用於分配和控制處理器。
② 儲存器;負責記憶體的分配與回收。
③ I/O裝置;負責I/O裝置的分配與操縱。
④ 檔案管理;負責檔案的存取、共享和保護。
3.3 OS實現了對計算機資源的抽象
若在計算機上沒有安裝任何軟體,那麼使用者需要面向硬體介面進行程式設計,那是相當的痛苦,為了方便使用硬體裝置,則覆蓋了一層I/O裝置管理軟體,該軟體提供Read/Write介面,使用者通過此介面就可以使用該硬體裝置進行資料的輸入和輸出了,這就方便了很多。還可以覆蓋一層檔案管理軟體並提供相應的操作介面,使用者則可以使用者介面去操作檔案,而不用去了解具體的細節。OS就是由這些軟體組成,其遮蔽了具體的硬體的細節,提供統介面供使用者呼叫,通過該介面就可以輕鬆的訪問操縱硬體資源。
四、作業系統的基本特性
作業系統最重要的特徵有併發、共享、虛擬和非同步。其中,併發是最基本的特徵,其他三個特徵都是以併發為前提的。
4.1 併發性
提到併發,就自然而然的會提到並行,兩者到底有怎樣的區別呢。
並行性是指兩個或多個事件在同一時刻發生。
併發性是指兩個或多個事件在同一時間間隔發生。
有兩者的概念可知,在單處理器計算機上,多道程式會交替執行,是併發的;但是每一個時刻最多隻有一道程式執行,是並行的。而在多處理器計算機上,同一時刻會有多到程式同時執行,是並行的。
使用者編寫好的程式交給計算機執行,從使用者的角度看,計算機執行的是程式,但是,實際上,在計算機中執行的是執行緒。因為程式時靜態實體,不能被處理器呼叫獨立執行,更不能與其他程式併發執行。實際上,計算機會為每個程式建立程式,然後為每一個程式建立執行緒,處理器排程執行緒,從而到達執行程式的效果。
而程式與執行緒也是一個容易混淆的概念。程式是作業系統分配資源的基本單位,執行緒是獨立執行和獨立排程的基本單位,執行緒基本上不佔據資源,一個程式的多個執行緒共享該程式的資源。關於程式與執行緒,之後還會具體的介紹。
4.2 共享性
共享是指作業系統中的資源可供記憶體中多個併發執行的程式(執行緒)共同使用,這種資源的共同使用就叫做資源共享。而根據各種資源的不同屬性,程式對資源利用的方式也不相同,目前實現資源共享的方式有如下兩種。
1. 互斥共享方式
互斥共享是指當資源被一個程式A佔用時,其他想用使用該資源的程式B就只能等待,只有程式A使用完該資源後,程式B才能夠使用該資源,這種共享方式就叫做互斥式共享,把這種資源叫做臨界資源或獨佔資源。如印表機就屬於臨界資源。
2. 同時訪問方式
某一資源在一段時間內可由多個程式"同時"訪問,這種"同時"是巨集觀上的,在微觀上,這些程式可能是交替對該資源進行訪問,磁碟裝置就是這類資源。
4.3 虛擬技術
虛擬就是通過某種技術把一個物理實體轉變為若干個邏輯上的對應物。物理實體是實際存在的,邏輯上的對應物是虛擬的,現在主要有兩種虛擬技術,分時多工和空間多工技術。
1. 分時多工技術
分時多工技術可以用來實現虛擬處理機、虛擬裝置等,用來提高資源的利用率。
虛擬處理機技術。虛擬處理機技術藉助多道程式設計技術,即為每一道程式建立一個程式,讓多道程式併發執行,從而達到分時使用一臺計算機,這臺計算機能夠同時為多個使用者服務,使得每個終端使用者都認為有一個處理機專門為他服務。
虛擬裝置技術。通過虛擬裝置技術將一臺物理I/O裝置虛擬為多型邏輯上的I/O裝置,並允許使用者佔用一臺邏輯上的I/O裝置,這樣可以允許在一段時間內由一個使用者訪問的裝置變為在一段時間內允許多個使用者同時訪問的共享裝置。
2. 空間多工技術
空間多工技術可以用來實現虛擬磁碟、虛擬儲存等,用來提高資源利用率。
虛擬磁碟技術。通過虛擬磁碟技術可以將一個硬碟虛擬為多臺虛擬磁碟,這樣使用起來既安全又方便。如將一塊硬碟劃分為C、D、E等邏輯盤。
虛擬儲存器技術。利用儲存器的空閒空間來存放程式,提高記憶體利用率。還可以通過虛擬儲存器技術(實質上是分時多工技術)在邏輯上擴大儲存器的容量,它可以使得一道程式通過分時多工技術在遠小於它的記憶體空間中執行。
分時多工或空間多工中邏輯裝置數為N,那麼每臺虛擬裝置速速必然等於或低於物理裝置速度的1/N。
4.4 非同步性
在多道程式環境下,允許多個程式併發執行,但只有程式在獲得所需的資源後方可執行,如正在執行的程式A提出列印請求,需要使用印表機,但是此時程式B正在使用印表機,故此時程式A只能等待並且放棄處理機資源,當程式B使用完印表機後,並且分配處理機才能執行,可以看出,程式的執行通常不是一氣呵成的,而是走走停停的方式。程式以不可預知的速度向前推進,此即程式的非同步性。非同步性也是作業系統的一個重要特徵。
五、微核心OS結構
為提高作業系統的正確性、靈活性、易維護性、可擴充性,在現代作業系統結構設計中,即單處理機環境下,大多采用了基於客戶/伺服器模式的微核心結構,將作業系統劃分為兩個部分:微核心和多個伺服器,對微核心的描述如下。
5.1 微核心的特點
1. 足夠小的核心
核心是指經過精心設計、能實現現代OS最基本核心功能的部分。微核心並不是一個完整的OS,而只是作業系統中最基本的部分,它通常用於實現與硬體緊密相關的處理、實現一些比較基本的功能、負責客戶和伺服器之間的通訊。
2. 基於客戶/伺服器模式
將作業系統中最基本的功能放入核心中,把其他絕大部分功能放在微核心外面的一組伺服器(程式)中實現。如用於提供對程式進行管理的程式伺服器,提供對虛擬儲存器管理的虛擬儲存器伺服器,提供I/O裝置管理的I/O裝置管理伺服器。他們都是被作為程式來實現的,執行在使用者態,客戶與伺服器之間是藉助微核心提供的訊息傳遞機制來實現資訊互動的
說明:可以看到客戶程式與伺服器是通過微核心來完成通訊的。
3. 應用"機制與策略分離"原理
所謂機制,是指實現某一功能的具體執行結構,而策略,則是在機制的基礎上,藉助於某些引數或演算法來實現該功能的優化,或達到不同的功能目標。通常,機制處於一個系統的基層,而策略則處於系統的高層。在微核心系統中,機制通常放在OS的微核心中。
4. 採用物件導向技術
利用物件導向技術的抽象和隱蔽原則來控制系統的複雜性,利用物件、封裝、繼承等概念來確保作業系統的正確性、可靠性、易修改性等。
5.2 微核心的基本功能
1. 程式(執行緒)管理
為實現程式(執行緒)排程功能,必須在程式管理中設定一個或多個程式(執行緒)優先順序佇列,能將指定優先順序程式(執行緒)從所在佇列中取出,並將其投入執行。由於這部分屬於排程功能的機制部分,應將它放入微核心中。而如何確定每類使用者程式的優先順序,以及如何修改他們的優先順序,都是屬於策略問題,可將他們放在微核心外的程式管理伺服器中。由於程式之間的通訊功能是微核心OS最基本的功能,因此幾乎所有的微核心OS都將程式通訊功能放在微核心中,此外,還將程式的切換、執行緒的排程、以及處理機之間的同步功能也放入微核心中。
2. 低階儲存器管理
在微核心中,配置了最基本的低階儲存器管理機制。如用於將使用者控制元件的邏輯地址變換Wie記憶體空間的實體地址的頁表機制和地址變換機制,這部分是依賴於機器的,因此放入微核心匯中,而採取何種頁面演算法、採用何種記憶體分配和回收策略都是具體的策略,放在微核心外的儲存器管理伺服器中去實現。
3. 中斷和陷入處理
微核心可以捕獲所發生的中斷和陷入事件,並進行相應的前期處理。如進行中斷現場保護,識別中斷和陷入的型別,然後將有關事件的資訊轉化成訊息後,把它傳送給相關的伺服器。有伺服器根據中斷和陷入的型別,呼叫相應的處理程式來進行後期處理。
5.3 微核心存在的問題
微核心OS採用客戶/伺服器模式,有許多優點,但是也存在一些缺點,如客戶程式與服務程式,服務程式與服務程式通訊時,都需要經過微核心,會存在多次使用者/核心模式及上下文切換,這使得開銷較大。
說明:當客戶程式請求檔案服務時,需要經過四次使用者態和系統態的切換,這樣使得開銷成本很大。為了減少開銷,會把伺服器移入到微核心中,這樣就只需要進行兩次切換即可,會減少系統開銷,但是會增加核心的容量。
六、總結
作業系統的基本知識就介紹到這裡,之後我們會更深入的介紹每一個知識點,謝謝各位園友的觀看~