北航OS課程筆記--一、緒論

qiuer0121發表於2024-07-25

部分內容參考王道,一些名詞與北航課件有少量出入。
歡迎指正。

緒論

作業系統定義

作業系統是一組管理計算機硬體資源的軟體集合,它:

  • 提供一個計算機使用者與計算機硬體系統之間的介面,使計算機系統更易於使用
  • 有效控制和管理計算機系統中的各種硬體和軟體資源
  • 合理地組織計算機系統的工作流程,以改善系統效能。

image-20240317232210113image-20240317232242029

作業系統功能

向上層提供方便易用的服務。

image-20240317205426617

作為最接近硬體的層次,作業系統需要實現對硬體機器的擴充。

作業系統簡史

  1. 手工操作階段:紙帶機

    主要缺點:使用者獨佔全機,人際速度矛盾導致資源利用率很低。

  2. 批處理階段(單道)

    • 把使用者提交的作業成批送入計算機,由作業排程程式自動選擇作業執行。
    • 目的:縮短作業之間的交換時間;減少處理機的空閒等待,提高系統效率
    • 聯機批處理:作業的輸入、輸出由CPU來處理–>高速主機與慢速外設
    • 離線批處理:輸入、輸出脫離主機控制,增加一臺專門用於與輸入輸出裝置打交道的衛星機。
    • 缺點:每次主機記憶體中僅存放一道作業,每當它執行期間發出輸入/輸出請求後,CPU便處於等待IO完成的狀態,使得CPU空閒。
  3. 批處理階段(多道):

    • 每次往記憶體中讀入多道程式,並允許它們交替在CPU中執行。

    • 作業系統正式誕生,用於支援多道程式併發執行。

      image-20240317211714455

    • 優點:系統吞吐量大,資源利用率高;

    • 缺點:平均週轉時間長;沒有人機互動功能,無法除錯程式,無法在執行過程中輸入引數。

  4. 分時作業系統:

    • 把處理機的執行時間分成很短的時間片,按時間片輪流把處理機分配給各聯機作業使用。
    • 多個使用者分享使用同一臺計算機;多個程式分時共享硬體和軟體資源。
    • 使用者請求可以被及時響應,解決了人機互動問題。
    • 主要缺點:不能優先處理緊急任務。
  5. 實時作業系統:

    • 計算機系統接收到外部訊號後及時進行處理,並且要在嚴格的時限內處理完事件
    • 及時性和可靠性
  6. 作業系統的網路化(略)

  7. 分散式作業系統(略)

作業系統的特徵

  • 併發

    • 併發是指一個處理器同時處理多個任務。在同一時刻只能有一條指令執行,但多個程序指令被快速的輪換執行,使得在宏觀上具有多個程序同時執行的效果。

      單核CPU同一時刻只能執行一個程式,各個程式只能併發地執行。

    • 並行是指多個處理器或者是多核的處理器同時處理多個不同的任務。

      多核CPU同一時刻可以執行多個程式,各個程式可以並行地執行。

    • 併發是邏輯上的同時發生(simultaneous),而並行是物理上的同時發生。

  • 共享

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

    • 兩種共享方式:

      • 互斥共享方式:系統中的某些資源在一個時間段內只允許一個程序訪問該資源

      • 同時共享方式:系統中的某些資源,允許一個時間段內由多個程序“同時”對它們進行訪問。

        “同時”往往是宏觀上的,微觀上是交替訪問資源,即分時共享。

  • 虛擬

    • 把一個物理上的實體變為若干個邏輯上的對應物。
  • 非同步性

    • 在多道程式環境下,允許多個程式併發執行;但由於資源有限,程序的執行不是一貫到底的,而是走走停停,以不可預知的速度向前推進,這就是程序的非同步性。

併發和共享是最基本的兩個特徵,且它們互為存在條件。

作業系統的執行機制

  • 核心程式&應用程式

    • 應用程式:建立在作業系統上的程式
    • 核心程式組成了作業系統核心(簡稱核心
  • 特權指令&非特權指令

    • 特權指令:如“記憶體清零指令”等,只能由作業系統核心來使用;核心程式中可能存在。
    • 非特權指令:與上相反。應用程式中只有非特權指令。
  • 核心態&使用者態

    • CPU處於核心態時,說明正在執行核心程式,此時可以執行特權指令
    • CPU處於使用者態時,說明正在進行應用程式,此時只能執行非特權指令
  • 核心態與使用者態的切換:

    • 剛開機時為核心態。
    • 開機完成後,作業系統核心程式能用一條特權指令,將PSW的標誌位設為“使用者態”
    • 作業系統核心讓出CPU,應用程式在“使用者態”執行。
    • 當應用程式中有特權指令,但CPU處於使用者態時,會引發一個中斷訊號
    • CPU檢測到中斷訊號後,會變為核心態,並停止執行當前的應用程式,轉而對引發中斷的時間進行處理。

    image-20240317215849753

中斷和異常

名詞上略有差異。以下為王道版本:

中斷是讓作業系統核心奪回CPU使用權的唯一途徑。

  • 內中斷(即異常):與當前執行的指令有關,中斷訊號來源於CPU內部
    • 例1:使用者態下試圖執行特權指令
    • 例2:執行除法指令時除數為0
    • 例3:應用程式想請求作業系統核心的服務,執行“陷入指令”(trap),引發一個內部中斷訊號。(陷入指令不是特權指令)
  • 外中斷(即狹義中斷):與當前執行的指令無關,中斷訊號來源於CPU外部
    • 例1:時鐘中斷,由時鐘部件發來中斷訊號,用以實現程式併發執行
    • 例2:I/O中斷,當輸入輸出任務完成時,向CPU傳送中斷訊號。

內中斷=異常,引發原因:

  • 陷入(trap),陷入指令引發
  • 故障(fault),由錯誤條件引起,可能被核心程式修復;核心程式修復故障後會把CPU使用權還給應用程式。例如:缺頁故障。
  • 終止(abort),由致命錯誤引起,核心程式無法修復,一般會直接終止應用程式。例如上面的例1、例2

以下為你航版本:

非同步異常=中斷,可能隨時發生,與處理器正在執行的內容無關。

同步異常:某一特定指令執行的結果。具體見下圖。

image-20240317224857341

中斷後進入核心執行緒處理中斷。

系統呼叫

作業系統作為使用者和系統之間的介面,需要向上提供一些簡單易用的服務,主要包括命令介面和程式介面。其中程式介面由一組系統呼叫組成。

系統呼叫是作業系統提供給應用程式使用的介面,可以理解為一種可供應用程式呼叫的特殊函式;

應用程式可以透過系統呼叫來請求獲得作業系統核心的服務。

系統呼叫的過程:

  1. 傳參
  2. Trap
  3. 由作業系統核心程式處理系統呼叫請求
  4. 返回應用程式

作業系統體系結構

image-20240317232503579

以上兩部分的劃分,引出了兩種作業系統的體系結構:大核心和微核心(常考)

微核心結構:只包含中斷處理、程序通訊、基本排程等。

image-20240317232603561

image-20240317232628528

關於效率:CPU狀態轉換是有成本的,頻繁轉換會降低系統效能→

  • 微核心效能低
  • 優點:結構清晰方便維護、可移植性好、適應分散式系統。

典型大核心:Linux UNIX

典型微核心:Windows

分層結構,模組化結構,外核結構:王道課有,PPT涉及不多。

不同層次的介面

ISA, ABI, API 的含義以及聯絡

一個作業系統中編譯好的程式,在另一個ABI相容的作業系統中無需重新編譯就能執行。

相關文章