【操作系统】概念、功能、特征、分类、运行机制、内核、体系结构、中断和异常、系统调用简介
文章目錄
- 一、概念
- 二、功能及目標
- 2.1 系統資源管理者
- 2.2 用戶與計算機硬件之間的接口
- 2.2.1 命令接口
- 聯機命令接口
- 脫機命令接口
- 2.2.2 程序接口
- 2.2.3 圖像用戶界面
- 2.3 最接近硬件的層次
- 三、操作系統的特征
- 3.1 并發
- 3.2 共享
- 3.3 并發與共享的關系
- 3.4 虛擬
- 3.5 異步
- 四、發展與分類
- 4.1 手工操作階段
- 4.2 單道批處理系統
- 4.3 多道批處理系統
- 4.4 分時操作系統
- 4.5 實時操作系統
- 五、運行機制與體系結構
- 5.1 運行機制
- 5.1.1 兩種指令
- 5.1.2 兩種處理器狀態
- 5.1.3 兩種程序
- 5.2 操作系統的內核
- 5.3 操作系統的體系結構
- 六、中斷和異常
- 6.1 概念和作用
- 6.2 中斷分類
- 6.3 外中斷處理工程
- 七、系統調用
- 7.1 系統調用介紹
- 7.2 系統調用與庫函數的區別
- 7.3 系統調用的過程
一、概念
大家熟悉的操作系統:
Windows、MacOS、Linux、Android、IOS
操作系統(Operating System,OS) 是指控制和管理整個計算機系統的硬件和軟件資源,并合理地組織調度計算機的工作和資源的分配,以提供給用戶和其他軟件方便的接口和環境,它是計算機系統中最基本的系統軟件。
在任務管理器中,我們可以看到操作系統對軟件和硬件的管理。
二、功能及目標
計算機系統的結構層次
包含以下三個功能:
1 操作系統作為系統資源的管理者(這些資源包括軟件、硬件、文件等),需要提供什么功能?
2 操作系統作為用戶與計算機硬件之間的接口,要為其上層的用戶、應用程序提供簡單易用的服務,需要實現什么功能?
3 操作系統作為最接近硬件的層次,需要在純硬件的基礎上實現什么功能?
2.1 系統資源管理者
- 提供的功能:處理機管理、存儲器管理、文件管理、設備管理
- 目標:安全、高效
舉例——用QQ和朋友視頻聊天,在整個過程中,操作系統要保證安全和高效。
🔶 步驟1:在文件夾中找到QQ的安裝位置
逐層打開文件夾,找到QQ.exe這個程序(可執行文件)的存放位置。操作系統提供了文件管理功能。
🔶 步驟2:雙擊打開QQ.exe
需要把該程序相關數據放入內存。操作系統提供了存儲器管理功能。
🔶 步驟3:QQ程序正常運行
對應的進程被處理及(CPU)處理。操作系統提供了處理機管理功能。
🔶 步驟4:開始和朋友視頻聊天
需要將攝像頭設備分配給進程。操作系統提供了設備管理功能。
2.2 用戶與計算機硬件之間的接口
用戶接口:
- 命令接口(運行用戶直接使用)
- 聯機命令接口:用戶說一句,系統做一句
- 脫機命令接口:用戶說一堆,系統做一堆
- 程序接口(運行用戶通過程序間接使用):由一組系統調用組成(程序接口=系統調用)
系統調用=系統調用命令=廣義指令
2.2.1 命令接口
聯機命令接口
聯機命令接口實例(Windows系統),聯機命令接口 = 交互式命令接口
Step 1:win鍵+R
Step 2:輸入cmd,按回車,打開命令解釋器
Step 3:嘗試使用time指令
脫機命令接口
脫機命令接口實例(Windows系統),脫機命令接口 = 批處理命令接口
使用windows系統的搜索功能,搜索C盤中的*. bat文件,用記事本任意打開一個
2.2.2 程序接口
程序接口:如C:\Windows\System32\user32.dll程序員在程序中調用user32. dll (該調用過程即為系統調用),即可實現創建窗口等功能。只能通過用戶程序間接使用。
2.2.3 圖像用戶界面
GUI:圖形用戶界面(Graphical User Interface)
用戶可以使用形象的圖形界面進行操作,而不再需要記憶復雜的命令、參數。例子:在Windows操作系統中,刪除一個文件只需要把文件“拖拽”到回收站即可。
2.3 最接近硬件的層次
需要提供的功能和目標:實現對硬件機器的拓展
沒有任何軟件支持的計算機成為裸機。在裸機上安裝的操作系統,可以提供資源管理功能和方便用戶的服務功能,將裸機改造成功能更強、使用更方便的機器。
通常把覆蓋了軟件的機器成為擴充機器,又稱之為虛擬機
類比
——————————————
硬件:錘子、鋸子、木頭、釘子;操作系統:優秀的工匠
操作系統對硬件機器的拓展:通過優秀工匠,這些簡單的原料可以組織成房子、帆船、匹諾曹。。。
普通用戶可直接使用工匠提供的房子、帆船、匹諾曹,而無需關心這些東西在底層是怎么組織起來工作的
三、操作系統的特征
并發、共享、虛擬、異步
3.1 并發
指兩個或多個事件在同一時間間隔內發生。這些事件宏觀上是同時發生的,但微觀上是交替發生的。
并行:指兩個或多個事件在同一時刻同時發生
操作系統的并發性指計算機系統同時存在著多個運行著的程序。
一個單核處理器同一時刻只能執行一個程序,因此操作系統會負責協調多個程序交替執行(這些程序微觀上是交替執行的,但宏觀上看起來就像在同時執行)
事實上,操作系統就是伴隨著“多道程序技術”而出現的。因此,操作系統和程序并發是一起誕生的。
當今的計算機,一般都是多核CPU,比如Intel的第八代i3處理器就是4核CPU,這意味著同一時刻可以有4個程序并行執行,但是操作系統的并發性依然必不可少。當代人使用計算機絕對有4個以上的程序需要同時工作。
3.2 共享
共享即資源共享,是指系統中的資源可供內存中多個并發執行的進程共同使用。
所謂的“同時”往往是宏觀上的,而在微觀上,這些進程可能是交替地對該資源進行訪問的(即分時共享)。
互斥共享方式:使用QQ和微信視頻。同一時間段內攝像頭只能分配給其中一個進程。
同時共享方式:使用QQ發送文件A,同時使用微信發送文件B。宏觀上看,兩邊都在同時讀取并發送文件,說明兩個進程都在訪問硬盤資源,從中讀取數據。微觀上看,兩個進程是交替著訪問硬盤的。
3.3 并發與共享的關系
并發性指計算機系統中同時存在著多個運行著的程序。
共享性是指系統中的資源可供內存中多個并發執行的進程共同使用。
通過上述例子來看并發與共享的關系:使用QQ發送文件A,同時使用微信發送文件B
1 兩個進程正在并發執行 (并發性)
2 需要共享地訪問硬盤資源 (共享性)
如果失去并發性,則系統中只有一個程序正在運行,則共享性失去存在的意義。
如果失去共享性,則QQ和微信不能同時訪問硬盤資源,就無法實現同時發送文件,也就無法并發。
因此二者互為存在條件。
3.4 虛擬
虛擬是指把一個物理上的實體變為若干邏輯上的對應物。物理實體(前者)是實際存在的,而邏輯上對應物(后者)是用戶感受到的。
分為:空分復用技術(虛擬存儲技術)、時分服用技術(虛擬處理器)
問題:GTA5需要4GB的運行內存,QQ需要256MB的內存,迅雷需要256MB的內存,網易云音樂需要256MB的內存。而我的電腦只有4GB內存。這些程序同時運行需要的內存遠大于4GB,那么為什么它們還可以在我的電腦上同時運行呢?
回答:這是虛擬存儲器技術。實際只有4GB的內存,在用戶看來似乎遠遠大于4GB
問題:一個程序需要放入內存并給它分配CPU才能執行,假設某單核CPU計算機中打開了五個軟件,既然一個程序需要被分配CPU才能正常執行,那么為什么單核CPU的電腦能同時運行這么多個程序?
回答:這是虛擬存儲器技術。實際上只有一個單核CPU,在用戶看來似乎有6個CPU在同時為自己服務。虛擬技術中的“時分復用技術”。微觀上處理機在各個微小的時間段內交替著為各個進程服務。
如果失去并發性,則一段時間內系統只需運行一道程序,那么久失去了實現虛擬性的意義了。因此,沒有并發性就談不上虛擬性。
3.5 異步
異步是指在多道程序環境下,允許多個程序并發執行,但由于資源有限,進程的執行不是一貫到底的,而是走走停停的(因為阻塞),以不可預知的速度向前推進,這就是進程的異步性。
如果失去并發性,則系統只能串行地處理各個進程,每個進程的執行會一貫到底。只有系統擁有并發性,才可能導致異步性。
四、發展與分類
4.1 手工操作階段
4.2 單道批處理系統
引入脫機輸入/輸出技術(用磁帶完成),并監督程序負責控制作業的輸入、輸出。
4.3 多道批處理系統
4.4 分時操作系統
計算機以時間片為單位輪流為各個用戶/作業服務,各個用戶可通過終端與計算機進行交互。
主要優點:用戶請求可以被即時響應,解決了人機交互問題。允許多個用戶同時使用一臺計算機,并且用戶對計算機的操作相互獨立,感受不到別人的存在。
主要缺點:不能優先處理一些緊急任務。操作系統對各個用戶/作業都是完全公平的,循環地為每個用戶/
作業服務一個時間片,不區分任務的緊急性。
4.5 實時操作系統
主要優點:能夠優先響應一些緊急任務,某些緊急任務不需時間片排隊。
在實時操作系統的控制下,計算機系統接收到外部信號后及時進行處理,并且要在嚴格的時限內處理完事件。實時操作系統的主要特點是及時性和可靠性。
五、運行機制與體系結構
5.1 運行機制
5.1.1 兩種指令
指令:處理器CPU能識別、執行的最基本命令。
比如,代碼 x = x + 1可以翻譯成多條對應的指令來執行。
比如,加法指令就是讓CPU進行加法操作。
指令分為:
- 特權指令:不允許用戶程序使用。如內存清零指令,如果用戶使用這個指令,就意味著一個用戶可以將其他用戶的內存數據隨意清零,這樣做很危險,所以不允許用戶程序使用。
- 非特權指令:如普通的運算指令。
CPU根據判斷用戶的狀態來決定是否執行這個指令。
5.1.2 兩種處理器狀態
- 用戶態(目態):CPU只能執行非特權指令
- 核心態(管態):特權指令、非特權指令都能執行。
兩種狀態是由程序狀態寄存器(PSW)中的某個標志位來標識當前處理器處于什么狀態。
5.1.3 兩種程序
- 內核程序:操作系統的內核程序是系統的管理者,既可以執行特權指令,也可以執行非特權指令,運行在核心態。
- 應用程序:為了保證系統能安全運行,普通應用程序只能執行非特權指令,運行在用戶態。
5.2 操作系統的內核
我們安裝完Windows操作系統后,會發現操作系統提供了多種多樣的功能,比如“記事本”、“任務管理器”。然而,這些功能并不是必不可少的。即使沒有“任務管理器”,我們仍然可以使用計算機。
內核是計算機上配置的底層軟件,是操作系統最基本、最核心的部分。實現操作系統內核功能的那些程序就是內核程序。
5.3 操作系統的體系結構
大內核:
- 將操作系統的主要功能模塊都作為系統內核,運行在核心態。
- 優點:高性能
- 缺點:內核代碼龐大,結構混亂,難以維護。
微內核:
- 只把最基本的功能保留在內核。
- 優點:內核功能少,結構清晰,方便維護。
- 缺點:需要頻繁地在核心態和用戶態之間切換,性能低。
六、中斷和異常
6.1 概念和作用
早期計算機,程序加載到內存中執行,執行結束后等待IO輸出,輸出完成后再加載執行下一個程序,各個程序只能串行執行,系統資源利用率低。
為了解決上述問題,人們發明了操作系統(作為計算機的管理者),引入中斷機制,實現了多道程序并發執行。
本質:發生中斷就意味著需要操作系統介入,開展管理工作。
1 當中斷發生時,CPU立即進入核心態
2 當中斷發生后,當前運行的進程暫停運行,并由操作系統內核對中斷進行處理
3 對于不同的中斷信號,會進行不同的處理
發生了中斷,就意味著需要操作系統介入,開展管理工作。由于操作系統的管理工作( 比如進程切換、分配I/O設備等)需要使用特權指令,因此CPU要從用戶態轉為核心態。中斷可以使CPU從用戶態切換為核心態,使操作系統獲得計算機的控制權。有了中斷,才能實現多道程序并發執行。
用戶態與核心態的切換
- 用戶態到核心態的切換:通過中斷實現的,并且中斷是唯一途徑。
- 核心態到用戶態的切換:通過執行一個特權指令,將程序狀態字(PSW)的標志位設置為用戶態。
6.2 中斷分類
🔶 內中斷:也稱異常、例外、陷入。
信號來源:CPU內部,與當前執行的指令有關
分類方式1
1 自愿中斷——指令中斷,如:系統調用時使用的訪問指令(又叫陷入指令、trap指令)
2 強迫中斷:1)硬件故障,如:缺頁;2)軟件中斷,如:整數除0
分類方式2
1 陷阱、陷入(trap):有意而為之的異常,如系統調用。
2 故障(fault):由錯誤條件引起的,可能被故障處理程序修復,如:缺頁。
3 終止(abort):不可恢復的致命錯誤造成的結果,終止處理程序不再將控制返回給引發終止的應用程序,如:整數除0
🔶 外中斷:也稱中斷(狹義的中斷)
信號來源:CPU外部,與當前執行的指令無關
分類:
1 外設請求,如:I/O操作完成發出的中斷信號
2 人工干預,如:用戶強制終止一個進程
6.3 外中斷處理工程
用戶依次執行各條指令
步驟1:執行完每個指令之后,CPU都要檢查當前是否有外部中斷信號。
步驟2:如果檢測到外部中斷信號,則需要保護被中斷進程的CPU環境(如程序狀態字PSW、程序計數器PC、各種通用寄存器)
步驟3:根據中斷信號類型轉入相應的中斷處理程序。
步驟4:恢復原進程的CPU環境并推出中斷,返回原進程繼續往下執行。
七、系統調用
7.1 系統調用介紹
操作系統作為用戶和計算機硬件之間的接口,需要向上提供一些簡單易用的服務。主要包括命令接口和程序接口。其中,程序接口由一組系統調用組成。
系統調用是操作系統提供給應用程序(程序員/編程人員)使用的接口,可以理解為一種可供應用程序調用的特殊函數,應用程序可以發出系統調用請求來獲得操作系統的服務。
生活場景:你去學校打印店打印論文,當你按下“打印”之后,打印機開始工作。你的論文打印到一半時,另一位同學按下了“打印”按鈕開始打印他自己的論文。最終,你的論文和該同學的論文頁面并沒有混雜在一起,都是按順序依次打印的。
如果各個進程可以隨意地使用打印機,會發生什么情況?
你的論文打印到一半時,另一位同學按下了“打印”按鈕開始打印他自己的論文。結果,你的后半部分論文與該同學的頁面混雜在一起了。
應用程序通過系統調用請求操作系統的服務。系統中的各種共享資源都由操作系統統一掌管,因此在用戶程序中,凡是與資源有關的操作(如存儲分配、I/0操作、 文件管理等),都必須通過系統調用的方式向操作系統提出服務請求,由操作系統代為完成。這樣可以保證系統的穩定性和安全性,防止用戶進行非法操作。
系統調用相關處理涉及到對系統資源的管理、對進程的控制,這些功能需要執行一些特權指令才能完成,因此系統調用的相關處理需要在核心態下進行。
按功能分類:
- 設備管理:完成設備的請求、釋放、啟動等功能
- 文件管理:完成文件的讀、寫、創建、刪除等功能
- 進程控制:完成進程的創建、撤銷、阻塞、喚醒等功能
- 進程通信:完成進程之間的消息傳遞、信號傳遞等功能
- 內存管理:完成內存的分配、回收等功能
7.2 系統調用與庫函數的區別
普通應用程序:可直接進行系統調用,也可以使用庫函數。有的庫函數涉及系統調用,有的不涉及。
編程語言:向上提供庫函數。有時會將系統調用封裝成庫函數,以隱藏系統調用的一些細節,使商城進行系統調用更加方便。
操作系統:向上提供系統調用。
不涉及系統調用的庫函數:如,取絕對值的函數
涉及系統調用的庫函數:如,創建一個新文件的函數
7.3 系統調用的過程
傳遞系統調用參數——執行陷入指令(用戶態)——執行系統調用相應服務程序(核心態)——返回用戶程序
注意:
1 陷入指令是在用戶態執行的,執行陷入指令之后立即引發一個內中斷,從而CPU進入核心態。
2 發出系統調用請求是在用戶態,而對系統調用的相應處理是在核心態下進行。
3 陷入指令是唯一一個只能在用戶態執行,而不可在核心態執行的指令。
總結
以上是生活随笔為你收集整理的【操作系统】概念、功能、特征、分类、运行机制、内核、体系结构、中断和异常、系统调用简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c# Process监控进程 与 Man
- 下一篇: 基于android平台的语音机器人服务娱