# 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
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.