作業系統及考古

中斷機制摘要

中斷的定義與作用

中斷:是一種能夠改變 CPU 執行流程的機制,用於處理外部事件或異常情況。

作用

  • 提高系統效率:允許 CPU 在等待 I/O 操作完成時,可以執行其他任務。
  • 處理異常事件:如除零錯誤、記憶體存取錯誤等。
  • 實現系統交互:如鍵盤、滑鼠等輸入設備的處理。

中斷的種類

  • 硬體中斷(signal):由硬體設備觸發,如硬碟、網路卡等。
  • 軟體中斷(trap):由軟體觸發,如系統調用、異常情況。

中斷處理流程

  1. 中斷發生:硬體設備產生訊號或軟體執行系統調用。
  2. 硬件檢測:CPU 檢測到中斷訊號,暫停當前指令的執行。
  3. 保存上下文:CPU 將當前的程序計數器、寄存器等狀態保存到堆疊中。
  4. 查找中斷向量:根據中斷類型,從中斷向量表中找到對應的中斷處理程序的地址。
  5. 執行中斷處理程序:CPU 跳轉到中斷處理程序的起始地址,執行相應的處理邏輯。
  6. 恢復上下文:中斷處理程序執行完畢後,恢復被中斷程序的上下文,繼續執行。

中斷向量表

作用:用於保存各種類型中斷對應的中斷處理程序的入口地址。

實現:通常是一個固定大小的陣列,每個元素存儲一個中斷處理程序的地址。

中斷處理程序

作用:處理中斷事件,完成相應的操作。

類型

  • 硬體中斷處理程序:處理硬體設備產生的中斷。
  • 軟體中斷處理程序:處理軟體觸發的中斷。

中斷的優先級

作用:決定不同中斷的處理順序。

實現:通過中斷向量表中的優先級位或中斷控制器來實現。

中斷屏蔽

作用:暫時禁止某些中斷的響應,以避免中斷處理程序的嵌套過深。

實現:通過中斷控制器或軟體方式來實現。

中斷與作業系統

作業系統:負責管理系統資源,包括中斷處理。

  • 中斷與進程調度:中斷可以觸發進程的切換,實現多任務。
  • 中斷與設備驅動程序:設備驅動程序負責處理特定設備的中斷。

關鍵概念

  • 中斷向量:指向中斷處理程序入口地址的指針。
  • 中斷處理程序:處理中斷事件的程序。
  • 中斷向量表:存儲中斷向量的一個表格。
  • 中斷服務例程(ISR):中斷處理程序的別稱。
  • 中斷屏蔽:暫時禁止中斷的響應。

總結

中斷機制是現代計算機系統的核心概念之一,它使得計算機能夠高效地處理多種任務,並實現與外部設備的交互。通過了解中斷機制的原理和工作流程,可以更好地理解作業系統的工作方式,以及計算機系統的整體架構。

Process Control Block (PCB) 與 Process Life Cycle

PCB 的重要性

定義

PCB 是作業系統用來管理進程的一種數據結構,包含了進程的各種信息。

作用

  • 記錄進程的狀態(New, Ready, Running, Waiting, Terminated)
  • 保存進程的上下文信息(程序計數器、寄存器等)
  • 管理進程的資源(文件、內存等)

內容

  • 狀態
  • 程序計數器
  • 寄存器
  • 內存管理信息
  • I/O 狀態
  • 賬戶信息
  • 其他控制信息

Process 的生命週期

五種狀態

  1. New:進程被創建
  2. Ready:進程準備好執行,等待分配 CPU
  3. Running:進程正在執行
  4. Waiting:進程等待某個事件(如 I/O 完成)
  5. Terminated:進程結束

狀態轉換

  • New -> Ready:進程初始化完成
  • Ready -> Running:調度器選中進程
  • Running -> Waiting:進程等待事件
  • Waiting -> Ready:事件完成
  • Running -> Terminated:進程正常結束或異常終止

Context Switch

定義

將 CPU 從一個進程(process)切換到另一個進程(process)的過程。

過程

  1. 保存當前進程的狀態到 PCB
  2. 載入新進程的狀態到 CPU

開銷

  • 浪費 CPU 時間

優化

  • 減少寄存器數量(但是現在電腦的設計不容易這樣做)
  • 硬件支持(多個寄存器組直接做切換,這樣就不需要重新load資料來處理。但是register很貴)
  • 優化內存訪問

Process 與 Thread 的區別

Process

  • 重量級
  • 獨立的內存空間

Thread

  • 輕量級
  • 共享同一進程的內存空間

考古

1.什麼是os ,解釋:

  • 作業系統,可說是硬體與軟體之間”溝通的橋樑”,控制電腦整體運作的軟體
  • 1.提供使用者儲存和讀取檔案的路徑、
  • 2.提供介面讓使用者能執行程式
  • 3.提供程式執行所需的環境。
  • 使用者觀點:作為USER和硬體間的介面,提供program可執行的環境。
  • 系統觀點:是資源分配者,監控user program的執行。

2.Program, process, thread 的區別

  • Program:被動的,儲存於次記憶體中(e.g. disk)
  • Process:正在執行中的program(主動),主要包含code section, data section, program counter,(前三項放在memory space中) cpu register, stack
    是os分配資源的對象單位
  • Thread:是os分配CPU time的基本單位,又稱為light weighted process。
    同一個Task(process)內的Threads共享: code section, data section, os resources

3.解釋multi process, multi thread

  • Multi process: 將資源複製且隔離,
    優點為:process間不共享記憶體,程式較好寫
    缺點為:資源利用較沒效率,所佔memory空間較大
  • Multi thread: thread 之間共享資源,
    優點為:較有效率,共享資源存取較快
    缺點為:共享memory,須注意deadlock跟race condition等問題,且程式碼較難撰寫。

4.Process 間的溝通:

有分為shared memory跟message passing

  • Shared memory:
    各process透過共享的記憶體(共享變數)的存取,達到溝通、交換資訊的目的。(互斥存取控制由programmer負責,os只負責提供memory space)
  • Message passing:
    三步驟,
    1.建立communication link
    2.互傳訊息
    3.傳輸完畢,release link。
    (此法os須提供額外支援),有直接與間接兩種方式。

5.解釋deadlock,怎麼避免

  • 定義:系統中存在一組process互相等待對方所擁有之資源(circular waiting),造成所有process皆無法執行,cpu utilization跟 throughput大幅下降。
    形成deadlock之四個必要條件:
    (1)mutual exclusion, (2)hold and wait, (3)no preemption, (4)circular waiting
    如何解決:分三種,deadlock prevention, deadlock avoidance, deadlock detection and recovery
  • (1) deadlock prevention:打破四種條件之其中一個
  • (2) deadlock avoidance: process發出對資源的申請時,os會執行銀行家演算法(banker’s Algo.)判斷假設系統核准申請後,是否處於safe state。若是則允許,反之則否決。
  • (3) deadlock detection and recovery:偵測死結是否存在,若存在死結,則必須打破死結。
    deadlock detection Algo.
    偵測所有process,看是否會進入死結
    (需要O(n^2m)的time complexity,n:process個數,m:資源種類)
    Deadlock recovery:
    中止process(分為1.全部中止2.一次中止一個,然後recheck)後進行資源搶奪(挑victim process,恢復到此process無資源之狀態)

6.如何避免race condition

race condition定義:多組process 在shared memory溝通方式下,若未對共享變數提供互斥存取等同步機制,會造成共享變數之最終結果值,因process執行順序不同而產生結果不同,導致不可預期之錯誤發生。
避免方法:

  • (1) disable interrupt(鎖住cpu):確保對shared var.存取之相關指令可於執行過程中不被中斷(缺點:只適用於single processor環境)
  • (2) critical section design(鎖住共享變數):提供對shared var.之存取動作的互斥控制。