# Introduction to Operating System ## Von Neumann Architecture 經典的電腦架構為馮紐曼架構,描述電腦的基本五大功能 - 輸入單元 - 輸出單元 - 控制單元 - 算術邏輯單元 - 記憶單元  ## Virtualization 作業系統執行在實體的電腦上,電腦由處理器跟記憶體還有儲存裝置等週邊裝置組成,因此作業系統可以稱為虛擬機器 (Virtual Machine),通過作業系統可以操控電腦的硬體資源,還有兩個重要的虛擬化,分別為 CPU 虛擬化和記憶體虛擬化 - CPU 虛擬化:電腦可以執行很多行程 (Process),通常行程的數量大於實際的處理器核心數,透過作業系統排程讓行程可以被處理器核心執行 - 記憶體虛擬化:每一個行程都認為自己有專屬的地址空間 (Address Space),但是實際上每個行程在實體記憶體中的位置都不一樣,是作業系統提供虛擬記憶體讓行程認為自己的記憶體空間都從位址 `0` 開始 ## Concurrency 在行程當中又可以有很多的執行緒 (Threads),這些執行緒共享著行程中的特定資源,透過多執行緒可以提升效能但是如何讓同一個行程中的執行緒不要因為資料競爭 (Data Race) 導致程式出錯,又要確保執行效率,因此需要特定的機制讓行程中的執行緒可以並行 (Concurrency) 並讓執行緒間共用的資料不會同時被多個執行緒修改產生資料不一致 ## Persistence 作業系統中有檔案系統 (File System) 可以控制電腦的儲存裝置比如 SSD 跟 HDD,最基本的操作是 `open`, `write` 和 `close`,`open` 可以開啟一個檔案或是創建檔案,`open` 會回傳 File Descriptor 讓 `write` 可以寫入資料到指定檔案,最後透過 `close` 關閉檔案,檔案系統需要透過裝置驅動程式 (Device Driver) 去和儲存裝置互動 ## History ### OS just Libraries 最早期的電腦為批次系統 (Batch System),每次都需要人去設定好要做的工作讓電腦執行,電腦只提供一些簡單的功能,但是因為需要人為介入,每次都要設定很久,所以電腦大部分時間都在閒置 (Idle) ### OS has Protection 因為每一個程式都有可能用到儲存裝置,但是不應該讓程式有完全的權限去操控整台電腦,所以衍生出檔案系統,程式如果要開檔案或是寫入檔案都需要發起系統呼叫 (System Call) 然後 Trap 到作業系統核心模式 (Kernel Mode),而原本執行程式的狀態就稱為使用者模式 (User Mode),在進入 Kernel Mode 前會執行 Trap Handler 中預設好的程式,先進行一些初始化再進入 Kernel Mode 執行使用者需要的操作,比如開檔案寫入檔案等需要操作硬體的任務,此時處理器中會有 Flag 設定為 Privilege Level 表示現在可以執行高權限的指令,執行完任務之後再回到使用者模式,稱為 Return-from-Trap ### Multiprogramming 具備 Multiprogramming 的作業系統可以同時將很多程式載入到記憶體當中,並且根據狀況把處理器切換到另一個行程,這樣的好處是提昇處理器的利用率,因為行程可能會發起 I/O 請求,這些請求都會佔用很多時間,比如存取硬碟,所以如果適時的切換可以讓處理器保持在忙碌狀態,而現代的處理器還不只有一個核,因此作業系統在多核處理器應該如何排程並避免數據競爭也是一大考驗
×
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