第一章-概念

Mr_申發表於2023-02-27

1.1 作業系統的概念:

 1.1.1 什麼是作業系統:

  1. 控制和管理整個計算機系統的硬體和軟體資源
  2. 合理地組織排程計算機的工作和資源的分配
  3. 提供給使用者和其他軟體方便的介面和環境
  4. 是計算機最基本的系統軟體

 1.1.2 作業系統的功能和目標:

  1. 作業系統作為系統資源(資源:軟體、硬體、檔案等)的管理者,提供什麼功能? 
    1. 提供功能:處理機管理(CPU)、儲存器管理、檔案管理、裝置管理
    2. 目標:安全高效
    3. 理解案例:開啟QQ和朋友聊天,QQ是軟體,QQ的安裝路徑有組織存在作業系統(資料夾中),QQ的程式相關資料放入記憶體,QQ相關的程式由CPU處理   
  2. 作業系統作為使用者與計算機硬體之間的介面,要為其上層的使用者、應用程式提供簡單易用的服務,需要實現什麼功能?
    1. 提供功能:命令介面、程式介面、GUI(圖形使用者介面) <-- 這三個統稱"使用者介面"
      1. 命令介面:允許使用者直接使用
        1. 聯機介面:一句系統一執行(如:cmd,輸入一個指令就執行一個指令)
        2. 離線介面:一堆系統做一堆(如:如寫程式在記事本,然後在程式)
      2. 程式介面:允許使用者提供程式間接使用,程式介面=系統介面(如:透過程式,注意是程式,呼叫user32.dll,就是程式介面)
      3. GUI(圖形使用者介面):圖形使用者介面(如:windows、安卓的圖形頁面就是)  
    2. 目標:方便使用者使用      
  3. 作業系統作為最近硬體的層次,需要在硬體的基礎是實現什麼功能?
    1. 提供功能:實現對硬體機機器的擴充(如:在裸機上安裝作業系統,提高機器的使用能力)

 1.1.3 總結:

  1. 作業系統是在硬體和應用程式的中間
  2. 作業系統對系統如:CPU、程式等(叫做系統資源)進行管理
  3. 提供介面給使用者使用,一部分直接使用(如:cmd視窗),一部分需要透過軟體間接使用(如:user32.dll)
  4. 作業系統主要目的:方便使用者的使用

1.2 作業系統的特徵:

 1.2.1 作業系統的特徵有:併發、共享、虛擬、非同步:

  1. 併發:指兩個或多個事務在同一時間內間隔發生(宏觀上是同時發生,微觀上就進行一次任務發生,因為它的交替執行)
    1. 並行:指兩個或多個事務在同一時刻同時發生 
  2. 共享:系統中的資源,提供記憶體中多個併發執行的程式使用
    1. 互斥共享方式:系統中的某些資源,可以提供給多個程式使用,但一個時間段只允許一個程式訪問該資源(如:微信影片了,就不能在使用相機拍影片)
    2. 同時共享方式:系統中的某些資源,允許同一個時間段由多個程式“同時”進行訪問(如:QQ和微信都發生檔案,宏觀是是同時發生,微觀上是交替訪問硬碟進行發生) 
  3. 虛擬:把一個物理上的實體變成若干個邏輯上對應物,物理實體是時間存在,對應物是使用者感受
    1. 理解案例:電腦只有4GB的執行記憶體,GTA5需要4GB來執行,當我玩GTA5,我又開啟qq、微信、網易雲這些原超4GB,還能執行用到的就是虛擬技術
    2. 虛擬技術分為:空間多工技術、分時多工技術
  4. 非同步:在多道程式環境下,允許多個程式併發執行,但由於資源有限,程式的這些不是一貫待到底,而是走走停停,以不可預知的速度推進
    1. 理解案例:一個電腦(人),只有一個心(CPU),現在要進行兩段約會(兩個程式),當人把心給到第一個約會的人,第二個約會的人也向人要心,但心在約會一的手裡,這就是可限的資源,導致走走停停

 1.2.1 併發性和共享性的關係:

  1. 併發和共享是互為存在條件
    1. 沒有併發,共享就失去意義
    2. 沒有共享,就不行實現併發
  2. 沒有併發和共享,就談不上性虛擬和非同步,所有併發和共享是作業系統最基本的特徵 

 1.2.3 總結:

  1. 作業系統的特徵:併發、共享、虛擬、非同步
  2. 沒有併發和共享就沒有,虛擬和非同步
  3. 併發和共享是相輔相成,是作業系統最基本的特徵  

1.3 作業系統的發展和分類:

 

  1.3.1 總結:

  1. 每一代操作的跟新都是解決上一代操作的缺點

1.4 作業系統的執行機制與體系結構

 1.4.1 執行機制和體系結構分為:

  1. 分為:執行機制、作業系統核心、作業系統的體系結構  
  2. 執行機制:兩種指令、兩種處理器狀態、兩種程式
    1. 兩種指令:特權指令、非特權指令
      1. 特權指令:特殊的指令(不允許使用者程式執行的指令)【透過處理器狀態來標識只是可以使用】
      2. 非特權指令:普通的運算指令(允許使用者程式使用)
    2. 兩種處理器狀態:核心態、使用者態
      1. 使用者態:只能執行非特權指令
      2. 核心態:特權指令、非特權指令都可以執行
      3. 怎麼知道是使用者、核心態,用程式狀態暫存器中的某個標識來進行標識
      4. 使用者態到->核心態是透過中斷實現的。並且中斷是唯一的途徑
      5. 核心態->使用者態執行一個特權指令,將程式狀態的標誌設定為:使用者態
    3. 兩種 程式:核心程式、應用程式
      1. 核心程式:作業系統的核心程式是系統的管理者,可以執行特權指令,也可以執行非特權指令,執行在核心態
      2. 應用程式:保證系統能安全執行,普通的應用程式只能執行非特權指令,執行在使用者態  
  3. 作業系統核心分為:時鐘管理、中斷處理、原語、系統資源進行管理的功能
    1. 時鐘管理:實現計時功能
    2. 中斷處理:負責實現中斷機制
    3. 3. 原語:
      1. 一種特殊的程式
      2. 處於作業系統底層,最近硬體的部分
      3. 具有原子性,要麼全執行,要麼全步執行
      4. 執行時間短,呼叫頻繁
      4. 系統資源進行管理的功能:(不同的作業系統,對這個也不同)
      1. 程式管理
      2. 儲存器管理
      3. 裝置管理
  4. 作業系統的體系結構:大核心、微核心
    1. 大核心:
      1. 作業系統的主要功能都作為系統核心,執行在核心態
      2. 優點:高效能
      3. 缺點:核心程式碼大,結構混亂,難以維護
    2. 微核心:
      1. 只把基本的功能保留中核心
      2. 優點:核心功能少,結構清晰,方便維護
      3. 缺點:效能低,需要頻繁地在使用者態和核心態切換  

 1.4.2 總結:

        1. 執行機制:
          1. 特權指令(不允許使用者程式使用)、非特權指令(不允許使用者程式使用)
          2. 使用者態(只能非特權指令)、核心態(在核心態可以使用特權指令,和非特權指令)
          3. 核心程式(執行在核心態,核心管理者)、應用程式(執行在使用者態,保證系統安全執行)
        2. 作業系統核心分為:時鐘管理、中斷處理、原語、系統資源進行管理的功能
          1. 這些都是管理作業系統
        3. 作業系統的體系結構:大核心、微核心

1.5 中斷和異常

  1.5.1 中斷機制的誕生:

  1. 實現多道程式併發執行而引入的一種技術

  1.5.2 中斷的概念和作用:

  1. 概念:發生中斷,意味著需要作業系統介入開展管理工作,CPU立即進入核心態
    1. CPU立即進入核心態理解:當執行“檔案1”的時候處於使用者態,“檔案1”進行IO操作,CPU進入核心態,就會去判斷執行到“檔案2”
  2. 作用:
    1. 使用者態到->核心態是透過中斷實現的。並且中斷是唯一的途徑

    1.5.3 中斷的分類:

  1. 內中斷:CPU內部進行中斷的訊號

    1. 指令中斷、硬體故障、軟體中斷
  2. 外中斷:CPU外部進行中斷的訊號 
    1. 外設請求、人工干預

  1.5.4 外中斷的處理過程:

  1.5.5 總結:

  1. 中斷是為了解決多道程式併發執行,提高CPU的利用率
  2. 中斷分CPU外部和內部中斷,
  3. 外部中斷會對當前的程式進行一個型別存檔的操作

1.6 系統呼叫

  1.6.1 什麼是系統呼叫,和作用:

  1. 系統呼叫:作業系統提供給應用程式使用的介面
    1. 應用程式提供系統呼叫來請求獲取作業系統的服務
  2. 作用:
    1. 系統呼叫會使處理器從使用者態進入核心態
    2. 保證系統的穩定性和安全性
    3. 防止使用者進行非法操作
  3. 理解案例:如一個應用程式需要使用檔案,那麼該程式需要使用作業系統提供的介面來請求獲取對檔案的操作

  1.6.2 什麼資源需要作業系統的介入:

  1. 分類:裝置管理、檔案管理、程式控制、程式通訊、記憶體管理
  2. 總結:與資源有關的操作,直接影響到其他程式的存在,一定需要作業系統介入

  1.6.3 系統呼叫和庫函式的區別:

  1. 系統呼叫:是向上層提供的介面
  2. 庫函式:是對系統呼叫的進一步封裝
  3. 現在大多數的程式語言如C、java提供的庫函式間接地進行系統呼叫

   1.6.4 系統呼叫背後的過程:

  1. 傳遞系統呼叫引數
  2. 執行陷入指令(執行陷入指令產生中斷,使處理器從使用者態進入核心態)
  3. 執行系統呼叫相應服務程式
  4. 返回使用者程式
  5. 細節:系統呼叫發生在使用者態,系統呼叫的處理發生在核心態

  1.6.5  總結:

  1. 系統呼叫是提供給應用程式使用的介面,應用程式需要透過請求來獲取作業系統的服務
  2. 與資源,直接影響其他程式的存在,一定需要作業系統的進入,所有需要系統呼叫來實現
  3. 系統呼叫是向上提供介面,庫函式是對系統呼叫進一步封裝
  4. 系統呼叫發生在使用者態,系統呼叫的處理發生在核心態