基礎夯實:作業系統
我們之前介紹了 基礎數據結構和演算法 、電腦網路 ,接下來我們介紹 作業系統 基礎知識。
基礎數據結構和演算法、電腦網路回顧如下:
不怎麼清楚的可以去瞅瞅。
作業系統簡介
作業系統(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
出處://www.cnblogs.com/xiongze520/p/15825185.html
您可以隨意轉載、摘錄,但請在文章內註明作者和原文鏈接。