# Operating System [toc] ## Ch1 Introduction ### 大綱 - 電腦架構 - OS架構 - OS扮演啥角色 - **系統類型** ### 電腦架構含HW OS App Users ### 核心 Kernel > The one program running **at all times** on the computer is the kernel, part of the OS. > ### Operation System > Everything a vendor ships when you order an operating system > ### OS扮演的角色 - 對人:(1 ) 方便使用的電腦以及好的效能 (2) 提供讓user program 容易執行的地方 - 對電腦:(1) 資源分配的管理者 (2) 控制監督code的執行 ### System Type | Type | 特點 | 別名 | | --- | --- | --- | | Multiprogramming | 同一段時間內可以一次執行很多code、同步方式有concurrent和parallel | in 恐龍,視為batch system | | Time-sharing | 讓user有互動的感覺(因response time < 1 sec.) | multitasking | | Multiprocessors | 同一部電腦裡有很多CPUs,但共享memory, I/O devices→共享clock | Parallel system、tightly-coupled system(緊密耦合) | | Distributed system | 一堆處理器的集合(無共享,透過網路 or buses 連接) | loosely-coupled(鬆散耦合) | | Real-time system | 主要都是時間為主 | 無 | | Mobile system | 可攜性、輕量化 | 無 | | Batch system | 整理非即時性的tasks,在冷門時段處理 | 無 | - Time-sharing: > Time-sharing system is a logical extension of multiprogramming. > 最大差別:CPU switches jobs so frequently, creating an **interactive** computing - Multiprogramming: concurrent : 切來切去 parallel : 同時平行處理 - Multiprocessors: 優點:(1) 增加效能 (2) 經濟效益→不用額外memory, I/O devices (3) 增加依賴性→若有cpu掛掉可以互相頂著用 分兩種:(1) Asymmetric Multiprocessors (2) Symmetric Multiprocessor Asymmetric Multiprocessors : 主僕關係 Symmetric Multiprocessor : 均等關係 要求更快:Multicore sys. : on-chip 溝通比 between-chip快(但CPU數量對於電腦來說一樣) 增加太多CPU遇到瓶頸?Non-Uniform Mem. Access(NUMA) →把memory切成數等分,各cpu擁有各自的,但所有CPUs共享同一個physical address 優點:不會遇到資源使用上的瓶頸 缺點:會有延遲時間→OS可以改善penalty, via CPU scheduling, memory management - Distributed : 分三種: (1) Client-Server : Client post requests, server serve →若server掛了會卡一段時間 (2) peer-to-peer : 每個node都一樣,彼此幫忙 (3) Hybrid 優點:(1) 資源共享→節省成本 (2) 運算可以加速→平行處理 (3) 可靠度 - Real-Time system : 分兩個類型:Hard & Soft real-time sys. Hard主要對於時間要求較嚴格,e.g.軍事防衛系統、嵌入式即時系統→設計上須盡可能縮小延遲、要特別的CPU排班,市面上無OS可以應用在他身上(客製化) Soft僅需確保有real-time要求的process須在時間內完成,其餘無限制,e.g. VR、多媒體系統→設計上需支援Preemptive(CH4)且不提供Aging(防止Process餓死),也須降低kernel dispatch的延遲 降低dispatch latency → 讓kernel 在處理tasks時可以被preemptive,反之要做好同步機制: - 針對某些時段 kernel 才可以被 preemptive → 增加preemption point - 讓 kernel 變成 完全可preemptive - Mobile Computing (handheld sys.) : 行動系統犧牲了 1. 螢幕大小→便攜性 2. 記憶體大小→大小限制 3. 高速的CPU→耗能及散熱不易處理 但比較不在乎 Storage, 因為有雲端幫助(國外題目) - Batch system : 把非急迫且具週期性的工作排至冷門時段處理,user就不需與其互動以提高工作效率,e.g.盤點庫存 ## Ch2 Interrupt、I/O、OS Structure、Virtual Machine ### 大綱 - I/O 運作方式 - 硬體保護機制 - Interrupt種類 ### I/O 運作方式 因為 I/O 之運作速度與 CPU clock 差異太大,所以需要方法控制他們 就產生了 I/O subsystem → kernel 中專門管 I/O 的,每個 device 也有專屬的 driver 再由 driver 去控制device controller,進而控制device運作 ### Work flow (→為request ←為response) <pre> User program ←→ kernel subsystem ←→ device driver ←→device controller ←→ device User mode | Kernel mode Software | Hardware </pre> ### I/O在執行時有三種方式: - Polling: a.k.a. Programmed I/O, Busy-waiting I/O,最簡單的溝通方式。 steps: (1)CPU會不斷讀取busy-bit,直到ready(clear)。 (2)If clear, CPU設定write bit在command register中,且寫入byte data 到data-out reg. (3)CPU set command-ready bit (4)Controller 看到command-ready bit時控制器會設定busy-bit (5)Controller讀取command register 且開始控制I/O執行,運用data-out reg. (6)Controller 清除command-ready bit 和 busy-bit,當CPU Polling到此signal即得知完成 若Controller and Device 速度較慢→會減低CPU utilization ,故需要後面方式 **大概念:** **CPU定時發出詢問,去詢問各個device(polling)是否需要服務,服務結束後再詢問其他設備。** - Interrupt: 為改善 Polling,不要讓CPU乾等device回應,交由controller 告訴CPU I/O設備已完成工作。 steps: (1)透過 CPU 硬體端新設置的 interrupt-request line 去偵測是否有I/O device controller raise a signal. (IRL連接CPU和device controller) (2)CPU偵測到後,將會先進行保存當前Process執行狀況且暫停,jump to interrupt-handler routine(fixed address in memory) → Context Switch (3)interrupt-handler (software)會處理此中斷 →此為Asynchronous Event (不需要定期去輪詢) 其中fixed address in memory為interrupt vector(提供table去儲存各個中斷處理器在哪個位置) - 中斷種類 (i) 早期分類 (1)External Interrupt: CPU以外的設備 (2)Internal Interrupt: CPU執行程式時發生的重大錯誤 (3)Software Interrupt: 執行中的Process需要OS提供服務時才會發出此類中斷 (ii) 演化後 (1) External Interrupt → Interrupt 硬體 (2) Traps: 包含Internal Interrupt and Software interrupt (iii) 現在分類 (1) Non-maskable Interrupt: 此中斷發生必須立刻處理 (2) Maskable Interrupt: 可延後或忽視的 - DMA Direct Memory Access Block-transfer oriented(NOT Byte-transfer, NOT Character transfer) 提供一個裝置控制器,讓I/O做資料傳輸(in memory)時,CPU不用參與 steps: (1) device driver 告知device controller 需要進行資料傳輸 (e.g. disk to mem.) (2) device controller 告知DMA controller 傳輸來源的位置 & 資料量 & destination (3) device controller 指揮device 傳輸資料並透過PCI bus 傳資料給DMA (4) 資料傳完畢後,才會發出I/O complete 通知 CPU 中斷 ### 三種IO優缺點比較 | | Polling | Interrupt | DMA | | --- | --- | --- | --- | | 缺點 | 若device 運作時間長,則CPU會耗費CPU time 去不斷polling直到device ready →Interrupt | 若I/O operation time小於interrupt handle time則會浪費時間在處理content switch. | 會增加硬體的複雜程度 | | | 若怕CPU polling太久則將其切換給其他工作執行則有可能導致資料流失(when device is fast) | CPU仍要監看data transfer →DMA | 因DMA priority 較高,當與CPU有衝突時,CPU會拿不到memory | | 推演 | 不想浪費CPU time -> interrupt | 若中斷次數過多則也會影響效能→DMA | | | 優點 | 成本低 不需硬體支持 | 可以讓CPU平行處理其他工作(when I/O operating) | CPU不需參與data transfer過程 | | | | 若I/O operation time大於interrupt handle time, 使用interrupt 會提高CPU utilization 比起Polling來說 | Highly suitable for Block-transfer oriented device such as disk. |