目錄
操作系統功能
操作系統的發展與分類
操作系統的運行環境
操作系統的體系結構
王道考研操作系統-1.計算機系統概述
操作系統
是指控制和管理整個計算機系統的硬件和軟件資源,合理地組織調度計算機的工作和資源的分配;提供給用戶和軟件方便的接口和環境;是計算機系統中最基本的系統軟件。
應包括:
1)能有效地組織和管理四大資源的軟件
2)合理地對各類作業進行調度和控制它們運行的軟件
3)方便用戶使用計算機的軟件
計算機系統自上而下大致可以分為4部分:用戶、應用程序、操作系統和硬件。如下圖:?
?
-
操作系統的基本特征
-
并發:指兩個或多個事件在同一時間間隔內發生。這些事件宏觀上是同時發生的,但微觀上是交替發生的。操作系統的并發性是通過分時得以實現的。在多道程序環境下,一段時間內,宏觀上有多道程序在同時執行,而微觀上這些程序仍是分時交替執行的。操作系統就是伴隨著“多道程序技術”而出現的。因此,操作系統和程序并發是一起誕生的。在內存中的多個程序都分別建立一個進程,它們就可以并發執行,這樣提高系統資源的利用率和系統的吞吐量。
并行是指兩個或多個事件在同一時刻同時發生。并行性需要有相關硬件的支持,如多流水線或多處理機硬件環境。
單核CPU同一時刻只能執行一個程序,各個程序只能并發地執行
多核CPU同一時刻可以同時執行多個程序,多個程序可以并行地執行 -
共享:指系統中的資源可供內存中多個并發執行的進程共同使用。(調入內存的進程是當前執行的進程,它們共享系統資源)
互斥共享:當進程A要訪問某資源時,必須先提出請求。若此時該資源空閑,系統便可將之分配給請求進程A使用。此后若再有其他進程也要訪問該資源,只要A未用完就必須等待。僅當A進程訪問完并釋放系統資源后,才允許另一進程對該資源進行訪問。這種資源共享方式稱為互斥式共享。
把這種在一段時間內只允許一個進程訪問的資源,成為臨界資源(或獨占資源)。同時訪問:允許在一段時間內由多個進程“同時”對它們進行訪問。“同時”是宏觀意義上,微觀上進程對該資源的訪問是交替進行的。“同時”訪問的典型資源是磁盤設備(訪問文件等),一些用重入碼編寫的文件也可被“同時”共享,即允許若干個用戶同時訪問該文件。
-
并發和共享的關系:
并發性指計算機系統中同時存在著多個運行著的程序。
共享性是指系統中的資源可供內存中多個并發執行的進程共同使用。并發和共享是多用戶(多任務)OS的兩個最基本的特征。它們是互為存在的條件
-
虛擬:是指把一個物理上的實體變為若干個邏輯上的對應物。前者是實際存在的,后者是用戶感受到的。
時分復用技術,虛擬處理機技術,是通過多道程序設計技術,采用讓多道程序并發執行的方法,來分時使用一個處理器的。利用多道程序設計技術把一個物理上的CPU虛擬為多個邏輯上的CPU。它利用某設備為一用戶服務的空閑時間,又轉去為其他用戶服務,使設備得到最充分的利用。提高了處理機的效率。
空分復用技術,虛擬存儲器技術。將一臺機器的物理存儲器變為虛擬存儲器,從邏輯上擴充存儲器的容量。是利用存儲器的空閑空間分區域存放和運行其他的多道程序,以此來提高內存的利用率。提高內存的利用率。
-
異步:是指在多道程序環境下,允許多個程序并發執行,但由于資源有限,進程的執行不是一貫到底的,而是以不可預知的速度向前推進。如果失去了并發性,即系統只能串行地運行各個程序,那么每個程序的執行會一貫到底。
-
操作系統功能
-
操作系統作為計算機系統資源的管理者
在一個計算機系統中,通常都含有多種硬件和軟件資源。歸納起來可將這些資源分為四類:
1)處理機管理
2)存儲器管理
3)文件管理
4)設備管理 -
操作系統作為用戶與計算機硬件系統之間的接口
?
用戶可通過三種方式使用計算機,即通過命令方式、系統調用方式和圖標——窗口方式來實現與操作系統的通信,并取得它的服務。
1)命令接口分為聯機命令接口和脫機命令接口。- 聯機命令接口又稱交互式命令接口,適用于分時或實時系統的接口。可以理解為“用戶說一句(命令),系統做一句(命令)”,強調了交互性。cmd,shell。
- 脫機命令接口又稱批處理命令接口,適用于批處理系統,由一組作業控制命令組成。可以理解為“用戶說一堆(命令),系統做一堆(命令)”,用戶不能直接干預作業運行。bat文件。
2)程序接口(廣義指令)
可以在程序中進行系統調用來使用程序接口。用戶間接使用使用程序接口(系統調用)來請求OS中的服務。用戶程序非系統調用。系統調用是操作系統的一部分,是內核為用戶提供的程序接口,運行在核心態。
3)圖標——窗口
一般是圖形用戶界面(GUI),如Windows、安卓等的圖形化操作界面 -
補充
操作系統作為最接近硬件的層次
沒有任何軟件支持的計算機成為裸機。覆蓋了軟件的機器稱為擴充機器,又稱之為虛擬機。操作系統為編程人員提供的接口是程序接口,即系統調用。
用戶程序只能通過系統調用的方式來請求內核為其服務,間接地使用各種資源。
系統緩存由操作系統管理,操作系統不提供管理系統緩存的系統調用。
系統開機后,操作系統的程序會被自動加載到內存中的系統區,這段區域是RAM。
庫函數是高級語言中提供的與系統調用對應的函數(也有些庫函數與系統調用無關),庫函數屬于用戶程序而非系統調用,是語言或應用程序的一部分,可以運行在用戶態。系統調用是操作系統的一部分,是內核為用戶提供的程序接口,運行在核心態。未使用系統調用的庫函數,其執行效率通常要比系統調用的高。使用系統調用時,需要上下文的切換及狀態的轉換(用戶態->核心態)
?
操作系統的發展與分類
-
手工操作階段(此階段無操作系統)
-
批處理階段(操作系統開始出現)
為了解決人機矛盾及CPU和I/O設備之間速度不匹配的矛盾,出現了批處理系統。-
單道批處理系統(一個接一個地處理,減少機器空閑等待時間)
主要特征:單道性。內存中僅有一道監督程序,每次從磁帶上只調入一道程序進入內存運行,當該程序完成或發生異常情況時,才換入其后繼程序進入內存運行。
自動性。在順利的情況下,作業能自動地逐個運行,而無須人工干預。
順序性。先調入內存的作業先完成。
缺點:系統中的資源得不到充分的利用。是因為在內存中僅有一道程序,程序在發出I/O請求后,CPU便處于等待狀態使CPU的利用率顯著降低。
-
多道批處理系統(操作系統正式誕生)
為了進一步提高資源的利用率和系統吞吐量,引入了多道程序設計技術,形成了多道批處理系統。
允許多個程序同時進入內存并允許它們在CPU中交替地運行,程序共享系統中的各種硬/軟件資源。
中斷技術使得多道批處理系統和I/O設備可與CPU并行工作,提高了多道程序運行環境中CPU的利用率。
特點:
①多道。計算機內存中同時存放多道互相獨立的程序。
②宏觀上并行。同時進入系統的多道程序都處于運行過程中,即它們先后開始各自的運行,但都未運行完畢。
③微觀上串行。內存中的多道程序輪流占有CPU,交替執行。
優點:
①資源利用率高。引入多道批處理能使多道程序交替運行,CPU處于忙碌狀態;在內存中裝入多道程序可提高內存的利用率,提高I/O設備的利用率。
②系統吞吐量高。系統開銷小。
缺點:
①平均周轉時間長。作業要排隊依次進行處理,而作業的周轉時間較長,通常需幾個小時,甚至幾天。
②無交互能力。用戶不能進行交互。
與單道程序系統相比,多道程序系統的優點是CPU利用率高、系統吞吐量大以及I/O設備利用率高。
-
-
分時操作系統(解決了人機交互問題)
分時技術,是指把處理器的運行時間分成很短的時間片,按時間片輪流把處理器分配給各聯機作業使用。一個時間片就是一段很短的時間。
分時操作系統是指多個用戶通過自己的終端同時共享一臺主機,用戶可以同時與主機進行交互操作而互不干擾,用戶在自己的終端上鍵入命令時,系統應能及時接收并及時處理該命令,再將結果返回用戶。多路卡功能:及時接收多個用戶鍵入的命令或數據。多路卡的作用是實現分時多路復用。
實現及時處理則需要采用兩種方式:
作業直接進入內存。因為作業在磁盤上是不能運行的,所以作業應直接進入內存。
采用輪轉運行方式。系統規定每個作業每次只能運行一個時間片,然后就暫停該作業的運行,并立即調度下一個作業運行。分時系統的特征:
①多路性(同時性)。指允許多個終端用戶同時使用一臺計算機。
②獨立性。指每個用戶在各自的終端上進行操作,彼此之間互不干擾,給用戶的感覺就像是他一人獨占主機進行操作。
③及時性。指用戶的請求在很短時間內獲得響應。
④交互性。用戶通過終端采用人機對話的方式直接控制程序運行,與同程序進行交互。優點:用戶請求可以被即時響應,解決了人機交互問題。允許多個用戶同時使用一臺計算機,并且用戶對計算機的操作相互獨立,感受不到別人的存在。
缺點:不能優先處理一些緊急任務。操作系統對各個用戶/作業都是完全公平的,循環地為每個用戶/作業服務一個時間片,不區分任務的緊急性。 -
實時操作系統(有優先級)
時操作系統最主要的特征是將時間作為關鍵參數。
在實時操作系統的控制下,計算機系統接收到外部信號后及時進行處理,要在嚴格的時限內處理完事件。資源利用率不是實時操作系統主要追求的目標,資源利用率低。實時系統的進程調度,通常采用搶占式的優先級高者優先算法。特點:及時性、可靠性
主要優點:能夠優先響應一些緊急任務,某些緊急任務不需時間片排隊。
-
實時任務的類型:
周期性實時任務和非周期性實時任務周期性實時任務:外部設備周期性地發出激勵信號給計算機,要求它按指定周期循環執行,以便周期性地控制某外部設備。
非周期性實時任務:并無明顯的周期性,但都必須聯系著一個截止時間(最后期限)。它又分為:①開始截止時間,指某任務在某時間以前必須開始執行。②完成截止時間,指某任務在某時間以前必須完成。 -
硬實時任務和軟實時任務
硬實時任務(HRT)是指必須滿足任務對截止時間的要求,否則可能出現難以預測的后果。如導彈控制系統等。
軟實時任務(SRT)是指能接受偶爾違法時間規定的事情發生。如信息查詢系統。
-
-
網絡操作系統和分布式計算機系統
網絡操作系統是網絡中各個計算機有機地結合起來,實現數據傳送,資源共享和相互通信。
分布式操作系統:主要特點是分布性和并行性。系統中各臺計算機地位相同,任何工作都可以分布在這些計算機上,由它們并行、協同完成這個任務。
?
操作系統的運行環境
-
計算機系統中,通常CPU執行兩種不同性質程序:一種是操作系統內核程序;另一種是用戶自編程序(即系統外層的應用程序,或簡稱“應用程序”)。內核是操作系統最重要最核心的部分,也是最接近硬件的部分,操作系統的功能未必都在內核中,如圖形化用戶界面 GUI。甚至可以說,一個操作系統只要有內核就夠了(eg:Docker—>僅需Linux內核)
-
CPU有兩種狀態,核心態(又稱核心態、內核態)和用戶態(目態)
處于內核態時,說明此時正在運行的是內核程序,此時可以執行特權指令和非特權指令。
處于用戶態時,說明此時正在運行的是應用程序,此時只能執行非特權指令。 -
特權指令,是指計算機中不允許用戶直接使用的指令,如I/O指令、置中斷指令、內存清零指令、存取用于內存保護的寄存器、送程序狀態字到程序狀態字寄存器等的指令。
拓展:CPU 中有一個寄存器叫 程序狀態字寄存器(PSW),其中有個二進制位,1表示“核心態”,0表示“用戶態”。-
內核態->用戶態:執行一條特權指令——修改PSW的標志位為“用戶態”,這個動作意味著操作系統將主動讓出CPU使用權。
用戶態->內核態:由“中斷”引發,硬件自動完成變態過程,觸發中斷信號意味著操作系統將強行奪回CPU的使用權。 -
注意:
操作系統內核需要運行在內核態。
操作系統的非內核功能運行在用戶態。
所以采用微內核的話,需要頻繁地在核心態和用戶態之間切換。區分執行態(核心態和用戶態)的主要目的是保護系統程序。
-
-
中斷和異常的概念
-
中斷也稱外中斷,指來自CPU執行指令以外事件的發生,與當前執行的指令無關,時鐘中斷表示一個固定的時間片已到,讓處理機處理計時、啟動定時運行的任務等。
“中斷”是讓操作系統內核奪回CPU使用權的唯一途徑。有時候應用程序想請求操作系統內核的服務,此時會執行一條特殊的指令——陷入指令,該指令會引發一個內部中斷信號。執行“陷入指令”,意味著應用程序主動地將CPU控制權還給操作系統內核。“系統調用”就是通過陷入指令完成的。
-
異常(內中斷、例外、陷入(trap)),指源自CPU執行指令內部的事件,與當前執行的指令有關,如程序的非法操作碼、地址越界、算術溢出、虛存系統的缺頁及專門的陷入指令等引起的事件。對異常的處理一般要依賴于當前程序的運行現場,異常不能被屏蔽,一旦出現應立即處理。
-
-
中斷機制的基本原理:
不同的中斷信號,需要用不同的中斷處理程序來處理。當CPU檢測到中斷信號后,會根據中斷信號的類型去查詢“中斷向量表”,以此來找到相應的中斷處理程序在內存中的存放位置。
?
?
-
程序接口(廣義指令)
可以在程序中進行系統調用來使用程序接口。用戶間接使用使用程序接口(系統調用)來請求OS中的服務(應用程序可以通過系統調用來請求獲得操作系統內核的服務),用戶程序非系統調用。-
庫函數是高級語言中提供的與系統調用對應的函數(也有些庫函數與系統調用無關),庫函數屬于用戶程序而非系統調用,是語言或應用程序的一部分,可以運行在用戶態。
-
系統調用是操作系統的一部分,是內核為用戶提供的程序接口,運行在核心態。未使用系統調用的庫函數,其執行效率通常要比系統調用的高。使用系統調用時,需要上下文的切換及狀態的轉換(用戶態->核心態)
凡是與共享資源有關的操作(如存儲分配、I/O操作、文件管理等),都必須通過系統調用的方式向操作系統內核提出服務請求,由操作系統內核代為完成。這樣可以保證系統的穩定性和安全性,防止用戶進行非法操作。
操作系統不同,系統調用接口也不同。
-
-
系統調用的過程
傳遞系統調用參數 -> 執行陷入指令(用戶態)->執行相應的請求內核程序處理系統調用(核心態)->返回應用程序
整個過程是用戶程序調用陷入指令(trap指令或訪管指令)CPU先從用戶態(目態)進入核心態(管態),執行系統調用的程序后返回用戶程序,CPU再從核心態(管態)轉換為用戶態(目態)。
-
注意:
先傳參再執行陷入指令
陷入指令(訪管指令)是在用戶態執行的,執行陷入指令之后立即引發一個內中斷,使CPU進入核心態。
發出系統調用請求是在用戶態,而對系統調用的相應處理在核心態下進行。當CPU檢測到中斷信號后,由硬件自動保存被中斷程序的斷點(即程序計數器PC),之后硬件找到該中斷信號對應的中斷向量,中斷向量指明中斷服務程序入口地址(各中斷向量統一存放在中斷向量表中,該表由操作系統初始化),接下來開始執行中斷服務程序,保存PSW、保存中斷屏蔽字、保存各通用寄存器的值,并提供與中斷信號對應的中斷服務。
處理外部中斷過程中,(程序計數器)PC值由中斷隱指令自動保存,而通用寄存器內容由操作系統保存,由操作系統完成的是提供中斷服務和初始化中斷向量表。
中斷處理是操作系統必須提供的功能。
進程調度可以不需要硬件的支持。它是操作系統內核進程,在核心態執行。要區分“在用戶態執行”和“在用戶態發生”兩個概念,
命令解釋程序屬于命令接口,在用戶態下執行;中斷,進程調度在核心態下執行,輸入/輸出在核心態下執行,因為涉及中斷操作。
系統調用、外部中斷和缺頁都發生在用戶態,處理在核心態;進程切換屬于系統調用執行過程的事件,發生在核心態。
中斷處理和子程序調用都需要壓棧以保護現場,中斷處理會保存而子程序調用不保存內容的是程序狀態字寄存器(PSW)。子程序調用只需要保存程序斷點,即該指令下一條指令的地址。內部異常是指來自CPU內部產生的中斷,內部異常的檢測是由CPU自身完成的,一旦出現就應立即處理。對于非法指令、除數為零等異常,無法通過異常處理程序恢復故障,不能回到原斷點執行,必須終止進程的執行。
操作系統中,通道技術是一種硬件技術。I/O通道實際上是一種特殊的處理器,它具有執行I/O指令的能力,通過執行通道程序來控制I/O操作。
sin()函數調用是在用戶態下進行的。
?
操作系統的體系結構
-
把早期的無結構的OS(第一代)、模塊化結構的OS(第二代)和分層式結構的OS(第三代),都統稱為傳統結構的OS,而把微內核結構的OS稱為現代結構的OS。
典型的大內核/宏內核/單內核 操作系統: Linux、UNIX
典型的 微內核 操作系統: Windows NT?
?
一些與硬件關聯較緊密的模塊,(如時鐘管理、中斷管理、設備驅動等處于操作系統的最底層);其次是運行頻率較高的程序,(如進程管理、存儲器管理和設備管理等);這兩部分內容構成了操作系統的內核。這部分內容的指令操作工作在核心態。
-
內核是計算機上配置的底層軟件,是計算機功能的延伸。主要包括四個方面。
- 時鐘管理:在計算機的各種部件中,時鐘是最關鍵的設備。時鐘的第一功能是計時,操作系統需要通過時鐘管理,向用戶提供標準的系統時間。另外,實現進程的切換。
- 中斷機制:中斷機制是操作系統各項操作的基礎。現代操作系統是靠中斷驅動的軟件。中斷機制中,只有一小部分功能屬于內核,它們負責保護和恢復中斷現場的信息,轉移控制權到相關的處理程序。
- 原語:處于操作系統的最底層,是最接近硬件的部分;這些程序的運行具有原子性,其操作只能一氣呵成;這些程序的運行時間較短,調用頻繁。在核心態下執行,常駐內存。定義原語的直接方法就是關閉中斷(關中斷),讓其所有動作不可分割地完成后再打開中斷(開中斷)。
- 對系統資源進行管理(系統控制的數據結構及處理):進程管理、存儲器管理和設備管理。系統中用來登記狀態信息的數據結構很多,如作業控制塊、進程控制塊(PCB)、設備控制塊、各類鏈表、消息隊列、緩沖區、空閑區登記表、內存分配表等。
-
微內核操作系統的基本概念
在單計算機環境下,大多也采用基于客戶/服務器模式的微內核結構,將操作系統劃分為兩大部分:微內核和多個服務器。
基本概念:
1)足夠小的內核
2)基于客戶/服務器模式
3)應用“機制與策略分離”原理
機制是指實現某一功能的具體執行機構。策略是在機制的基礎上借助于某些參數和算法來實現該功能的優化或達到不同的功能目標。通常將機制放在OS的微內核中。
現在一般都采用“機制與策略分離”原理,將機制部分以及與硬件緊密相關的部分放入微內核中。 -
微內核的基本功能
1)進程(線程)管理
確定進程優先級,切換調度進程之間的通信。
2)低級存儲器管理
邏輯地址轉換為物理地址。
3)中斷和陷入處理
捕獲發送消息給服務器。4)采用面向對象技術
面向對象技術可以用來編寫操作系統 -
微內核操作系統的優點
1)提高了系統的可擴展性,各服務器彼此獨立
2)增強了系統的可靠性
當某個服務器出現錯誤時,不會影響內核,也不會影響其他服務器。
3)可移植性
把操作系統移植到另一個計算機硬件平臺上所需作的修改是比較小的。(內核小,修改內核工作量小)
4)支持分布式系統
由于在微內核OS中,客戶和服務器之間、服務器和服務器之間的通信采用消息傳遞通信機制,致使微內核OS能很好地支持分布式系統和網絡系統。
5)融入了面向對象技術。 -
微內核操作系統存在的問題
運行效率低。主要原因是,在完成一次客戶對操作系統提出的服務請求時,需要利用消息實現多次交互和進行用戶/內核模式與上下文的多次切換(進程切換)。微內核的服務比較少,所以它較大內核比較穩定,為了改善運行效率,可以重新把一些常用的操作系統基本功能由服務器移入微內核中。?
?
-
操作系統引導(Boot)
?
?
-
虛擬機:使用虛擬化技術,將一臺物理機器虛擬化為多臺虛擬機器(Virtual Machine, VM),每個虛擬機器都可以獨立運行一個操作系統。
?
?
?
?
?