中斷
- 功能
- 用於處理非同步事件
- 讓緊急工作的需求可以被優先啟用
- 從外部裝置寫入本地的步驟
- 裝置控制器被載入到 register
- 裝置控制器將資料上傳到 local buffer
- 裝置控制器歸還控制權給 OS: 發 interrupt
- CPU 檢查到發生中斷 → 停止其他工作 → 轉換到一個特殊 address(中斷服務常式(Interrupt Handler)的起始位址)→ 再呼叫特定的中斷處理程式
- 中斷向量(Interrupt Vector):
- 以特定號碼當 index,一有中斷要求,就提供中斷服務常式的 address
- 實際上,所需的電腦硬體裝置數量會多於中斷向量可以容納的位址,所以要用中斷連結(Interrupt chaining) 解決
- 中斷連結:
- 根據中斷類別,分配不同中斷編號,中斷向量中每個位址都會指向一組中斷處理程序列表(包含很多不同程序),會用線性方式找,直到找到對應的處理程序
- 中斷前需要把目前狀態存起來,在返回前恢復原狀
- 中斷實作:
- CPU 硬體中有 Interrupt request line → 有設備控制器發信號 → CPU 讀取中斷編號 → 呼叫對應的 Interrupt Handler → Interrupt Handler 確認中斷發生原因 → return from interrupt
- 中斷實作的優化:
- 由 CPU 和中斷控制硬體提供功能
- 需要在關鍵時候延後中斷處理
- 高效率地分配中斷處理程序給每個裝置
- 為中斷加上優先順序,以便 OS 分配不同的處理等級
- 記憶體相關
- CPU 只能從 Main Memory 載入程式
- Main Memory 又被稱為隨機存取記憶體(Random Access Memory(RAM)),是一種揮發性儲存裝置,在電源被關掉後 data 就會消失
- RAM 以 Dynamic Random-Access Memory(DRAM) 的技術製作成
- Secondary Storage 作為主記憶體的延伸,為了儲存更多資料。常見裝置是 HDD(硬碟),多為非揮發性儲存裝置
- 電腦開機運行的第一個程式是 bootstrap program,再載入 OS
- von Neumann 典型指令執行週期
- 從 Main Memory 抓取指令 → 將指令存到 CPU 內部指令暫存器 → 指令執行完成後,將結果存回記憶體
- Direct Memory Access(DMA)
- Non-Violate Storage I/O 時會有很大的 overhead,所以需要 DMA
- 作法:設定 I/O 裝置的 Cache、Pointer、counter 後,裝置控制器將主記憶體中整個資料區塊傳送進出,不受到 CPU 干涉,每個區塊只會產生一次 Interrupt
- 現代設計:
- 裝置不在匯流排(Bus)架構,而是使用開關。
- 多個元件可以同時和其他元件溝通,不用相互在 Bus 上爭取 Clock Cycle
- 適合使用 DMA
- 常見多元處理器系統:
- 對稱式多元處理(Symmetric Multiprocessing, SMP)
- 每個同級 CPU 處理器都有一組自己的 register 和 Cache(L1) 再用 L2 Cache 匯集多個處理器
- CPU 通過 shared system interconnect 進行連結,所有 CPU 共享一個實體位址空間,稱為 Non-Uniform Memory Access(NUMA)
- 優點是當 CPU 存取本地 Memory 時,速度很快,而且系統護連也不會有競爭問題
- 缺點是 CPU0 存取 CPU2 的本地記憶體會很慢,但可以透過 CPU Schedule 和記憶體管理來盡量防止效能降低
- 刀鋒伺服器??
- 將多處理板、I/O板和網路板放在相同底盤上
- 每個刀鋒處理器獨立執行本身的 OS
- 叢集系統通常使用儲存區域網路(SAN)
- 電腦啟動:
- Bootstrap: 找到作業系統 kernel 儲存位置,並且將其載入到 Main Memory
- System Daemons(系統守護進程):在核心外部提供,載入到記憶體中執行
- 第一個 system program 是 systemd,他可以啟動其他的 deamon
- 作業系統會啟動直到某些事件發生,事件發生通常透過中斷方式呈現
- 中斷有分硬體 / 軟體中斷
- 軟體中斷:Trap 或是 Exception
- 讓程式可以藉由『System Call』這項特殊操作來執行系統服務
- User mode 和 Kernel Mode
- 當 Trap 發生 → system call → 進入 kernel mode → 執行系統呼叫 → 回到 User Mode → 系統呼叫 Return
- 虛擬機器管理程式(Virtual Machine Manager)控制系統時,支援虛擬化的 CPU 有一個獨立的模式,讓 VMM 可以有比 User mode 更多 Kernel mode 更少的特權,讓 VMM 足夠可以管理機器
- System Call 被執行:
- 被硬體視為軟體中斷
- 控制權由 Interrupt Vector 交給 OS 的 Service Handler
- 模式位元被設定為核心模式
- Kernel 檢查中斷指令,判斷目前發生哪一種系統呼叫
- 有一個參數指示 User program 要求的服務型態,OS 執行要求,並且把控制權交回給系統呼叫之後的指令