天天看點

【作業系統 1】作業系統概述

一、作業系統概述

作業系統是指控制和管理整個計算機系統的硬體和軟體資源,并合理地組織排程計算機的工作和資源的配置設定,以提供給使用者和其它軟體友善的接口和環境,它是計算機系統中最基本的系統軟體。

【作業系統 1】作業系統概述

 二、作業系統的功能和目标 -- 作為系統資源的管理者

程序是一個程式的執行過程,執行前需要将該程式放到記憶體中,才能被CPU處理。

【作業系統 1】作業系統概述

① 作業系統作為系統資源的管理者(這些資源包括軟體、硬體、檔案等),需要提供什麼功能?

作為系統資源的管理者

(1)提供的功能

  • 處理機管理
  • 存儲器管理
  • 檔案管理
  • 裝置管理

(2)目标

  • 安全
  • 高效

用微信和朋友視訊聊天的過程:

【作業系統 1】作業系統概述

② 作業系統作為使用者與計算機硬體之間的接口,要為其上層的使用者、應用程式提供簡單易用的服務,需要實作什麼功能?

作為計使用者和計算機硬體之間的接口

(1)提供的功能

  • 指令接口(聯機指令接口、脫機指令接口)
  • 程式接口
  • GUI圖形使用者界面

(2)目标,友善使用者使用

 指令接口:允許使用者直接使用

程式接口:允許使用者通過程式間接使用

GUI:現代作業系統中最流行的圖形使用者接口

1、指令接口

聯機指令接口 = 互動式指令接口

大概的意思就是你說一句,系統做一句。

比如cmd指令:

【作業系統 1】作業系統概述

脫機指令接口 = 批處理指令接口

【作業系統 1】作業系統概述

2、程式接口

比如C:\Windows\System32\user32.dll l程式員在程式中調用user32.dll(該調用即為系統調用)即可實作建立視窗等功能。隻能通過使用者程式間接使用。

3、GUI圖形使用者界面

使用者可以使用形象的圖形化界面進行操作,而不再需要使用複雜的指令或參數了。

③ 作業系統作為最接近硬體的層次,需要在純硬體的基礎上實作什麼功能?

需要提供的功能和目标:實作對硬體機器的拓展

沒有任何軟體支援的計算機稱為裸機,在裸機上安裝作業系統,可以提供資源管理功能和友善使用者的服務功能,将裸機改造成功能更強、使用更友善的機器。

通常把覆寫了軟體的機器稱為擴充機器,又稱為虛拟機。

三、作業系統的特征

1、并發

指多個事件在同一事件間隔内交替發生。

2、并行

指多個事件在同一時刻同時發生。

一個單核處理機CPU同一時刻隻能執行一個程式,是以作業系統會負責協調多個程式交替執行(這些程式微觀上是交替執行的,但是宏觀上看起來就像同時執行)

當今的計算機,一般都是多核CPU,比如我現在用的聯想小新Pro16的CPU就是I5 11300H,它是一個四核CPU,這意味着同一時刻可以有4個程式并行執行,但是作業系統的并發性依然必不可少。因為電腦可能開着十幾個應用程式,比如微信、谷歌、騰訊、酷狗音樂、Excel等等,都是需要同時工作的,而且電腦運作時,電腦系統自帶的程式,也數不勝數。

3、共享

共享即資源共享,是指系統中的資源可供記憶體中多個并發執行的程序共同使用。

兩種資源共享的方式:

(1)互斥共享方式

系統中的某些資源,雖然可以提供給多個程序使用,但一個時間段内隻允許一個程序通路該資源。

如對攝像頭裝置的共享使用。

(2)同時共享方式

系統中的某些資源,允許一個時間段内有多個程序“同時”對它們進行通路。

所謂的“同時”往往是宏觀的,而從微觀上講,這些程序可能是交替地對該資源進行通路的,即分時共享。

如對硬碟資源的共享使用。

4、虛拟

虛拟是指把一個實體上的實體變為若幹個邏輯上的對應物。實體實體是實際存在的,而邏輯上對應物是使用者感覺到的。

用一個例子來了解:

衆所周知,一個程式需要放入記憶體并給它配置設定CPU才能執行。

GTA5遊戲需要4GB的運作記憶體,QQ需要256MB的記憶體,迅雷需要250MB的記憶體,網易雲音樂需要256MB的記憶體...

我的電腦4GB。

問題:這些程式同時運作需要的記憶體遠遠大于4GB,那麼為什麼它們還可以在我的電腦上同時運作呢?

答:這是虛拟存儲器技術。實際隻有4GB的記憶體,在使用者看來似乎遠遠大于4GB。這應用了虛拟機技術中的“空分複用技術”。微觀上處理機在各個微笑的時間段内交替為各個程序服務。

5、異步

異步是指,在多道程式環境下,允許多個程式并發執行,但由于資源有限,程序的執行不是一管到底的,而是走走停停,以不可預知的速度向前推進,這就是程序的異步性。

如果失去了并發性,則系統隻能串行的處理各個程序,每個程序的執行會一貫到底,隻有系統擁有并發性,才有可能導緻異步性。

6、總結

如果沒有并發和共享,就談不上虛拟和異步,是以并發和共享是作業系統的兩個最基本的特征。

四、作業系統的發展和分類

1、手工操作階段

缺點:人機速度沖突

2、批處理階段

(1)單道批處理系統(引入脫機輸入輸出技術)

優點:緩解人機速度沖突

缺點:資源使用率較低

(2)多道批處理系統(作業系統開始出現)

優點:多道程式并發執行,資源使用率高

缺點:不提供人機互動功能

3、分時作業系統

優點:提供人機互動功能

缺點:不能有限處理緊急任務

4、實時作業系統

(1)硬實時系統

必須在絕對嚴格的規定時間内完成處理

(2)軟實時系統

能接受偶爾違反時間規定

(3)優點:能優先處理緊急任務

5、網絡作業系統

6、分布式作業系統

7、個人計算機作業系統

五、作業系統的運作機制和體系結構

1、什麼是指令

【作業系統 1】作業系統概述

簡單來說,指令就是處理器CPU能識别、執行的最基本指令,比如:加法指令就是讓CPU進行加法運算。 

 2、兩種指令、兩種處理器狀态、兩種程式

【作業系統 1】作業系統概述

(1)兩種指令

① 特權指令

如記憶體清零指令,不允許使用者程式使用

② 非特權指令

如普通的運算指令

(2)兩種處理器狀态

① 使用者态

此時CPU隻能執行非特權指令

② 核心态

特權指令、非特權指令都可以執行

用程式狀态字寄存器中的某标志位來辨別目前處理器處于什麼狀态。如0為使用者态,1為核心态。

(3)兩種程式

① 核心程式

作業系統的核心程式時系統的管理者,既可以執行特權指令,也可以執行非特權指令,運作在核心态。

② 應用程式

為了保證系統能安全運作,普通應用程式隻能執行非特權指令,運作在使用者态。

3、作業系統中的哪些功能應該由核心程式實作呢?

【作業系統 1】作業系統概述

 核心是計算機上配置的底層軟體,是作業系統最基本、最核心的部分。

實作作業系統核心功能的那些程式就是核心程式。

(1)與硬體關聯較緊密的子產品

① 時鐘管理

實作計時功能

② 中斷處理

負責實作中斷功能

③ 原語

  • 是一種特殊的程式
  • 出于作業系統最底層,是最接近硬體的部分
  • 這種程式的運作具有原子性,其運作隻能一氣呵成,不可中斷
  • 運作時間較短、調用頻繁

(2)對系統資源進行管理的功能

  • 程序管理
  • 存儲器管理
  • 裝置管理

有的作業系統不把這部分功能歸為“核心功能”,也就是說,不同的作業系統,對核心功能的劃分可能并不一樣。

4、作業系統的體系結構可以分為大核心和微核心。

(1)大核心:

  • 将作業系統的主要功能子產品都作為系統核心,運作在核心态
  • 優點:高性能
  • 缺點:核心代碼龐大,結構混亂,難以維護

(2)微核心:

  • 隻把最基本的功能保留在核心。
  • 優點:核心功能少,結構清晰,友善維護
  • 缺點:需要頻繁地在核心态和使用者态之間切換,性能低

六、中斷和異常

1、中斷的概念和作用

  1. 當中斷發生時,CPU立即進入核心态
  2. 當中斷發生後,目前運作的程序暫停運作,并由作業系統核心對中斷進行處理
  3. 對于不同的中斷信号,會進行不同的處理

發生了中斷,就意味着需要作業系統介入,開展管理工作。由于作業系統的管理工作(比如程序切換、配置設定IO裝置等)需要使用特權指令,是以CPU要從使用者态切為核心态。中斷可以使CPU從使用者态切換為核心态,使作業系統獲得計算機的控制權。有了中斷,才能實作多道程式并發執行。

使用者态和核心态的切換是通過中斷實作的,并且中斷是唯一途徑。

2、中斷的分類

(1)内中斷

信号來源:CPU内部

① 陷阱

有意而為之的異常,如系統調用

② 故障

由錯誤條件引起的,可能被故障處理程式修複,如缺頁。

③ 終止

不可恢複的錯誤造成的結果,終止處理程式不再将控制傳回給引發終止的應用程式,如整數除0。

(2)外中斷

信号來源:CPU外部

① IO中斷請求

② 人工幹預

3、外中斷的處理過程

  1. 執行完每個指令後,CPU都要檢查目前是否有外部中斷信号
  2. 如果檢測到外部中斷信号,則需要保護被中斷程序的CPU環境(如程式狀态子PSW、程式計數器PC、各種通用寄存器)
  3. 根據中斷信号類型轉入相應的中斷處理程式
  4. 恢複原程序的CPU環境并退出中斷,傳回原程序繼續往下執行

七、系統調用

1、什麼是系統調用

系統調用是作業系統提供給應用程式使用的接口,可以了解為一種可供應用程式調用的特殊函數,應用程式可以發出系統調用請求來獲得作業系統的服務。

2、系統調用作用

應用程式通過系統調用請求作業系統的服務,服務中的各種共享資源都由作業系統統一掌管,是以在使用者程式中,凡是與資源有關的操作(如存儲配置設定、IO操作、檔案管理等),都必須通過系統調用的方式向作業系統提出服務請求,由作業系統代為完成。這樣可以保證系統的穩定性和安全性,防止使用者進行非法操作。

3、系統調用的分類

  1. 裝置管理(完成裝置的請求、釋放、啟動等功能)
  2. 檔案管理(完成檔案的讀寫、建立、删除等功能)
  3. 程序控制(完成程序的建立、撤銷、阻塞、喚醒等功能)
  4. 程序通信(完成程序之間的消息傳遞、信号傳遞等功能)
  5. 記憶體管理(完成記憶體的配置設定、回收等功能)

系統調用相關處理涉及到對系統資源的管理,對程序的控制,這些功能需要執行一些特權指令才能完成,是以系統調用的相關處理需要在核心态下進行。

4、系統調用的過程簡介

【作業系統 1】作業系統概述

傳遞系統調用參數 -> 執行陷入指令(使用者态) -> 執行系統調用相應服務程式(核心态) -> 傳回使用者程式。

小總結:

  1. 陷入指令是在使用者态執行的,執行陷入指令之後立即引發一個内中斷,進而CPU進入核心态
  2. 發出系統調用請求的是使用者态,而對系統調用的相應處理在核心态下進行
  3. 陷入指令是唯一一個隻能在使用者态執行,而不可在核心态執行的指令

往期精彩内容:

Java知識體系總結

【全棧最全Java架構總結】SSH、SSM、Springboot

超詳細的springBoot學習筆記

常見資料結構與算法整理總結

Java設計模式:23種設計模式全面解析

Java面試題總結(附答案)

10萬字208道Java經典面試題總結(附答案,建議收藏)

MySql知識體系總結

Linux知識體系總結

【Vue基礎知識總結 1】Vue入門

Redis知識體系總結

繼續閱讀