我們之前介紹了 基礎數據結構和算法 、計算機網絡 ,接下來我們介紹 操作系統 基礎知識。
基礎數據結構和算法、計算機網絡回顧如下:
不怎么清楚的可以去瞅瞅。
操作系統簡介
操作系統(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
您可以隨意轉載、摘錄,但請在文章內注明作者和原文鏈接。