---
# System prepended metadata

title: '[回溯 OS 系列] 前言 / Chapter 1-1'

---

<style>
    .red{
        color: red;
    }
</style>

## 前言

本系列文章旨在回顧作業系統學科。

## 參考資料
* [Operating System Concepts, 10 edition](https://www.os-book.com/OS10/)
* [Operating System Concepts (slide), 10 edition](https://www.os-book.com/OS10/slide-dir/index.html)
* [11001周志遠教授作業系統](https://www.youtube.com/watch?v=1z3QEs9WDmY&list=PLS0SUwlYe8cxj8FCPRoPHAehIiN9Vo6VZ)
* [Source code for OS, 10 edition](https://github.com/greggagne/osc10e)

## 簡介與基礎

> What is Operating System?

作業系統（Operating System，簡稱 OS）是一個關鍵的程式，負責在使用者與電腦硬體之間充當中介。

它管理硬體資源，並為應用程式提供基本服務，確保系統操作的高效性與便利性。

作業系統的主要功能包括：

- **資源分配者**: 管理硬體資源（如 CPU、記憶體、I/O 設備），並有效地分配給多個程式使用。
- **控制程式**: 確保系統正確運作，負責管理軟體與硬體之間的互動。
透過這些功能，作業系統簡化了使用者的操作，同時最大化了系統效能。

> Computer System Architecture

電腦系統架構由多個層級組成，包括

1. 硬體
2. 作業系統: 資源分配者與控制程式，負責管理硬體並為應用程式提供執行環境。
3. 應用程式
4. 使用者: 關注的是操作的便利性、易用性和性能，而不必直接面對資源管理的細節。

> Computer System Organization

![image](https://hackmd.io/_uploads/rJB0xLMSye.png)

[Image source: Operating System Concepts, 10 edition, page 7](https://www.os-book.com/OS10/)

計算機系統的組織架構通常包含一個或多個中央處理器（CPU）、設備控制器和記憶體，這些元件透過一個 **<span class="red">共用匯流排（bus）</span>** 相連，提供對共享記憶體的訪問。

設備控制器負責管理各種輸入輸出設備，CPU 通過中斷機制與這些設備協調工作，以確保高效運行。

## 作業系統核心功能

> Spooling (Simultaneous Peripheral Operation On-Line)

允許周邊設備與中央處理單元（CPU）同時運行。

透過將輸入/輸出操作的數據暫存於磁碟或記憶體中，I/O 可以在不需要 CPU 干預的情況下完成，僅當 I/O 完成時才通知 CPU。

這種方式減少了 CPU 等待 I/O 的時間，大幅提高了系統的資源利用率，尤其在多任務環境中顯得尤為重要。

> IO Structure

I/O 結構負責管理作業系統與輸入/輸出設備的互動，核心概念包括系統呼叫（System Call）和裝置狀態表（Device-Status Table）。

- **System Call**: 使用者程序通過系統呼叫向操作系統請求 I/O 操作，允許使用者等待 I/O 完成，提供一致的操作界面。
- **Device-Status Table**: 作業系統會維護一個裝置狀態表，其中包含每個 I/O 裝置的類型、地址與狀態資訊，用於跟蹤設備的使用情況與當前狀態。

透過這種結構，作業系統能有效協調多個 I/O 裝置的運行，同時保障系統的穩定性與效率。

> Common Functions of Interrupts

中斷（Interrupts）是作業系統中一個重要的機制，用於在發生特定事件時暫停當前執行的程序，轉而處理優先的任務。

![image-1](https://hackmd.io/_uploads/HyZk-IGHke.png)

[Image source: Operating System Concepts, 10 edition, page 10](https://www.os-book.com/OS10/)

- **Device Driver** 是作業系統中的軟體，負責與硬體設備進行溝通，提供硬體抽象層以便應用程式使用設備功能。
- **Interrupt Handler** 是當發生中斷事件時，作業系統用來處理中斷的程式碼。它負責中斷的識別與適當的回應。
- **I/O Controller** 是硬體裝置，用來管理 CPU 與周邊設備間的數據傳輸，通常負責緩存數據並協調 I/O 操作。

中斷可以分為幾種類型，每種具有不同的功能：

- **Hardware Interrupt (Signal)**: 當外部設備（如鍵盤、滑鼠或網路卡）發送信號時，硬體中斷會通知 CPU 停止當前工作，並處理來自外部設備的請求。信號是由作業系統或硬體發送的通知。
- **Software Interrupt (Trap / Exception)**: 軟體中斷是由程式內部的錯誤或特殊條件觸發，如系統呼叫（System Call），或程式需要作業系統介入時。當程式執行過程中發生錯誤（如除以零或訪問無效記憶體），會觸發例外，轉交作業系統進行錯誤處理。

![image-7](https://hackmd.io/_uploads/rkC5zUGryg.png)

[Image source: 11001周志遠教授作業系統_第4A講 Ch1:Introduction](https://youtu.be/NKCt3nz1uAY?feature=shared)

- **Resident Monitor** 是一種系統程式，負責監控與控制多個作業或任務的執行。它通常在作業系統啟動後一直常駐內存，處理資源分配與管理。
- **Interrupt Vector** 是作業系統中一個表格，存儲每種類型的中斷對應的處理程式地址。當中斷發生時，系統根據中斷向量尋找並執行相應的中斷處理程式。
- **Service Routine** 是處理特定任務或事件的程式，通常與中斷處理有關，是作業系統用來處理 I/O 操作或其他系統請求的程式碼。

![image-8](https://hackmd.io/_uploads/rk92zUfr1g.png)

[Image source: 11001周志遠教授作業系統_第4A講 Ch1:Introduction](https://youtu.be/NKCt3nz1uAY?feature=shared)

**<span class="red">中斷機制的核心作用是讓 CPU 能夠高效地分配計算資源，處理多重事件並實現多任務處理。</span>**