# 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 忘了...