---
# System prepended metadata

title: CH1-OS介紹
tags: [作業系統]

---

---
tags: 作業系統
---
# CH1-OS介紹
## 定義
#### 作業系統要：
* 能夠管理並分配硬體資源
* 能夠控制APP不會去危害到硬體
## 為何要使用OS？
* Efficiency: 希望能夠更有效率的使用硬體資源，以處理更多的jobs。
* Convinence: 希望能夠更方便的使用PC。

-> 是對立面，因為更方便勢必會有一些沒效率的工作產生。
## 功能
1. Process管理 (CUP Scheduler)
    * 創建 / 刪除 / 暫停 / 恢復 Process
    * Process 的同步 / 通訊 / 死結處理 機制
2. 記憶體管理
其實就是RAM
    * 分配 / 釋放 記憶體空間
    * 追蹤目前記憶體使用了哪個部分、被誰用
    * 決定哪個 Process 可以進入或離開記憶體
3. Storage管理 (File System)
其實就是HD
    * 檔案的存取權控制
    * 創建 / 刪除 檔案&資料夾
    * 把檔案映射到輔助記憶體
4. I/O系統
    * 針對I/O的記憶體管理
    * 一般驅動程式(driver)介面
5. **安全性(保護)**
見下方

# CH1-OS的保護
## CPU 保護:
利用 **Timer** 防止 Process 進入無窮迴圈、或沒有回傳占用 CPU 太久，一段時間就會產生 Interupt。
**Timer**的設定也是特權指令。
## 記憶體保護:
利用 **base and limit register (hardware support)** 防止 Process 存取到其他 Process 的記憶體空間。
![](https://i.imgur.com/uFv74vQ.png =50%x)
![](https://i.imgur.com/JstkEzf.png)
**base and limit register**的設定也是特權指令。
## IO保護:
要確保APP不能直接控制IO，IO設備都是需要透過**特權指令**操控。
:::info
**Dual-Mode**: 
會分 User mode(1) 和 Kernel mode(0)，User mode 呼叫 System Call 的同時也會丟 intereupt 來轉成 Kernel mode 以執行**特權指令**。
:::

# CH1-OS的種類
## 批次處理(Batch) X交談式
用卡片等等。
CPU一次只能處理一個任務，並且處理完就清除所有資料。
優點: 專注在一個任務。
缺點: CPU與IO速度差太多，CPU會閒置。

## 多元系統(Multi-programing)
有了記憶體管理、CPU排程、IO系統。
IO-bound 優先於 CPU-bound。
* Job可以堆疊在記憶體。
* CPU可以決定要執行哪個Job。
* IO不需要CPU介入，當IO做完事情才會通知CPU (Spooling)。
    =>因此 CPU 可以一直有事情做，能提高 CPU 使用效率

![](https://i.imgur.com/OYON5ST.png)
``進行IO請求/完成，或是高優先權process插隊才會切換process``


## 分時系統(Time-sharing) V交談式
把每個job切時間排隊來達成看起來像同時進行的效果。
``timer計時結束才會切換process``

**CPU-bound > IO-bound**：
因為 real-time system 會需要在指定時間內完成，而 I/O-bound 的程式可能會佔用 CPU 資源導致無法迅速回應。

**實作**：
透過 Round Robin CPU 排程、Spooling、虛擬記憶體等

:::info
假設有一 real-time 系統，該系統有 4 個定時的 events，每秒發生的頻率分別式 2 次、4 次、10 次、5 次，完成這些 events 需要的時間分別是 100ms、60ms、20ms、50ms，現在想要加入一個需要 30ms 的 event，請問此 event 發生的頻率一秒最多幾次(請取整數)，此系統方可順利將所有的 events 完成?

Ans:
就是問多了一個30ms的event後，這個event在1秒內可以被執行幾次
2 x 100 + 4 x 50 + 10 x 20 + 5 x 50 = 850ms
1sec - 850ms = 150 ms
150 / 30 = 5次
:::

## 單處理器系統(Single-processor)
就是一顆CPU

## 多處理器系統(Multi-processor) / Tightly coupled / Paralle System
就是多顆CPU。

**==優缺點==**
優點：省錢、提升Throughput、提升可靠性
缺點：設計較複雜

**==記憶體的處理方式分為兩種==**
**SMP(對稱式Multi-processor)**
CPU 們自己 Schdule 自己。
資料共享因此需要處理<font color="red">**同步化**</font>的問題，最常見的 OS。
**AMP(非對稱式Multi-processor)**
會有一個 master 去 Schedule Process 要進入哪個 slave CPU
資料不一定要全部同步，如大公司Google就放棄同步，因為太困難且客戶端不一定需要。

**==兩種實作架構==**
**UMA(Uniform Memory Access)**``SMP 採用的架構``
![](https://i.imgur.com/4rQi01T.jpg)

**NUMA(Non-Uniform Memory Access)**``AMP 採用的架構，其實就是多個SMP組成``
![](https://i.imgur.com/eTQredm.png)
:::info
對大公司來說能夠提高效能，但要注意避免像斜對角這樣需要多條線的存取。
:::

## 分散式系統(Distributed) / Loosely coupled
就是從一台電腦變成多台電腦組成，通過實體的線或網路來溝通。
能夠提升**可靠度**、**Load Balance**、**資源共享**、**容易擴展**。
![](https://i.imgur.com/8A6j8Jt.png)
其實對稱式、非對稱式就跟p2p, c/s一樣，只是變成內網。

## 即時作業系統(Real-time)
在 deadline 之前一定要做完。
| 類型 | 描述 | 例子 |
| -------- | -------- | -------- |
| Soft     | 不強制一定要做完，可以先產出低品質的東西。     | 線上直播     |
| Hard     | 一定要做完，不能容忍。     | 國防系統     |

### 設計重點：
1. 排程透過優先級進行搶佔，讓重要的工作可以按時完成
2. 不採用虛擬記憶體禍福主記憶體，以保證執行速度
3. 採用優先級中斷架構，以保證優先權低的不會中斷優先權高的，而優先權高的可以中斷優先權低的以插隊。

## 嵌入式作業系統(Embedded)/手持式作業系統(Handheld)
會設計特定的OS以符合不同產品的需求。
### 特點：
1. 記憶體空間較少
2. 處理器較慢
3. 顯示空間較小
### 設計重點：
1. 程式碼要精簡
2. 硬體設備的延遲要控制好
3. 排程透過優先級進行搶占
4. 避免虛擬記憶體和 I/O 操作

---
![](https://i.imgur.com/3omdXjQ.png)
![](https://i.imgur.com/k0k9C7O.png)
