# Operating System #1 ## What is OS? * 作業系統是一個介於使用者與電腦硬體之間,用於溝通的程式。 * 電腦硬體大致上可以切割成四個區塊,由上到下分別為**使用者**、**應用程式**、**作業系統**和**電腦硬體**。 * 作業系統就像一個資源管理者和資源分配者,讓所有使用者可以簡單、方便的使用電腦,不必在乎資源的控管,因為作業系統會幫你完成。 * 你可以想像,在電腦中有CPU、硬碟、IO控制裝置、顯示器等等,這些東西在不同的動作下可能需要透過BUS和彼此傳送資料或是和記憶體溝通。如果沒有作業系統的控管,使資料隨意傳輸,BUS可能會塞車或是造成資料異常覆蓋等情形。 ## Kernel * 作業系統本身也是一個軟體,我們將其稱作**Kernel**。 * 只有Kernel所有時間都在運作,好監控整個電腦的資源。而其他程式會根據Kernel的指示,同一時間一個運算器只有一個程式在運行。 ## Interrupt * 程式中斷出現在很多情形之下,包含正常或異常。 * 例如,一個程式執行太久了,我們會希望它先暫停使其他程式運算。 * 或是為了避免CPU閒置,因為CPU的運作速度非常快速,我們通常不希望它發生閒置的狀況。 * 若現在一個程式要等使用者輸入訊息才能繼續運算,也就是該期間需要等候IO。 * 因為不希望CPU閒置,作業系統就會要求該程式進行中斷,讓其他程式先行運作,IO指令進來之後再繼續執行。 * 當然,若程式發生exception,也有可能是錯誤中斷,避免後續其他程式無法運作。 * 例如Diviison by zero等等。 ## Computer-System Architecture * 許多特殊系統使用單一處理器的架構。 * 嵌入式系統等小型裝置常見。 * 多處理器架構在一般電腦上越來越普及。 * 耳熟能詳的平行化系統、tightly-coupled system等。 * 增加throughput、效益最大化。 * 其中又分對稱式和非對稱式: * Asymmetric Multiprocessing: 每一個處理器分配到屬於自己的任務。 * Symmetric Multiprocessing: 每個處理器分配到的任務沒有限制。 ### Multiprocessing VS Dual-Core Design * Multiprocessing指擁有兩個或多個CPU,共享主記憶體的資源。 *  * Dual-Core指單個CPU擁有兩個運算核心,主要差異在於可以共享到部分的快取。 *  ### Multiprogramming VS Multitasking * Multiprogramming (Batch system)是為了效率。 * 先將工作在記憶體中排程,當遇到需要等待的時候OS就切換到其他工作。 * Timesharing (multitasking) 是為了互動性的計算。 * CPU頻率性的切換工作,讓使用者產生多個程式同時運行的錯覺。 * Response time必須夠短。 * 記憶體中等候的程式至少要有一個(不然沒得切換)。 * 多個程式等候需要進行排程。 * 資源不夠時可能執行swapping或是virtual memory。 ## Dual-mode * 為了保護OS本身正常運作而不受一般程式影響,我們將系統切成**User mode**和**Kernel mode**。 * 而有些指令只能在Kernel mode執行。 * 如果需要用到那些指令,系統會先切換至Kernel mode執行工作,在結束時在重置回User mode。 ## Computing Environments * 作業系統在不同的需求下可能有特化出不同的服務。 * 最常見的是給一般使用者的視覺化服務,讓使用者不必打指令,也能直覺地使用電腦。 * 網路伺服器可能有分散式服務。 * 手機可能需要吃大量的感測器和提供通訊服務等。 ###### tags: `note`
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up