CH1 OS 在幹嘛
當硬體複雜到一個程度的時候,必須有個媒介來控制 - 作業系統 Operating System (簡稱 OS)
- 可以讓我們更容易解決問題
- 可以讓 PC 的介面更容易使用
- 讓硬體更有效率的使用
電腦可以被切成四塊
- 硬體
- CPU、memory、I/O devices
- OS
- Application programs (APP)
- Users
- People、machines、other computers
OS 是 resource allocator
是資源分配者,會以有效率且公平的方式來管理與分配系統 resource (硬體)
OS 是 control program
監督使用者程式的執行,避免程式發生錯誤或使用不當 (防止惡意程式毀滅系統)
OS 的定義
- 對於 OS 並沒有一個完整適合的定義
- 通常我們把管理硬體有關的 program 都稱為 OS “Everything a vendor ships when you order an operating system”
- OS 是使用者與硬體的介面,做為電腦系統資源的管理者,以有效的管理方式來使用硬體,提供使用者可執行程式的環境
kernel 的定義
- 只要開機就會一直被執行的 program “The one program running at all times on the computer” 其他是系統程式 (system program) 或 app
- 核心就是系統上面的一個檔案而已,這個檔案包含了驅動主機各項硬體的偵測程式與驅動模組
bootstrap program
- 在開機或重開機的時候會讀取的程式
- 通常放在 ROM 或 EEPROM 裡,被稱為韌體 (firmware) (資料不會隨著電源消失而消失的 RAM)
- 開機後 OS 會偵測系統的週邊設備,逐一載入每一種設備的驅動程式
- 開機程式的作用
- 設定系統初值或參數,包括 CPU registers、device controllers、memory 等等
- 從硬碟將作業系統核心載入記憶體
- 啟動 OS 的執行
- 啟動 OS 後所執行的第一個 process 稱為 init,init 會產生許多幕後的 login process 在那兒等候事件的發生,完成開機的程序
- 通常放在 ROM 或 EEPROM 裡,被稱為韌體 (firmware) (資料不會隨著電源消失而消失的 RAM)
Computer-system operation (計算機系統的運作)
I/O 和 CPU 經由公用 Bus (匯流排) 存取共用 Memory
- I/O 和 CPU 可以同時在運作
- 每個 I/O device 都有一個 controller 在負責控制,同時擁有 local buffer
- device controller 需要專屬軟體來指揮它們,這些軟體叫做驅動程式 (device driver)
- 驅動程式對 controller 下命令指揮它們完成輸出入工作
- OS 透過 driver 來控制與指揮 device controller 對週邊設備做實際的 I/O 動作
- CPU 從 memory 裡拿出資料放到 local buffer 或從 local buffer 拿出資料放到 memory 裡
- device controller 利用中斷 (inperrupt) 來通知 CPU,他做好 I/O 了
- Should device controller be consider as a CPU?
- Many I/O device even have powerful microprocessor
I/O 做完要怎麼通知 CPU?
- polling
- 用一個 while loop 一直戳 device controller,看他做完了沒
- 相當浪費時間
- interrupt
- 優點:不用 polling,一直戳很浪費時間
- 缺點:要額外的軟體、硬體來做 interrupt
Interrupt 在幹嘛?
- 當 I/O device 完成動作後,他會朝 CPU 打出 interrput,interrupt 裡面含有中斷服務程式的地址
- Interrupt architecture 會把這個中斷服務程式的地址存下來,並且執行這個中斷服務程式 (例如:處理 I/O 拿進來的資料)
- 如果在執行中斷處理的同時有另一個 interrupt 打進來,這個 interrupt 是無效的
- CPU 正在忙剛剛的 I/O,沒有時間做新的 I/O
- 避免錯失 interrupt
Interrupt 處理
中斷發生時,硬體將被中斷程式的暫存器以及 return address 儲存在一個固定位置上,以便將來能夠恢復原來的執行工作
- 暫停目前 process 執行並保存此 process 當時執行狀況
- 立即移轉到固定的記憶體位置上 (根據 Interrupt ID 查尋),此位置含有 interrupt vector
- interrupt vector 儲存 ISR (Interrupt Service Routine) 的起始位址
- CPU 根據這個位址去執行相關的服務工作
- 執行完成,恢復先前 process 執行狀況回到原先中斷前的執行
Interrupt 的種類
- 硬體打進來的叫 IRQ
- 軟體打進來的叫 Trap or exception,是經由 system call 產生的中斷,包括邏輯錯誤,不合法的記憶體存取
- 常見的 trap
- divide-by-zero
- invalid memory access
- illegal instruction
- a request for OS service
- 常見的 trap
- OS 是一個中斷驅動 (interrupt driver)
Interrupt timeline
CPU 與 I/O 可同時進行,CPU 啟動 I/O 動作,I/O 完成後會發出中斷給 CPU
I/O 架構 (structure)
- 同步 I/O 架構 (Synchronous):一段時間內只有一個 I/O 請求產生
- 非同步 I/O 架構 (Asynchronous):必須有一個 Device-status table 以記錄各種裝置 I/O 的類型、位址、使用狀況
直接存取記憶體 Direct Memory Access Structure
DMA 是一種專門為 high speed devices 做輸出入的設備 (沒有 CPU 的介入會變快)
作業程序
- 首先由 CPU 預設好 I/O 所需要的 buffer、pointer 與 counter 後
- 由 CPU 啟動 DMA controller,讓 DMA 自行去做記憶體與 buffer 之間的大量資料讀寫的工作,而不用 CPU 的干預
- 每當讀寫完一筆資料後,才由 DMA controller 發出中斷告訴 CPU 工作已完成
- 接著再由 CPU 重新設定 buffer、pointer 與 counter
- 繼續啟動 DMA 做後續的輸出入工作
一個 block 產生一個中斷,不像其他是一個 byte 就產生一個中斷
Storage Structure
任何要被執行的程式都必須儲存在可複寫記憶體,稱之為主記憶體,又稱隨機存取記憶體 (Random-Access Memory 或 RAM) 以動態隨機存取記憶體 (DRAM:Dynamic RAM) 的半導體技術製作而成 (volatile 揮發性)
大部份電腦系統提供輔助記憶體 (secondary storage) 做為主記憶體的延伸 輔助記憶體的主要要求是能夠永久保存大量的資料 (nonvolatile 非揮發性)
- 磁碟 (Magnetic disks)
- 固態硬碟 (Solid-state disks)
記憶體的階層
- Speed
- Cost
- Volatility (電源切了就掰了)
- caching:將讀過的東西 (比較常使用的意味) 放在比較快的 storage 裡
- 快
- cache 很容易滿
- buffer:在短時間內寫入多次
- 放入 buffer 裡面一次做完 I/O
快取 (Caching)
Cache 又稱為 buffer memory 是一種成本高且速度快的儲存設備
- CPU 欲讀取資料會先檢查資料是否在 cache
- 若是稱之為 hit,可立即取出使用;否則稱之為 no hit
- 必須到記憶體取出資料同時更新 cache 的內容。
電腦系統架構 (Computer-System Architecture)
單一處理器系統 (Single-Processor Systems)
- 僅有一個一般處理器執行使用者的處理行程之系統
多處理器系統 (Multiprocessors) 又稱並連系統 (parallel systems)、耦合系統 (tightly-coupled systems)
- 擁有一個以上的處理器,共同使用匯流排、時脈、記憶體、周邊裝置
- 優點
- 增加產量
- 經濟度量 (共用周邊設備)
- 增加可信度(容錯性:Fault Tolerant)
- 類別
- 非對稱多元處理 (Asymmetric Multiprocessing)
- 對稱多元處理 (Symmetric Multiprocessing)
對稱多元處理
- 非對稱多元處理
- 主處理器會指定每個處理器不同之任務,有主從關係
- 對稱多元處理
- 每個處理器執行相同之任務,沒有主從關係
雙核心設計 (A Dual-Core Design)
- UMA:均勻訪存模型(Uniform Memory Access)
- 指所有的物理存儲器被均勻共享,即處理器訪問它們的時間是一樣的
- NUMA
雙核心設計比二元處理器還有效率 (內部通信) 及省電
集成式系統 (Clustered Systems)
集成式電腦分享儲存裝置,經由區域網路、無線寬頻網路彼此相連,可提供高的取得率 (high-availability)
非對稱集成系統 (asymmetric clustering) 一台機器處於熱待機狀態 (hot-standby mode) 為一監督工作的伺服器,其他機器則執行應用程式
對稱集成系統 (symmetric clustering) 所有機器均執行應用程式並互相監督
Some clusters are for high-performance computing (HPC)
- Applications must be written to use parallelization
Some have distributed lock manager (DLM) to avoid conflicting
作業系統架構 (Operating System Structure)
- 作業系統提供執行程式的環境,工作排班的最重要觀念就是多元程式規劃的能力
- 多元程式規劃 (multiprogramming)的目的就是讓 CPU 始終有工作做,以增加 CPU 的使用率
- 作業系統在同一時間存放數項工作在記憶體中,這一組工作是工作池 (job pool) 中所有工作的部份集合,作業系統把工作池中的一項工作挑出來並且開始執行
多元程式規劃 (Multiprogramming) 是什麼?
- 單一的 User 很難讓 CPU 和 I/O 一直同時保持忙碌
- Multiporgramming 收集要執行的 job,讓 CPU 一直保持忙碌
- memory 裡面會維護一份要執行工作的清單
- 利用 Job scheduling 來排程
- 當有人在等 I/O 的時候 CPU 就可以切到下一個工作去
分時 (Timesharing) 或多工 (multitasking) 是什麼?
定時打 clock interrupt 給 CPU,讓 CPU 在各個 process 間切換,感覺同時做很多工作一樣
- Response time < 1 sec (很短)
- 適合 user (人類) 的 system
- CPU scheduling
- 決定下一個 job 要做啥
- Job scheduling
- 決定下一個搬到 memory 裡的 job 是哪個
- Swapping
- 當 main memory 要爆炸了! 可以把一些 job 暫時放到 disk 裡面,等到 memory 比較空一點再搬回來
- virtual memory
- memory 不夠了! 要執行的 process 太大把 memory 塞爆了,可以拿一些 disk 空間放目前沒有執行到的部分
!!! Timesharing 是基於 Multiprogramming,但 Multiprogramming,但不一定是 Timesharing!
下圖是 Memory Layout for Multiprogrammed System
作業系統的運作
- 現代作業系統是中斷驅動式 (interrupt driven),如果沒有行程要執行,沒有 I/O 裝置要服務和沒有使用者需要回應,則作業系統將安靜進入等待事件發生;事件通常都是由於中斷或陷阱 (Trap) 的發生 (如被 0 除) 而被通知
- 因為作業系統和使用者共用電腦系統中硬體和軟體的資源,在共用的情況下,一個程式中的錯誤 (如 Infinite Loop) 可能會使許多工作受到不利影響
- 一個設計正確的作業系統必須保證一個不正確的 (或蓄意破壞的) 程式不會造成其他程式不正確的執行
雙模式運作 (Dual-mode Operation)
為了確保作業系統正常操作,一定要能夠區別作業系統程式碼和使用者定義程式碼的操作
模式分兩種
- 使用者模式 (user mode)
- 受保護的環境,不可以直接操作硬體,不能亂打別的 process,不能攻擊 OS 之類的
- 核心模式 (kernel mode)
- 也稱為 supervisor mode
- 也稱為系統模式 (system mode)
- 也稱為特權模式 (privileged mode)
- 可以做任何事!!!
- system call 可以將 user mode 切換至 kernel mode (以前的 CPU 沒有 mode 的概念,隨便一隻程式就可以毀滅系統)
- 使用者模式 (user mode)
流程
- 在系統啟動時,硬體必須由 kernel mode 開始
- 載入作業系統
- 在 user mode 開始執行使用者應用程式
- 每當一個插斷或 Interrupt 發生時,硬體從 user mode 轉換到 kernel mode
- 作業系統得到電腦的控制權時,電腦就是在 kernel mode 中
- 使用者程式再將控制權交給一個使用者程式之前,轉換到 user mode
越來越多的 CPU 支持多模式操作
- 即虛擬機管理器(VMM)模式用於訪客虛擬機
- virtual machine manager (VMM) mode for guest VMs 32
- 即虛擬機管理器(VMM)模式用於訪客虛擬機
計時器 (Timer)
- 必須保證作業系統維持控制
- 必須防止使用者程式陷入一個無窮迴路之中,而永遠不把控制權交還給作業系統。為達成此目的,可以使用一個計時器(timer)
- 計時器設定在某段時間之後中斷電腦
- 其週期可以是固定的 (例如:1/60 秒) 或可變的 (例如:從 1 毫秒到 1 秒)
- 用計時器來防止使用者程式執行太久
- 簡單的技巧是用程式允許的時間量設定計數器之初值
- 例如:具有 7 分鐘時間限制的程式設定計數器初值為 420
- 每過 1 秒鐘,計時器就會發出中斷且計數器值減 1
- 只要計數器值為正,控制權仍回到使用者程式
- 當計數器值擴成負值時
- 作業系統因為程式超過其時間限制而終止執行
行程管理 (Process Management)
- 行程 (Process) 可以視為執行中的程式
- Program is a 被動 (passive) entity
- Process is an 活躍 (active) entity
- 行程需要某些特定的資源,包括 CPU 時間、記憶體、檔案和 I/O 裝置等,以完成其工作,這些資源在行程產生或執行時就會配置給它
除了實體資源和邏輯資源的配置之外,有些起始資料 (輸入) 也可能會隨著行程的產生而產生
- 行程管理方面,作業系統必須提供下列的功能
- 在 CPU 上的行程及執行緒排班
- 使用者和系統行程的產生與刪除
- 行程的暫停和恢復
- 提供行程同步機制 (process synchronization)
- 提供行程通信機制 (process communication)
- 提供行程 (deadlock handling)
主記憶體管理 (Memory Management)
memory 有限,要怎麼分配?
- 程式執行時,主記憶體必須映對到絕對位址並且載入主記憶體之中
- All data in memory before and after processing
- 程式執行時,藉由產生程式指令和資料的絕對位址,才能從記憶體存取
- All instructions in memory in order to execute
- 程式結束時,它釋放出記憶體為可用狀態,以及載入下一個程式並且執行它
主記憶體管理 (Memory Management) 決定 what is in memory when 優化 (Optimizing) CPU 採用 (utilization) and computer response to users
- 記憶體管理方面,作業系統必須具有下列的功能
- 記錄正在使用的記憶體部份以及是誰在使用
- 在記憶體空間可用時決定載入的行程
- 在需要時配置和回收記憶體空間
儲存體管理 (Storage Management)
- 作業系統提供資訊儲存一個一致性的邏輯觀點,目的是為了讓使用者能更方便的使用電腦系統
- 作業系統摘取儲存裝置的實體特性並將之定義成邏輯儲存單元,也就是檔案 (file)
- 不同的屬性包括
- 訪問速度 (access speed)
- 容量 (capacity)
- 數據傳輸速率 (data-transfer rate)
- 訪問方式 (access method) 順序或隨機 (sequential or random)
- 不同的屬性包括
檔案系統管理 (File-System Management)
- 檔案的建立與刪除
- 檔案的目錄 (directories) 建立與刪除
- 處理 (操作) 檔案和目錄
- 檔案與輔助記憶體的對映 (Mapping)
- 穩定 (非揮發性 non-volatile) 儲存裝置上的檔案備份
大量儲存體管理 (Mass-Storage Management)
- 太大放不進 main memory,所以放在磁盤
- 計算機操作的整體速度取決於磁盤 (disk) 子系統及其算法
- OS activities
- 可用空間管理 (Free-space management)
- 記憶體配置 (Storage allocation)
- 磁碟排班 (Disk scheduling)
- 這些儲存的東西不需要很快
- 三級存儲包括光纖存儲,磁帶
- 仍然必須由 os 或 app 進行管理
- WORM(一次寫入,多次讀取)和 RW(讀寫)之間變化不大
快取記憶體 (Caching)
Migration of Integer A from Disk to Register
I/O Subsystem
- I/O subsystem responsible for
- 記憶體管理構成要素包括
- 緩衝 (buffering)
- 快取 (caching)
- 連線同時週邊作業 (spooling)
- 通用裝置驅動程式 (Driver) 介面
- 特定硬體裝置驅動程式
- 記憶體管理構成要素包括