# ch1 ### 作業系統—客戶端和電腦硬體之間的中介程式。 ## 作業系統的功能 * 資源管理(resource allocator) * 控制程序(control program) ## 作業系統的組成 * 核心(kernel): 不停執行。 * 開機程式(bootstrap): 重開機或開機時就加載到記憶體,讓cpu執行,加載kernel到記憶體。  (儲存在ROM或是EPROM的firmware韌體。) # 電腦系統結構 由硬體、作業系統、應用程式、客戶端組成。 多個或一個CPU和其他裝置都在競爭記憶體週期(memory cycles)  * I/O 和 CPU 可以同步執行。 * Device Controller 負責特定的裝置類型。 * CPU 移動數據在 主要記憶體 與 local buffers 之間。 * I/O 指數據從裝置到Controller的local buffer。 * Device Controller完成作業時,使用interrupt通知CPU。 ### 中斷 Interrupt **利用 Interrput Vector(包含所有Service Routines的位址),將控制權轉移給ISR(Interrupt service routine)。** 主要功能: * 必須保存中斷的instruction的位址。 * 當有interrupt正在處理的時候,新的interrupt會被停用,以防止丟失interrupt。 * Trap: 因錯誤或用戶請求,而由**軟體**產生的中斷。 * 作業系統是中斷驅動的。  ### 中斷處理 Interrupt Handing 1. 作業系統藉由 Registers 和 Program Counter(PC)保存CPU的狀態。 2. 決定中斷種類: polling, vectored interrupt system。 3. 根據種類由單獨的代碼片段(Separate segments of code)處理。 4. 不同的中斷有不同的長度。  ## I/O 結構 需要I/O結束CPU控制權才會回到客戶端程式: * Wait instruction,閒置CPU直到下個interrupt。 * Wait loop。爭搶記憶體存取。 * 一次一個I/O。 不需要I/O結束CPU控制權才會回到客戶端程式: * System Call 。向作業系統請求以允許客戶端等待 I/O 完成。 * Device-status table包含每一個I/O裝置的種類、狀態、位址。 * 作業系統索引到I/O裝置表來決定裝置狀態和更改欄位內容來涵蓋interrupt中斷。 ## DMA(Direct Memory Access) 結構 一個接近記憶體速度的資訊傳遞的高速I/O裝置。 不需要CPU,直接從Device Controller傳輸數據塊(data block)到主記憶體。 每個數據塊只要一個interrupt。 也稱為Cycle stealing,因為偷取CPU的執行週期來傳輸數據塊。 CPU週期: 1. 從記憶體中取出指令。 2. 從記憶體中獲取數據。 3. 執行。 ## 儲存結構 * 主記憶體。 * 二級儲存(Secondary storage)。 主記憶體的擴充功能提供大的非揮發性儲存容量 * 磁碟。 磁碟表面分割成tracks,再分割成sectors。 Disk Controller 決定設備和電腦間的邏輯交互。  ### 儲存層次結構Hierarchy 取決於speed、cost、volatility  * 資訊會暫時複製,從慢到快的儲存裝置。 #### Caching * 最先檢查資訊是否在裡面,若有CPU直接使用。否則複製到Cache。 * 通常小於被快取的空間。 ## 電腦架構(Architecture)  多數系統使用單一通用處理器**single general-purpose processor** 也有專用處理器Special-Purpose Processors: * Networks Processor * GPU * Floating Point Processor 多核處理器 Multiprocessors: 平行系統parallel systems, 緊耦合系統tightly-coupled systems。 優點: * 增加吞吐量。 * 規模效應。 * 增加可靠性: 柔性降級和容錯。 分為**非對稱**與**對稱**多處理器。  ### 集群系統 Clustered Systems 類似於多處理器系統,但多個系統協同工作。 通常透過儲存區域網路SAN (storage-area network) 共用儲存。 提供一個故障後仍運作的高可用性服務。 同樣分為非對稱與對稱。對稱只有一台熱機中,非對稱則是多個節點相互監控並執行程序。 有些集群式系統是high-performance computing (HPC),需要用平行化程式。 ## 作業系統結構 Multiprogramming 需要高效能。 因為單一用戶很難讓CUP和I/O一直保持繁忙。 Multiprogramming會組織工作,**讓CPU盡可能保持繁忙**。 系統中總作業的子集保持在記憶體中。 通過job scheduling選擇工作和執行。 當需要wait(如I/O),OS會切換另一個工作。  Timesharing (multitasking) CPU不斷的切換工作,讓客戶交互到每個工作。 * 回應時間要小於1秒,**回應時間盡可能縮短**。 * 每個用戶至少一個程式在記憶體中執行-> process。 * 如果多個工作準備同時執行-> CPU scheduling。 * 如果程序塞不下記憶體,Swapping會搬動程序進出。 * 虛擬記憶體 允許程序不完全在記憶體中執行。  ## 作業系統操作 * Interrupt 由硬體驅動。 * 軟體錯誤或請求創建exception或trap。 * 其他進程問題包括無限循環、進程相互修改或作業系統修改。 * Timer防止無限循環、進程佔用資源。計數器為零產生中斷。 Dual-mode 操作允許作業系統保護自身和其他系統組件。 User mode, Kernel mode: Mode bit由硬體提供。 提供區分系統何時運行使用者程式碼或核心程式碼的能力。 有些指令被指定為privileged,只能在內核模式下執行。  ## 進程管理 Process Management Process 是一個執行的軟體。系統工作的單元。 Program是被動實體,Process是主動實體。 Process需要資源完成工作,在終止的時候回收可回收的資源。 * 單線程進程:有一個PC指定下一行instruction執行的位置。 * 多線程進程:每個線程有一個PC。 Activities: * 創建和刪除用戶與系統進程。 * 暫停和重新開始進程。 * 提供進程同步process synchronization機制。 * 提供進程通訊process communication機制 * 提供死鎖處理deadlock handling機制 ## 記憶體管理 所有的instruction都在記憶體準備執行。 所有的數據在進程前後都在記憶體。 當最佳化 CPU utilization使用率 和 computer response給用戶時,記憶體管理什麼資訊在記憶體中。 Activites: * 追蹤記憶體正在使用哪部分和被誰使用。 * 決定哪個進程和數據在記憶體中進出。 * Allocating and deallocating 分配記憶體空間。 ## 儲存空間管理 抽象化的邏輯儲存單元: file 每個媒體均由儲存設備控制。(Varying properties include access speed, capacity, data transfer rate, access method (sequential or random)) ### 文件系統管理 文件通常組織在dir中,存取控制決定誰能夠存取他。 OS activites: * 創建和刪除文件。 * 原始操作文件和文件夾。 * 映射文件到secondary storage。 * 將文件備份到非揮發性的儲存設備上。 ### Mass-Storage Management 使用磁碟,存大或者長周期的數據。 計算機運行的整體速度取決於磁碟子系統及其演算法。 OS activities: * Free-space management。 * 儲存分配。 * 磁碟排程。   ### I/O 子系統 OS要隱藏硬體的複雜性。 * 涵蓋I/O的記憶體管理: * buffering 傳輸數據時暫時儲存數據 * caching 將部分資料儲存在更快的儲存中以提高效能 * spooling 一項工作的輸出與其他工作的輸入重疊(Simultaneous Peripheral Operations OnLine) * 通用設備驅動程式介面General device-driver interface * 特定硬體設備的驅動程式 ## 安全與保護 * Protection 用於控制進程,或使用者對OS資源存取的任何機制。 * Security 防禦系統免受內部和外部攻擊。 系統分類用戶決定誰能做甚麼: * 每個UserID包含name,number。與控制存取文件、進程有關。 * GroupID用於一致管理多個用戶。 * Privilege escalation權力提升。 ## 電腦環境 * 傳統電腦: * office env. * Home network.(NAT,FTTH,LAN) * Client-Server Computing: 多個系統服務器回應用戶端的請求。 * P2P: 分散式系統,不區分客戶端和服務器。 每個節點都要加入p2p網路。 * Web-Based Computing: 有用於管理類似伺服器之間的網路流量的新設備類別load balancers ## 開源OS 以源代碼格式提供,而不僅僅是二進制閉源代碼。反對版權保護和數位版權管理 (DRM) 運動。
×
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