Sean's Blog

An image showing avatar

Hi, I'm Sean

這裡記錄我學習網站開發的筆記
歡迎交流 (ゝ∀・)b

LinkedInGitHub

Operating System: Introduction

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

作業系統介紹

定義

Operating System (OS) 是讓使用者妥善使用軟硬體資源的一種系統程式,其中不同的對象對於作業系統也會有不同的要求,例如:

  • 使用者:便利、效能、圖形化介面、使用者體驗
  • 手機:方便、效能、省電
  • 作業系統本身:電腦資源的分配者,負責管理且公平分配資源

核心 (Kernel)

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

  • 系統程式 (System Program)
    • Kernel 安裝完就有,協助 OS 運作的程式
    • 應用程式 (Application Program):Kernel 安裝後還要自己去安裝的程式
    • 其他協助使用者解決問題的程式
  • 靴帶式程式、開機程式 (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

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

當使用者介面需要使用作業系統的相關服務時會需要呼叫。

System Call 非常底層,OS 通常會將它包裝成 API,方便使用者使用,好處是可攜性與易用。

例如:新增、刪除檔案。

System Call 的傳遞方式

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

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

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

通常用於需要高速傳送的裝置,例如:螢幕。

CPU 不介入這些大量資料的傳輸,而是改由 DMA 處理,待 DMA 完成才通知 CPU 來做處理,使得 1 次 CPU 收到的中斷可以處理很多東西。

中斷處理 (Interrupt Handling)

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

多重程式與分時系統

  • 多重程式 (Multiprogramming)
    • 容許好幾個程式同時執行
  • 分時系統 (Time-sharing system)
    • CPU 排程
    • 把時間分割成許多小塊分享給 Program,也是 Multi-programming

差異比較

差異在 Time-sharing 系統盡量讓每一個 Process 使用相同份量的 CPU 時間 (Equal Share)。

例如:在有 3 個 Process 的 Time-sharing 系統中,每一個 Process 在單位時間中都有 1/3 的機會或時間。

Time-sharing 就是把時間分割成許多小塊,這部分又有分為以下幾種:

  • 分享給 Process → Multi-process
  • 分享給 Thread → Multi-threading
  • 分享給 Program → Multi-programming (= Multi-process)

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