作業系統 - 學習筆記 (1) OS 簡介

之前上完 OS 覺得很抽象,因此打算寫筆記複習,考試前也多少有幫助!
本文介紹作業系統的定義以及基本概念。

作業系統 (Operating System)

定義

讓使用者妥善使用軟硬體資源的一種系統程式

不同對象對於 OS 有不同要求:
使用者 - 便利、效能、圖形化介面、使用者體驗
手機 - 方便、效能、省電
OS 本身 - 電腦資源的分配者,負責管理且公平分配資源

Kernel

電腦隨時都在運行的核心程式,一開機就會執行

  • 系統程式 (System Program)
    • Kernel 安裝完就有
    • 協助 OS 運作的程式,像是檔案總管、計算機、小畫家、踩地雷
    • 應用程式 (Application Program):Kernel 安裝之後還要自己再去裝的
    • 協助使用者解決問題的程式,像是 LOL、楓之谷
  • 靴帶式程式、開機程式 (Bootstrap Program)
    • 通常已燒在 ROM、存在韌體、EEPROM 裡面,載入主記憶體之後,作用是載入 Kernel 開機

Interrupt Driven

現在的作業系統是中斷驅動式 (interrupt driven)
如果沒有行程要執行、沒有 I/O 裝置要服務、沒有使用者需要回應時,則作業系統將安靜的進入等待事件的發生


「中斷」服務判別

硬體中斷 - Interrupt

I/O 等硬體設備需要 CPU 時,會對 CPU 發出中斷
例如:I/O Interrupt

軟體中斷 - trap

Trap 又稱為 exception,是一種軟體的中斷
當 Error 發生時會發生 trap
例如:用 Java 寫分數除以 0

System Call

使用作業系統某些服務的時候所產生的中斷
是由指令所引發的中斷,目的是為了要保護系統資源

使用者介面需要使用作業系統的相關服務時需要呼叫
User mode -> Kernel mode

System Call 非常底層,OS 通常會將它包裝成 API,方便使用者使用,好處是可攜性與易用
例如:新增、刪除檔案

System Call 的傳遞方式
  • By Register:透過暫存器傳遞
    • 傳遞快,但一次只能傳一個參數,超過 Register 許可值就無法執行
  • By Address:指標
    • 需要大量參數傳遞時可用,將參數位址丟給 OS 去查詢,缺點是較慢
    • By Stack:暫存陣列
    • First in Last out (疊書)
    • 大量處理,比暫存器慢

DMA (Data Memory Access):直接記憶體存取

有些裝置會使用 DMA,允許大量資料轉移,且不需要中斷服務的介入

通常用於需要高速傳送的裝置,例如螢幕
CPU 不介入這些大量資料的傳輸,改由 DMA 處理
待 DMA 完成,才通知 CPU 來做處理
使得 1 次 CPU 收到的中斷,可以處理很多東西

中斷處理 (Interrupt Handling)

polling:一個一個問
vectored:每個裝置都有編號、根據中斷的編號找到該裝置


多重程式與分時系統

多重程式 (Multiprogramming)

容許好幾個程式同時執行

分時系統 (Time-sharing system)

CPU 排程
把時間分割成許多小塊,分享給 program,也是 Multiprogramming

比較

差異在 Time sharing 系統盡量讓每一個 process 使用相同份量的 CPU 時間 (equal share)

例如在有 3 個 process 的 time-sharing 系統中
每一個 process 在單位時間中都有 1/3 的機會 (或時間)

Time-sharing:把時間分割成許多小塊,分享給:

  • 分享給 process -> multiprocess
  • 分享給 thread -> multithreading
  • 分享給 program -> multiprogramming (= multiprocess)

以上資源是我自己整理過後的筆記,若有錯誤歡迎隨時和我聯繫。