1. 程式人生 > >作業系統知識整理 - 知識梳理(聽說有人還不知道作業系統講了點啥?)

作業系統知識整理 - 知識梳理(聽說有人還不知道作業系統講了點啥?)

主要內容

處理機管理功能

儲存器管理功能

外圍裝置管理功能

檔案管理功能

使用者介面


作業系統(Operating System,OS)是為了滿足人們需求而逐步產生並發展的一個“工具”。現代社會的作業系統中Windows、UNIX和Linux系統三足鼎立,還有其他的作業系統異軍突起。

作業系統是計算機中最基本的系統軟體,幾乎不存在一臺計算機不含有作業系統。

買電腦時除了檢視電腦配置(硬體),其次就是看電腦安裝了哪個作業系統,Win7、Win10還是其他的。

即使有人專門買裸機(沒有任何軟體的計算機系統),買回去後一樣得安裝作業系統,因為它是使用者與計算機硬體系統互動的介面。


 

作業系統的基本目標

1)方便性:普通使用者一般用Windows作業系統,軟體、系統開發人員則一般用UNIX或Linux作業系統。

2)有效性:處理作業的效率。

3)可擴充性:Windows作業系統打補丁、Linux作業系統可以對模組進行剪裁(系統瘦身)等;

4)開放性:Windows原始碼保密,相反,Linux開源,使用者可以自己對OS進行修改或補充。

 

作業系統的作用

1)面向使用者:

對不同的使用者而言,OS的作用也不同。小孩可以通過OS上網玩遊戲,工作人員可以使用Word、Excel之類的應用軟體進行文字性工作等。

OS處於使用者與計算機硬體系統之間,使用者在OS的幫助下,能夠方便、快捷、安全(別中毒)、可靠(別藍屏)地操縱計算機硬體執行自己的程式

在早期計算機剛誕生、沒有安裝OS的情況下,使用者使用計算機的方式非常麻煩,而且只有專業人士才能順利地使用計算機。但那已經是過去式了,如今在OS的幫助下,普通群眾,甚至是三歲小孩都能輕鬆地使用計算機,這就是作業系統的強大之處。

What's more,使用者要使用瀏覽器、QQ、Word等應用軟體,必須要有OS的系統呼叫功能的支援。

 

2)面向計算機系統資源:

OS是計算機系統資源的管理者。使用者要使用資源,必須向OS提交請求,然後由它進行判斷、分配、排程和管理。

在一個計算機系統中,通常含有各種各樣的軟、硬體資源。歸納起來可將資源分為四類:處理機、儲存器、I/O裝置以及資訊(資料和程式)。由OS對這四類資源的管理衍生出四個專題:處理機管理儲存器管理I/O裝置管理以及檔案管理

1. 處理機管理:用於分配和控制處理機,協調各作業、程序的執行。

2. 儲存器管理:主要負責記憶體的分配和回收。執行程式要先把程式儲存到記憶體當中,然後順序執行,一步步地取指令、分析指令、執行,不斷迴圈這個過程。

3. I/O裝置管理:用於分配和操縱I/O裝置(比如印表機)。

4. 檔案管理:負責檔案的存取、共享和保護。比如拍照後將照片上傳到電腦,然後刪除效果不太好的照片,上傳和刪除就涉及到對檔案的操作。

 

3)用作擴充機器:

對於一臺裸機,即使其功能再強,也必定是難以使用的。如果在裸機上覆蓋一層或者幾層的管理軟體,它將變成功能更強、使用更方便的機器。通常把覆蓋了軟體的機器稱為擴充機器或虛機器。(I/O裝置管理軟體 + 檔案管理軟體 + 視窗軟體 + ......)

 

作業系統的作用方式

1)命令方式:由OS提供一組聯機命令(語言),使用者可通過鍵盤輸入有關命令來直接操縱計算機。如Linux系統。

2)系統呼叫方式:OS提供了一組系統呼叫,使用者可在自己的應用程式中通過相關的系統呼叫來操縱計算機。目前OS提供的系統呼叫已經足夠滿足使用者的大部分需求。

3)圖形、視窗方式:最普遍、最被熟悉的方式。使用者通過螢幕上的視窗和圖示來操縱計算機系統和執行自己的程式。

 

作業系統的發展歷史

回顧“點這裡”。

 

作業系統的基本型別

回顧“點這裡”。

 

作業系統的基本特性

1)併發(Concurrence)

並行性併發性是既相似又有區別的兩個概念。並行性是指兩個或多個事件在同一時刻發生;而併發性是指兩個或多個事件在同一時間段內發生。在多道批作業系統中,多個程式在巨集觀上同時執行,微觀上分時交替執行。

 

2)共享(Sharing)

在OS環境下,系統中的資源可供記憶體中多個併發執行的程序(執行緒)共同使用。由於資源種類不同,程序對資源共享的方式也不同。目前主要有以下兩種資源共享方式:

1. 互斥式:一段時間內只允許一個程序(執行緒)訪問該資源。當一個程序A要訪問某資源時,必須先提出請求,如果此時該資源空閒,系統便可將其分配給程序A使用,此後若再有其他程序訪問該資源,除非程序A用完並釋放該資源,否則必須等待。這種資源又被稱作臨界資源或獨佔資源(如大部分物理裝置)。

2. 同時式:這裡的“同時”也是指巨集觀上的,而在微觀上,這些程序可能是交替地對該資源進行訪問。(如磁碟裝置)

 

3)虛擬(Virtual)

OS中利用了多種虛擬技術,分別用來實現虛擬處理機虛擬儲存器虛擬外部裝置虛擬通道等。

在虛擬處理機技術中,通過多道程式設計技術,讓多道程式併發執行,分時使用一臺處理機。此時雖然只有一臺處理機,但它能同時為多個使用者服務,使每個終端使用者都感覺有一個處理機專門為他服務,於是物理上的一臺處理機就虛擬成了邏輯上的多臺處理機。我們把使用者感覺到的處理機稱為虛擬處理機。

類似地,通過虛擬儲存器技術,可以將物理上容量不大的記憶體虛擬成容量更大的虛擬記憶體,從邏輯上擴充儲存器的容量。(之後在“儲存器管理”的文章會再作介紹)

 

4)非同步性(Asynchronism)

程序以人們不可預知的速度向前推進,這就是程序的非同步性。儘管如此,只要執行環境相同,作業經過多次執行都能獲得完全相同的結果。

 

作業系統的主要功能(important)

 

處理機管理功能

1)程序控制:

在傳統的多道程式環境下,要使作業執行,必須先為它建立一個或幾個程序,併為之分配必要的資源。當程序執行結束時,立即撤銷該程序,以便及時回收該程序佔用的資源。

程序控制的主要功能是為作業建立程序撤銷已完成的程序,以及控制程序的狀態轉換上下文切換。在現代OS中,程序控制還應具有為一個程序建立若干個執行緒以及撤銷已完成執行緒的功能。

 

2)程序同步:

為多個程序(含執行緒)的執行進行協調:

1. 程序互斥,各程序(執行緒)對臨界資源的訪問採用互斥方式;

2. 程序同步,相互合作去完成共同任務的各程序(執行緒)間,由同步機構對它們的執行次序加以協調。(一般用於邏輯上有相互關係的程序或執行緒)

為了實現程序同步,系統中必須設定程序同步機制。最簡單的機制是給臨界資源設定一把,開啟則可以訪問,反之不可。

 

3)程序通訊:

在多道程式環境下,為了加快應用程式的執行,除了建立程序、執行緒外,還需要在程序或執行緒之間作資訊交換。

當相互合作的程序(執行緒)處於同一計算機系統時,通常由源程序利用傳送命令直接將訊息掛到目標程序的訊息佇列上,以後由目標程序利用接收命令從其訊息佇列中取出資訊。

 

4)程序調(diao)度:

在後備佇列等待的每個作業,通常要經過排程才能執行。在傳統的OS中,包括作業排程和程序排程兩步。

作業排程:從後備佇列中按照一定的演算法(如FCFS、RR等),選擇出若干個作業,為它們分配必需的資源(首先分配記憶體),在將作業調入記憶體後,便分別為它們建立程序,使它們都成為可能獲得處理機的就緒程序,並按照一定的演算法將它們插入就緒佇列。(可回顧“作業排程”)

程序排程:從程序的就緒佇列中選取一個程序,把處理機分配給它,併為它設定執行現場,使程序投入執行。(可回顧“程序的描述”)需要注意的是,在多執行緒OS中,通常把執行緒作為獨立執行和分配處理機的基本單位,為此,必須把就緒執行緒排成一個佇列,每次排程選取一個執行緒。

 

儲存器管理功能

1)記憶體分配:

OS實現記憶體分配有兩種方式,靜態或者動態。

在靜態分配方式中,每個作業的記憶體空間是在作業裝入時確定的(JCB)。作業裝入後的整個執行期間內,不允許該作業申請新的記憶體空間,也不允許作業在記憶體中“移動”,即更換地址。

在動態分配方式中,每個作業在裝入時只確定基本記憶體空間,但在作業的執行過程中,允許作業申請附加記憶體空間,以適應程式和資料的動態增漲,也允許作業在記憶體中“移動”。

為了實現記憶體分配,在記憶體分配的機制中應具有下列結構和功能:

1. 記憶體分配資料結構:該結構用於記錄記憶體空間的使用情況,作為記憶體分配的依據;

*涉及資源分配的問題基本都得用上資料結構,用以記錄資源的使用情況。

2. 記憶體分配功能:系統按照一定的記憶體分配演算法,為使用者程式分配空間;

3. 記憶體回收功能:系統根據使用者的釋放請求,完成回收記憶體的任務。

 

2)記憶體保護:

確保每道使用者程式都只在自己的記憶體空間內執行,彼此互不干擾,因此必須設定記憶體保護機制。一種比較簡單的保護機制是設定兩個界限暫存器,分別用於儲存正在執行程式的上界和下界。系統需對每條指令所訪問的地址進行檢查,如果發生越界,便發出越界中斷請求,以停止該程式的執行。為了保證程式的執行速度,越界檢查由硬體實現,軟體配合越界處理。

 

3)地址對映:

一個應用程式(源程式)經過編譯後,通常會形成若干目標程式,這些目標程式再經過連結才能成為可裝入程式

這些程式的地址在邏輯上都是從“0”開始的,程式中的其他地址都是相對於“0”計算的,由這些地址形成的地址範圍稱為“地址空間”,其中的地址稱為“邏輯地址”。此外,由記憶體中一系列單元限定的地址範圍稱為“記憶體空間”,其中的地址稱為“實體地址”。

在多道程式環境下,每道程式不可能都在物理上從“0”地址開始裝入。如果是這樣,後一道程式必然覆蓋前一道程式。

正因為不可能在物理上實現所有程式都從“0”開始,這就致使地址空間內的邏輯地址和記憶體空間中的實體地址不相一致。為使程式正確執行,儲存器管理必須提供地址對映功能,以將地址空間中的邏輯地址轉換為記憶體空間中相應的實體地址。這需要在硬體的支援下實現。

 

4)記憶體擴充:

利用虛擬儲存技術實現擴充,涉及兩個功能的實現:請求調入功能和置換功能。

 

外圍裝置管理功能

完成使用者程序提出的I/O請求,為其分配必需的I/O裝置,提高CPU和I/O裝置的利用率等。

1)緩衝管理:

記憶體中設定緩衝區,解決CPU高速性與I/O裝置低速性的矛盾。

 

2)裝置分配:

可類比。

 

3)裝置處理:

裝置處理程式又稱為裝置驅動程式。其基本任務是完成CPU與裝置控制器之間的通訊,即由CPU向裝置控制器發出I/O命令(讀、寫),要求它完成指定的I/O操作;反之裝置控制器向CPU發出中斷請求,要求CPU給予迅速的響應和相應處理。

 

檔案管理功能

1)檔案儲存空間管理:

檔案系統對各個檔案以及檔案的儲存空間實施統一的管理。其主要任務是為每個檔案分配必要的外存空間,提高外存的利用率,並能提高檔案系統的執行速度。

為了提高儲存空間的利用率,一般採用離散分配方式來對儲存空間進行分配。

 

2)目錄管理:

為了方便使用者在外存上找到自己需要的檔案,通常由系統為每個檔案建立一個目錄項。目錄項包括檔名檔案屬性檔案在磁碟上的物理位置等資訊,若干個目錄項又可以構成一個目錄檔案。

目錄管理的主要任務:

1. 每個檔案建立目錄項,對各個目錄項加以組織,以實現方便的按名存取。

2. 檔案共享,在外存上保留一份共享檔案的副本。

3. 快速的目錄查詢,提高對檔案的檢索速度。

 

3)檔案的讀/寫管理:

根據使用者的請求,從外存讀入資料,或將資料寫入外存。

在進行檔案讀寫時,系統先根據使用者給出的檔名,檢索檔案目錄,從中獲得檔案在外存的位置,然後再利用檔案讀寫指標對檔案進行讀寫操作。一旦讀寫完成,便可修改指標,為下一次讀寫做準備。由於讀和寫操作不能同時進行,所以兩種操作可以共用一個指標。

 

4)檔案保護:

1. 防止未經准許的使用者存取檔案;

2. 防止冒名頂替存取檔案;

3. 防止使用者使用不正確的方法存取檔案。

 

使用者介面

使用者介面分為命令介面(典型如Linux系統)、程式介面(涉及系統呼叫)、圖形介面(最熟悉的Windows系統)