我們之前介紹了 基礎資料結構和演算法 、計算機網路 ,接下來我們介紹 作業系統 基礎知識。
基礎資料結構和演算法、計算機網路回顧如下:
不怎麼清楚的可以去瞅瞅。
作業系統簡介
作業系統(operating system,簡稱OS)是管理計算機硬體與軟體資源的計算機程式。
作業系統需要處理如管理與配置記憶體、決定系統資源供需的優先次序、控制輸入裝置與輸出裝置、操作網路與管理檔案系統等基本事務。
作業系統也提供一個讓使用者與系統互動的操作介面。
作業系統的型態非常多樣,不同機器安裝的作業系統可從簡單到複雜,可從非智慧手機的嵌入式系統到超級電腦的大型作業系統。
許多作業系統製造者對它涵蓋範疇的定義也不盡一致,例如有些作業系統整合了圖形使用者介面,而有些僅使用命令列介面,而將圖形使用者介面視為一種非必要的應用程式。
作業系統理論在電腦科學中,為歷史悠久而又活躍的分支;而作業系統的設計與實現則是軟體工業的基礎與核心。
現代作業系統由一個或多個處理器、主存、印表機、鍵盤、滑鼠、顯示器、網路介面以及各種輸入/輸出裝置構成。
計算機作業系統是一個複雜的系統。
我們一般常見的作業系統主要有 Windows、Linux、FreeBSD 或 OS X ,這種帶有圖形介面的作業系統被稱為 圖形使用者介面(Graphical User Interface, GUI),
而基於文字、命令列的通常稱為 Shell。
下面是我們所要探討的作業系統的部件
作業系統所處的位置圖
這是一個作業系統的簡化圖,最下面的是硬體,硬體包括晶片、電路板、磁碟、鍵盤、顯示器等我們上面提到的裝置,在硬體之上是軟體。
大部分計算機有兩種執行模式:核心態 和 使用者態,軟體中最基礎的部分是作業系統,它執行在 核心態 中,核心態也稱為 管態 和 核心態,它們都是作業系統的執行狀態,只不過是不同的叫法而已。
作業系統具有硬體的訪問權,可以執行機器能夠執行的任何指令。軟體的其餘部分執行在 使用者態 下。
使用者介面程式(shell 或者 GUI)處於使用者態中,並且它們位於使用者態的最低層,允許使用者執行其他程式,例如 Web 瀏覽器、電子郵件閱讀器、音樂播放器等。
而且,越靠近使用者態的應用程式越容易編寫,如果你不喜歡某個電子郵件閱讀器你可以重新寫一個或者換一個,但你不能自行寫一個作業系統或者是中斷處理程式。
這個程式由硬體保護,防止外部對其進行修改。
計算機元件
作業系統與執行作業系統的核心硬體關係密切。作業系統擴充套件了計算機指令集並管理計算機的資源。
因此,作業系統因此必須足夠了解硬體的執行,這裡我們先簡要介紹一下現代計算機中的計算機硬體。
簡單個人計算機元件圖
中央處理器(CPU)
中央處理器(central processing unit,簡稱CPU)作為計算機系統的運算和控制核心,是資訊處理、程式執行的最終執行單元。
CPU 是計算機的大腦,它主要和記憶體進行互動,從記憶體中提取指令並執行它。
一個 CPU 的執行週期是從記憶體中提取第一條指令、解碼並決定它的型別和運算元,執行,然後再提取、解碼執行後續的指令。重複該迴圈直到程式執行完畢。
在計算機體系結構中,CPU 是對計算機的所有硬體資源(如儲存器、輸入輸出單元) 進行控制調配、執行通用運算的核心硬體單元。
CPU 是計算機的運算和控制核心。計算機系統中所有軟體層的操作,最終都將通過指令集對映為CPU的操作。
中央處理器(CPU)圖解
記憶體
計算機中第二個主要的元件就是記憶體。
理想情況下,記憶體應該非常快速(比執行一條指令要快,從而不會拖慢 CPU 執行效率),而且足夠大且便宜,但是目前的技術手段無法滿足三者的需求。
於是採用了不同的處理方式,儲存器系統採用一種分層次的結構
儲存層次結構圖
頂層的儲存器速度最高,但是容量最小,成本非常高,層級結構越向下,其訪問效率越慢,容量越大,但是造價也就越便宜。
我們逐一介紹一下上面的暫存器、快取記憶體、主存、磁碟
1、暫存器
儲存器的頂層是 CPU 中的暫存器,它們用和 CPU 一樣的材料製成,所以和 CPU 一樣快。
程式必須在軟體中自行管理這些暫存器(即決定如何使用它們)。
暫存器圖
2、快取記憶體
位於暫存器下面的是快取記憶體,它多數由硬體控制。
快取記憶體儲是存在於主存與CPU之間的一級儲存器, 由靜態儲存晶片(SRAM)組成,容量比較小但速度比主存高得多, 接近於CPU的速度。
3、主存
在上面的層次結構中再下一層是主存,這是記憶體系統的主力軍,主存通常叫做 RAM,由於 1950 年代和 1960 年代的計算機使用微小的可磁化鐵氧體磁芯作為主儲存器,
因此舊時有時將其稱為核心儲存器。所有不能再快取記憶體中得到滿足的記憶體訪問請求都會轉往主存中。
主儲存器一般採用半導體儲存器,與輔助儲存器相比有容量小、讀寫速度快、價格高等特點。
計算機中的主儲存器主要由儲存體、控制線路、地址暫存器、資料暫存器和地址譯碼電路五部分組成,如下圖所示:
其中,儲存體是儲存單元的集合,用來存放資料;地址譯碼驅動電路包含譯碼器和驅動器兩部分,
譯碼器將地址匯流排輸入的地址碼轉換成與之對應的譯碼輸出線上的有效電平,以表示選中了某一儲存單元,然後由驅動器提供驅動電流去驅動相應的讀寫電路,
完成對被選中儲存單元的讀寫操作;I/O和讀寫電路包括讀出放大器、寫入電路和讀寫控制電路,用以完成被選中儲存單元中各位的讀出和寫入操作。
4、磁碟
下一個層次是磁碟(硬碟),磁碟同 RAM 相比,每個二進位制位的成本低了兩個數量級,而且經常也有兩個數量級大的容量。
磁碟唯一的問題是隨機訪問資料時間大約慢了三個數量級。磁碟訪問慢的原因是因為磁碟的構造不同
磁碟驅動器的構造
一個磁碟
(如一個 1T 的機械硬碟)由多個碟片
(如下圖中的 0 號碟片)疊加而成。
碟片的表面塗有磁性物質
,這些磁性物質用來記錄二進位制資料。因為正反兩面都可塗上磁性物質,故一個碟片可能會有兩個盤面。
每個碟片被劃分為一個個磁軌,每個磁軌又劃分為一個個扇區, 其中,最內側磁軌
上的扇區
面積最小,因此資料密度最大。如下圖:
每個盤面對應一個磁頭。所有的磁頭都是連在同一個磁臂上的,因此所有磁頭只能“共進退”。
所有盤面中相對位置相同的磁軌組成柱面
。如下圖,
I/O 裝置
I/O 就是”輸入/輸出“(Input/Output)
I/O裝置就是可以將資料輸入到計算機,或者可以接收計算機輸出資料的外設,屬於計算機中的硬體部分。
IO裝置按照使用特徵分類:
- 人機互動類外部裝置(資料傳輸速度慢)
- 儲存裝置(資料傳輸資料快)
- 網路通訊裝置(資料傳輸速度介於上述二者之間,在於網路裝置情況)
IO裝置按照傳輸速度分類:
- 低速裝置
- 中速裝置
- 高速裝置
IO裝置按照交換資訊的單位分類:
- 塊裝置(傳輸速度較高,對它可隨機讀寫任意一塊)
- 字元裝置(傳輸速度較慢,不可以隨機讀寫任意一塊,在輸入輸出時常採用中斷驅動方式:一種IO控制方式)
這一塊單獨內部比較多,單獨拎出來都能幾萬字,這裡就不做過多的敘述,
下面整理了一下主要知識點,需要了解的可以點選連結或者百度查詢相關文獻進行學習
可點選 作業系統之IO裝置詳解 瞭解詳情,這位博主寫的很詳細。
- I/O控制器
- I/O裝置的機械部件
- I/O裝置的電子部件(I/O控制器)
- I/O控制器的組成
- 記憶體映像 I/O VS 暫存器獨立編址
- I/O控制方式
- 程式直接控制方式
- 中斷驅動方式
- DMA方式
- DMA控制器
- 通道控制方式
- I/O軟體層級結構
- 使用者層軟體
- 裝置獨立性軟體
- 為何不同的裝置需要不同的裝置驅動程式
- 裝置驅動程式
- 中斷處理程式
- 核心子系統
- 這個功能要在哪個層次實現
- I/O排程
- 裝置保護
-
假離線技術(SPOOLing技術)
- 裝置的分配與回收
- 裝置分配是應考慮的因素
- 靜態分配和動態分配
- 裝置分配管理中的資料結構
- 裝置分配的步驟
- 裝置分配步驟的改進
作業系統的主要功能
作業系統主要功能有以下5個方面:處理機管理功能、儲存器管理功能、裝置管理功能、檔案管理功能和作業系統和使用者之間的介面功能,簡單拓撲圖如下:
處理機管理功能
處理機制管理功能包含:程式控制、程式同步、程式通訊、排程
1、程式控制
主要是為作業建立程式、撤銷(終止)已結束的程式,以及控制程式在執行過程中的狀態轉換。
程式控制原語:
- 建立程式原語
- 撤銷程式原語
- 阻塞程式原語
- 喚醒程式原語
程式建立
建立一個具有指定識別符號的程式,建立程式的PCB結構。
程式撤銷
回收程式資源
程式阻塞
程式喚醒
2、程式同步
主要任務是為多個程式(含執行緒)的執行進行協調。
- 程式互斥方式:這是指諸程式在對臨界資源進行訪問時,應採用互斥方式。
- 程式同步方式:指在相互合作去完成共同任務的諸程式間,由同步機構對它們的執行次序加以協調。(訊號量機制)
3、程式通訊
多個程式在活動過程中彼此間會發生相互依賴或者相互制約的關係,為保證系統中所有的程式都能正常活動,就必須設定程式同步機制,它分為同步方式與互斥方式。
相互合作的程式之間往往需要交換資訊,為此,作業系統需要提供通訊機制。
程式通訊有三種方法 ,分別是共享儲存、管道通訊、訊息傳遞。
3.1、共享儲存
兩個程式對共享空間的訪問必須是互斥的(互斥訪問通過作業系統提供的工具實現)。
作業系統只負責提供共享空間和同步互斥工具(如P、V操作)基於資料結構的共享: 比如共享空間裡只能放個長度為10的陣列。這種共享方式速度慢、限制多,是一種低階通訊方式
基於儲存區的共享: 在記憶體中畫出一塊共享儲存區,資料的形式、存放位置都由程式控制,而不是作業系統。相比之下,這種共享方式速度更快,是一種高階通訊方式。
3.2、管道通訊
1.管道只能採用半雙工通訊,某一時間段內只能實現單向的傳輸。如果要實現雙向同時通訊,則需要設定兩個管道。
2.各程式要互斥地訪問管道。
3.資料以字元流的形式寫入管道,當管道寫滿時,寫程式的 write(系統呼叫將被阻塞,等待讀程式將資料取走。當讀程式將資料全部取走後,管道變空,此時讀程式的read()系統呼叫將被阻塞。
4.如果沒寫滿,就不允許讀。如果沒讀空,就不允許寫。
5.資料一旦被讀岀,就從管道中被拋棄,這就意味著讀程式最多隻能有一個,否則可能會有讀錯資料的情況
3.3、訊息傳遞
程式間的資料交換以格式化的訊息( Message)為單位。程式通過作業系統提供的“傳送訊息/接收訊息”兩個原語進行資料交換。
4、排程
包括作業排程和程式排程。
作業排程是通過一定的演算法策略從外存上將作業放入記憶體,分別為它們建立程式,分配資源,使之處於就緒狀態;
程式排程是從就緒狀態的程式佇列中選擇一定的程式為之分配處理機,使它可以執行。
儲存器管理功能
儲存器管理分為4個功能,分別是:記憶體分配、記憶體保護、地址對映、記憶體擴充
記憶體分配
記憶體分配的主要任務是為每道程式分配一定的記憶體空間,為此作業系統必須記錄整個記憶體的使用情況,
處理使用者提出的申請,按照某種策略實施分配,接收系統或使用者釋放的記憶體空間。
由於記憶體是寶貴的系統資源,在制定分配策略時應該如何考慮提高記憶體的利用率,減少記憶體浪費。
記憶體保護
不同使用者的程式都放在同一個記憶體中,就必須要保證它們在各自的記憶體空間中活動,不能相互干擾,更不能侵佔作業系統的空間,為此需要建立記憶體保護機制。
記憶體保護有兩種,
一是各個使用者程式只能在自己的記憶體空間中執行,不得使用其他非共享使用者程式的記憶體空間;
二是使用者程式不得訪問作業系統的程式和資料。
常見的記憶體保護機制是設定兩個界限暫存器,標誌可使用空間的上界和下界,系統對每條指令所要訪問的地址進行越界檢查。
地址對映
CPU在執行使用者程式時,要從記憶體中取出指令或資料,為此就必須把所用的相對地址(或稱邏輯地址)轉換成記憶體的實體地址。
編譯和連結所得到的可執行檔案,其程式地址是從0開始的,需要作業系統將從0開始的邏輯地址轉換為實體地址,需要硬體的支援。
記憶體擴充
指通過虛擬儲存技術,從邏輯上擴充儲存器的大小,使更多的使用者程式可以併發執行。
常見的機制包括:請求調入和置換功能。
請求調入允許在僅裝入部分程式和資料的情況下就啟動該程式的執行,當所需要的指令或者資料不在記憶體空間的時候,通過向OS發出請求,由OS將所需要的部分調入記憶體。
置換則是指,允許將記憶體中暫時不用的程式和資料移至硬碟,以騰出記憶體空間。
一個系統中的記憶體容量是有限的,不能隨意擴充其大小。然而,當對記憶體“求大於供”的局面時,就需要採取虛擬儲存技術。
將程式當前使用的部分放在記憶體,而其餘部分放在磁碟上,以後根據程式執行時的要求和記憶體當時使用的情況,隨機地將所需部分調入記憶體;
必要時還要把已分配出去的記憶體回收,供其他程式使用(記憶體置換)。
裝置管理功能
總體來說,裝置管理內容包括,響應程式的IO請求、為程式分配IO裝置,完成IO操作;提高IO速度,提高CPU和IO裝置的利用率。
裝置的分配和驅動由作業系統負責,即裝置管理的主要功能包括:緩衝管理,裝置分配,裝置驅動和裝置無關性。
- 緩衝管理:通過在CPU和IO裝置之間設定緩衝,有效解決IO裝置和CPU的速度不匹配問題,提高CPU的利用率,提高系統的吞吐量。常見策略包括單緩衝、雙緩衝以及緩衝池等。
- 裝置分配:根據使用者IO請求、系統現有資源狀況以及裝置分配策略來分配裝置。同時還需要考慮,裝置分配完後,系統是否安全等問題。
- 裝置驅動:檢查IO請求是否合理,瞭解裝置狀態,讀取有關的引數和設定裝置的工作方式,然後向裝置控制器發出IO命令,啟動IO裝置完成相應IO操作,響應中斷請求並呼叫相應中斷處理程式進行處理。
- 裝置無關性:裝置無關性又稱裝置獨立性,即使用者編寫的程式與實際使用的物理裝置無關,由作業系統把使用者程式中使用的邏輯裝置對映到物理裝置。
檔案管理功能
檔案管理功能包括:檔案儲存空間的管理,檔案操作的一般管理,目錄管理,檔案的讀寫管理和存取控制。
- 檔案儲存空間的管理:系統檔案和使用者檔案都要放在磁碟上,為此,需要由檔案系統對所有檔案以及檔案的儲存空間進行統一管理:為新檔案分配必要的外存空間,回收釋放的檔案空間,提高外存的利用率。
- 檔案的一般管理:檔案操作的一般管理包括:檔案的建立、刪除、開啟、關閉等。
- 目錄管理:為每個檔案建立一個目錄項,以記錄檔案的詳細情況。並通過對目錄項的管理提供檔案的共享以及快速的目錄查詢等功能,提高檔案檢索速度。
- 檔案的讀寫管理和保護:根據使用者的請求,從外存中讀取資料或者將資料寫入外存中。為了保證檔案資訊的安全性,防止未授權使用者的存取或破壞,對各個檔案(包括目錄)進行存取控制
提供作業系統與使用者之間的介面功能
使用者上機操作時直接使用到作業系統提供的使用者介面,作業系統對外提供多種服務,使得使用者可以方便、有效地使用計算機硬體和執行自己的程式,
使得軟體開發變的容易、高效。現代作業系統提供三種使用者介面:程式使用者介面,命令列介面以及圖形使用者介面。
程式使用者介面
主要為使用者的程式使用作業系統的服務提供、訪問系統資源提供便利。它由一組系統呼叫組成。是使用者程式取得系統服務的唯一途徑。
也稱系統呼叫介面,系統呼叫是作業系統核心與使用者程式、應用程式之間的介面,它位於作業系統核心層的最外層。
所有核心之外的程式都必須經由系統呼叫才能獲得作業系統的服務。系統呼叫只能在程式中使用,不能直接作為命令在終端上輸入和執行。
由於系統呼叫能夠改變處理機的執行狀態,從使用者態變為核心態,直接進入核心執行,所以執行效率很高。
使用者在自己程式中使用系統呼叫,從而獲取系統提供的眾多基層服務,
命令列介面
在提示符之後使用者從鍵盤上輸入命令,命令解釋程式接收並解釋這些命令,然後把它們傳遞給作業系統內部程式,執行相應功能。
命令列介面不屬於作業系統核心,相應的程式是在使用者空間中執行的。
圖形使用者介面
就是通過圖形化的操作介面,用容易識別的各種圖示來將系統的各項功能、各種應用程式和檔案直觀表現出來。
以滑鼠取代命令的鍵入等。
使用者利用滑鼠,視窗,選單,圖示等圖形使用者介面工具,可以直觀、方便,有效地使用系統服務和各種應用程式及實用工具。
圖形使用者介面也不屬於作業系統核心,相應的程式是在使用者空間中執行的。
參考文獻
歡迎關注訂閱微信公眾號【熊澤有話說】,更多好玩易學知識等你來取
作者:熊澤-學習中的苦與樂
公眾號:熊澤有話說
QQ群:711838388
出處:https://www.cnblogs.com/xiongze520/p/15825185.html
您可以隨意轉載、摘錄,但請在文章內註明作者和原文連結。