---
# System prepended metadata

title: Introduction
tags: [OS Note Pro]

---

# Introduction
###### tags: `OS Note Pro`

[TOC]

這一節要介紹何謂Operating System。首先，要了解OS的話，要先知道OS在電腦架構中是處於什麼樣的位置，進而才能知道它存在的意義和目的。初步知道OS的定義後，就要討論OS與電腦其他裝置的溝通是如何，尤其是常常與使用者有互動的I/O設備。最後，再來探討在這樣的架構下，他的Protection怎麼樣，有哪先地方是需要注意的。

## What is operating system?
首先要知道，電腦系統架構可以分為四個部分: **Hardware、OS、Application、User**，其中，**Hardware**是指CPU、memory、I/O等等，而**Application**包含pargram、assembler、compiler等等。

### <font color="blue">Definition of OS</font>
OS的主要工作為:**Control**以及**Coordinate**，Control通常指的是控制I/O設備，又driver其實是包含在OS裡的(OS的下層); 而Coordinate是比較難的，主要是協調硬體資源的使用以及scheduler。

OS是一種軟體，而他與一般的軟體最大的不同在於，他是"永恆的"。甚麼是"永恆的"呢? 指的是只要電腦一開機，他就會一直存在一直run，也因為這樣，所以我們也稱作業系統為<font color="green">**( 1 ) Kernel**</font>。
此外，我們知道OS在電腦系統架構是介於硬體及應用程式之間的，所以也可以將OS的interface視為一個API，這個API稱為"System libirary"，具體的呈現就是所謂的**System call**。而它的用途就是讓使用者能夠透過此來(申請)使用硬體資源，為甚麼要說"申請"呢? 是因為真正去控制(執行)硬體資源的還是得由OS本身來，使用者是不能直接透過指令操作的，只能呼叫System call。所以，我們可以知道，OS也是負責控制、管理硬體資源的<font color="green">**( 2 ) Resource Allocator**</font>。
當然除了控制硬體，軟體的部分也是OS的範疇。<font color="green">**( 3 ) Control Program**</font>。

### <font color="blue">目的與重要性</font>
OS存在的目的很簡單，對使用者而言，我們當然希望電腦使用起來很<font color="green">**(1) Convenience**</font>，如GUI介面的存在。如: 傳統的PC以及它的Windows系統，之所以火起來就是因為它很friendly。此外，對係統本身來說，<font color="green">**(2) Efficiency**</font>也是很重要的，一來若跑得快也是能夠帶給使用者方便性的。但是，這兩者想要達成往往是互相衝突的。
而因為OS在電腦系統架構中是唯一的存在，加上以上所述的功能可以知道，OS有者無可取代的重要性。

## Computer system organization
電腦的組成是由CPU與多個裝置(硬體、I/O等)經由bus連接，在一起連到memory，而main memory是CPU唯一能直接存取的記憶體空間。在這裡，他們之間的溝通靠的就是OS啦。

<font color="blue">I/O device的存取:</font>
首先要知道，每個I/O device都有自己的device-controller，由controller來控制device。而controller包含了**status register、data register以及buffer**，因為I/O的存取非常慢，所以需要這些來與CPU做協調。而要與CPU處理的資料都會先經由data reg.傳到buffer，buffer在與CPU接觸，由於buffer的容量有限，所以會造成buffer滿了而CPU在線等的浪費CPU尷尬現象，所以需要**Interupt**來解決。

### <font color="blue">Interupt</font>
Interrupt 是用來中止CPU手邊的工作，來處理執行好的I/O device(改變CPU的flow)。

由Hardware所產生的Interrupt就叫做Interrupt。因為Hardware數量是固定的，所以能夠儲存interrupt vector的數量也是有限的。而interrupt vector存的是發出interrupt的instruction的address因為最後也是要return回去的。
而由Software發出的interrupt稱為**trap**，因為要終止I/O device還是必須要trap到OS才能執行的(所有的interrupt皆由OS產生)。至於存取software 所發出的interrupt vector是以case來記錄的，因為他並不像Hardware數量固定，你想要interrupt就interrupt，只是，<font color="red">若同一區間內有多個interrupt，又每個interrupt都必須記住位址，所以這時是很容易出錯的，很有可能發生Idel</font>，所以有要追求穩定的OS會在有interrupt要處理時，隔絕這個時間點要求要interrupt的其他指令。而software要發出interrupt可以透過system call 或 產生error的時候。

### <font color="blue">Storage</font>
電腦的儲存裝置是以"Hierarchy"的方式堆疊，最上層為cache，最下則為magnetic tapes，其中main memory以下都稱為**secondary memory**，差別在於secondary memory都是nonvolatile，main memory以上都是volatile，只要失去電源資料就會消失。
:::success
**Speed、cost、volatility** 是Storage所注重的。當然能不揮發是最好的。
:::

#### <font color='blue'>Main memory : RAM => DRAM、SRAM</font>

SSD通常用來做Disk，如C槽
DRAM用來做main memory。
SRAM用來做Cache。


#### <font color='blue'>Cache</font>
待補...

## Hardware Protection

### **Dule mode
沒寫到!!

### I/O Protection
I/O的Protection主要在於interrupt，不能讓惡意程式以呼叫interrupt知名，存入他想要的位址已佔據kernel的控制權。

### Memory Protection
Memory Protection在防犯惡意程式指到程是以外的任意位址，所以訂定**Base register以及Limit register，各自存程是address的起始位址和總size，以確保不會指到外面。

### CPU Protection
忘了...
