570 likes | 842 Views
第二章 作業系統概述 Operating Systems Overview. 介紹作業系統的歷史、原理 作業系統的目標和功能,如何由最初的批次系統 (batch system) 演進到複雜的多模式 (multi-mode) 與多使用者 (multi-user) 。. 2.1 作業系統目標與功能. 作業系統的角色: 控制應用程式執行的程式。 使用者與電腦硬體之間的介面。 作業系統的目標 方便性 (convenience) :使電腦更方便使用。 效率 (efficiency) :將電腦硬體資源做有效的利用。
E N D
第二章 作業系統概述Operating Systems Overview • 介紹作業系統的歷史、原理 • 作業系統的目標和功能,如何由最初的批次系統(batch system)演進到複雜的多模式(multi-mode)與多使用者(multi-user) 。
2.1 作業系統目標與功能 • 作業系統的角色: • 控制應用程式執行的程式。 • 使用者與電腦硬體之間的介面。 • 作業系統的目標 • 方便性(convenience):使電腦更方便使用。 • 效率(efficiency):將電腦硬體資源做有效的利用。 • 演進能力(ability to evolve):測試與引進新功能不影響服務品質。
作業系統作為使用者與電腦之間的介面 • 程式開發(program development) • 程式執行(program execution) • 存取輸出入裝置 (access to I/O devices) • 控制檔案存取(controlled access to files) • 系統存取(system access) • 錯誤偵測與回應(error detection and response) • 帳務(accounting) Figure 2.1 Layers and Views of a Computer System
作業系統作為資源管理者 • 作業系統與一般電腦軟體一樣,都是由處理器執行的程式。 • 作業系統常讓出控制權,並且需要重新取得控制權。 • 核心(kernel, nucleus):包含作業系統最常被使用的函式。 Figure 2.2 The Operating System as Resource Manager
簡化作業系統的演進 • 作業系統會不斷的隨時間演進,原因包括: • 硬體升級與新硬體的產生:例如,分頁(paging)硬體與分頁機制的發展。 • 新服務:例如,視窗顯示。 • 修正:發現錯誤、然後修正。修正也可能造成新的錯誤。
2.2 作業系統的演進 • 循序處理(serial processing) 1940末期~1950中期 • 程式設計師直接面對電腦硬體,沒有作業系統存在。 • 電腦硬體及周邊:主機、顯示燈、輸入裝置、印表機、讀卡機。 • 主要問題: • 排程(scheduling):使用簽名表預約使用的時間。 • 設定時間(setup time):連串的設定動作,浪費時間。
簡單批次系統(simple batch systems)1950中期~1960初期 • 使用監督程式(monitor)軟體。 • 使用者不再需要直接存取機器,只要將卡片或磁帶上的工作委託給電腦操作員來處理。 • 電腦操作員將整批工作依序放在一起,並將全部的批次工作放在監督程式使用的輸入裝置上。 • 每個工作結束後,監督程式會自動開始載入下一個工作。 • 監督程式負責排程,利用工作控制語言(Job Control Language, JCL): $JOB $FTN .... Fortran instructions $LOAD $RUN .... Data $END
簡單批次系統 (續) • 監督程式期盼的硬體功能: • 記憶體保護:使用者程式不能改變監督程式所在的記憶體內容。 • 計時器:阻止單一工作獨占整個系統。 • 特權指令:某些機器層級的指令被指定為特權指令,且只能由監督程式執行。 • 中斷:此功能使得讓出或取得控制權時更有彈性。 Figure 2.3 Memory Layout for a Resident Monitor
多重程式批次系統(multiprogrammed batch systems) • 即使用簡單批次作業,處理器仍然時常處於閒置狀態,因為I/O裝置的速度比處理器慢很多。 • 假使有足夠記憶體來儲存二個使用者程式,當一個工作正在等待I/O時,另一個不在等待I/O的工作便可以執行。 • 我們可以進一步增加記憶體,容納更多程式,交替執行他們,如此稱為多重程式(multiprogramming)或多工(multitasking)。
依序執行:JOB1, JOB2, JOB3 • 執行時間:5 分鐘, 15 分鐘, 10 分鐘. • 總執行時間:30 分鐘 10
12 Figure 2.6 Utilization Histograms
多重程式使用率、硬體特性 • 上表由圖2.6分別整理得出。 • 硬體特性:I/O中斷、DMA、記憶體管理、排程演算法 (多個程式放在記憶體)。
分時系統(Time-Sharing Systems) • 因為多重程式的使用,批次處理可以相當有效率。然而,許多工作需要讓使用者與電腦互動。 • 多重程式也可用來處理多個交談式工作,稱為“分時”—處理器的處理時間被許多使用者所分享。 • 1961年CTSS系統:系統時鐘每0.2秒發出一次中斷請求,作業系統重新取得控制權。
15 Figure 2.7 CTSS Operation
2.3 主要的成就 • 處理程序(Process) • 記憶體管理(Memory Management) • 資訊的保護與安全(Information protection and security) • 排程與資源管理(Scheduling and resource management) • 系統結構(System structure)
處理程序(Process) • Multics (1960)設計人員最早使用Process這個字眼 • 有時比工作(Job)更普遍被使用 • 處理程序有許多不同定義: • 一個正在執行的程式。 • 一個在電腦執行的程式的個體(instance)。 • 一個能指定給處理器或在處理器執行的實體(entity)。 • 一個看作是單一循序執行緒(thread)的活動單位、一個目前的狀態,以及一組系統資源。 • 電腦發展的三個主要路線,引發了時序(timing)、同步(synchronization)等問題 • 多重程式批次系統(multiprogrammed batch systems) • 分時系統(time-sharing systems) • 即時系統(real-time systems)
處理程序(Process) (續) • 設計一個系統軟體以便協調這些不同的活動,成為一件非常困難的事。 • 系統中有多個工作時,不可能分析可能事件的所有順序組合。 • 即使錯誤已被偵測出來,要找到發生錯誤的原因也很困難。 • 主要發生錯誤的原因: • 不當的同步(Improper synchronization) • 失敗的互斥(Failed mutual exclusion) • 不確定性的程式運作(Non-determinate program operation) • 死結(Deadlock) • 要解決這些問題必須要使用一個有系統的方法來監督並控制各種在處理器上執行的程式,而處理程序(process)的概念為此提供了基礎。
處理程序(Process)的組成 • 一個可執行的程式 • 與程式相關的資料(變數、工作空間、緩衝區等) • 程式的執行序文(execution context) 或稱為處理程序狀態(process state)。 • 執行序文內含: 各式各樣的處理器暫存器(register)的內容、作業系統所需的資訊。 Figure 2.8 Typical Process Implementation
記憶體管理(Memory Management) • 處理程序的分離 (Process Isolation) • 自動配置與管理(Automatic allocation and management) • 模組化程式設計的支援(Support modular programming) • 保護與存取控制(Protection and access control) • 長期的儲存空間(Long-term storage)
資訊的保護與安全(Information protection and security) • 存取的控制(Access Control) • 資訊流的控制(Information flow control) • 認證(Certification)
排程與資源管理(Scheduling and resource management) • 公平性(Fairness) • 差別的回應(Differential responsiveness) • 效率(Efficiency) Figure 2.11 Key Elements of an Operating System for Multiprogramming
系統結構(System structure) Level Name Objects Example Operations 13 Shell User programming Statements in shell language environment 12 User processes User processes Quit, kill, suspend, resume 11 Directories Directories Create, destroy, attach, detach, search, list 10 Devices External devices, such Create, destroy, open, close, as printer, displays read, write and keyboards 9 File system Files Create, destroy, open, close read, write 8 Communications Pipes Create, destroy, open. close, read, write
系統架構(System architecture) (續) Level Name Objects Example Operations 7 Virtual Memory Segments, pages Read, write, fetch 6 Local secondary Blocks of data, device Read, write, allocate, free store channels 5 Primitive processes Primitive process, Suspend, resume, wait, signal semaphores, ready list 4 Interrupts Interrupt-handling Invoke, mask, unmask, retry programs 3 Procedures Procedures, call stack Mark stack, call, return 2 Instruction Set Evaluation stack, micro- Load, store, add, subtract program interpreter, branch scalar and array data 1 Electronic circuits Registers, gates, buses, Clear, transfer, activate, etc. complement
2.4 現代作業系統的特徵 • 微核心架構(Microkernel architecture) • 多重執行緒(Multithreading) • 對稱式多重處理(Symmetric multiprocessing; SMP) • 分散式作業系統(Distributed operating systems) • 物件導向設計(Object-oriented design)
微核心架構(Microkernel architecture) • 大部分作業系統皆為一個大的單體核心(monolithic kernel) • 包含大部分作業系統該有的功能,包括:排程、檔案系統、網路、裝置驅動程式、記憶體管理等。 • 實作成單一的處理程序,其中所有元素都分享了相同的位址空間。 • 一個微核心架構只指定了一些必要的功能給核心 • 包括:位址空間、處理程序間通訊(Inter-process communication)、基本的排程。 • 其他的作業系統服務由使用者模式的伺服器程式(server)提供。(這些伺服器程式被微核心視為一般應用程式的處理程序。) • 核心程式與伺服器程式的發展得以分離。 • 微核心架構的特點 • 簡化實作並且提供彈性。 • 適合分散式環境。
多重執行緒(Multithreading) • 可以同時執行一個程式內不同執行緒的技術。 • Thread與Process的區別 • 執行緒(thread):一個可分派的工作單元,內含處理器序文(context; 含程式計數器及堆疊指標)、自己的資料區以提供堆疊(stack; 分支到副程式使用)。 • 處理程序(process):一個或多個執行緒的集合,並含有相關系統資源。 • 多重執行緒的好處 • 將一個應用分解為數個相互獨立的執行緒同時執行。 • 每一執行緒直接對應到個別需同時執行的工作。 • 執行緒交錯執行,較處理程序交錯執行有效率。
對稱式多重處理(Symmetric multiprocessing) • 對稱式處理器的特徵 • 有多個處理器。 • 這些處理器共享相同的主記憶體與I/O裝置,並且由通訊匯流排(bus)或其他內部連結結構來進行互連。 • 所有處理器都能執行相同的功能。(因此稱為“對稱式”) • 優點 • 效能(Performance):同時執行,提昇效率。 • 可用性(Availability) :其中一個故障,仍可繼續執行。 • 漸增式成長(Incremental growth):使用者可增加處理器的數目,配合使用量的成長,增強執行效能。 • 延展性(Scaling):製造商可調整配置的處理器的數量,提供不同價格與效能的產品。
分散式作業系統(Distributed operating systems) • 對一群分離的電腦(多重電腦系統; multi-computer system)提供單一系統的外觀。 • 處理一個實體(電腦)的集合; • 每個實體都有它自己的主記憶體、輔助記憶體、I/O模組等。 • 分散式作業系統的執行環境 • 多個電腦系統經由網路連結。 • 每個電腦有自己的處理器、記憶體與周邊裝置。 • 分散式作業系統的發展遠比單處理器及SMP作業系統還要緩慢。 • 分散式作業系統的功能, 舉例: • 整合成單一主記憶體、單一輔助記憶體的系統 • 單一化的工具:分散式檔案系統 • 提供多個電腦的排程與同步
物件導向設計(Object-oriented design) • 提供核心模組設計的指引。 • 客製化(customize)修改作業系統,而不影響系統的完整性。 • 分散式工具、分散式作業系統的發展更為容易。
2.5 Windows 2000(W2K)的概觀 • 歷史 • 必須從MS-DOS或PC-DOS開始說起。 • MS-DOS或PC-DOS (1981):4,000行組合語言程式碼;8K記憶體;8086微處理器。 • DOS 2.0 (1983):PC XT,加入硬碟支援,子目錄、類似Unix的命令、I/O轉向、背景列印 • DOS 3.0 (1984):PC AT,80286,但未使用保護模式。 • DOS 3.3 (1987): 支援IBM的PS/2封閉架構的新產品線。(註: IBM相容PC市場受到衝擊,但開放架構後來成為主流,PS/2收場) • Windows 3.0 (1990):GUI系統,但仍執行在DOS上。要與蘋果的麥金塔(Macintosh)競爭。 • OS/2:微軟與IBM共同發展的下一代作業系統,後由IBM自行發展,發行了幾個版本,幾經努力,最後終止。
W2K歷史(續) • Windows NT 3.1:32-bit作業系統;Windows 3.1相同的GUI。 • Windows NT 4.0: Windows 95相同的GUI。 • Windows 2000:主動式目錄(active directory)服務。 • 分為伺服器(server)與專業 (professional)二個版本。 • 本質上,微核心架構、執行架構,及服務都相同, • 伺服器版本額外提供了一些網路上的服務,例如: 終端機伺服器(terminal server)。
單使用者的多工 • Windows NT的設計動機 • 想要充分發揮今日32-bit微電腦的能力。 • 單人多工(Single-user multitasking):改善Windows 3.1及95的多工 • 主從式計算環境(Client-Server Computing Environment) • Windows NT vs. Unix • Windows NT:單一使用者、多工作業系統,執行在個人電腦或工作站 • Unix:多人多工的作業系統,執行平台從微電腦一直到超級電腦
W2K的組織架構 • 特點:修改的微核心、高度模組化 • 其設計人員發現純粹的微核心系統會使process與thread的轉換花費增加。 • 硬體抽象層(Hardware Abstraction Layer, HAL) • 適應不同平台:Pentium、PowerPC、Alpha。 • 包括:系統Bus、直接記憶體存取(DMA)、中斷控制、系統時間、記憶體模組、SMP支援。 • 微核心(Microkernel) • 最常使用與最基本的作業系統單元。 • 包含:thread的排程、process轉換、例外與中斷處理、多處理器同步。 • 微核心內的程式並不以thread形式執行,不可以暫停或分頁。 • 裝置驅動程式(device driver) • 包含: 檔案系統及硬體裝置驅動程式,將使用者的I/O功能呼叫(function call),轉換成特定的硬體裝置的I/O要求(I/O request)
管理層(Executive) • 包含特定系統功能的模組、應用程式介面(API) : • I/O管理 (I/O manager):負責對適當的裝置驅動程式進行分派之工作。 • 物件管理(object manager):建立物件的handle。(handle: 由存取控制資訊及指向物件的指標所組成) • 安全參考監督 (security reference monitor):確保驗證與稽核規則。 • 處理程序/執行緒管理 (process/thread manager) :產生及刪除process及thread物件。 • 區域程序呼叫(Local Procedure Call, LPC):應用程式與Executive間也為主從式關係,與Remote Procedure Call (RPC) 類似。 • 虛擬記憶體管理:虛擬位址對應到實體位址。 • 快取記憶體管理(cache manager): 將最近參考的磁碟資料儲放在主記憶體中,藉由延遲資料寫回磁碟,改進I/O效能。 • 視窗/圖形模組(window manager):管理視窗介面及圖形裝置。
使用者處理程序 • W2K支援四種型態的使用者處理程序 (執行於使用者模式下) • 特殊系統支援的處理程序(special system support processes) • 伺服器處理程序(server processes) • 環境子系統(environment subsystem): Win32, POSIX, OS/2。每個環境子系統包含動態連結函式庫(DLL),使得使用者應用程式的呼叫,能轉為W2K的呼叫。 • 使用者應用程式(user application): 共五種型式: Win32,POSIX, OS/2, Windows 3.1, MS-DOS。 • 每個子系統都是一個分離的處理程序 • 提供一個圖形化或命令列的使用者介面。 • 提供API給特定的操作環境使用。 • 最重要的子系統: Win32 • W2K的Win32 API包含Windows 98的Win32 API。 • 其他作業系統的API均對應到Win32,使之能夠在W2K上執行。
主從模式 • 運作方式 • 環境子系統及服務子系統都被實作成為一個或多個處理程序。 • 每一個處理程序都在等待用戶端發出的請求(request)。 • 用戶端可以是一個應用程式或其他的作業系統模組。 • 用戶端藉由傳送訊息(message)的方式提出請求,而訊息透過管理層送到適當的伺服器程式(server)。 • 伺服器程式同樣使用傳送訊息的方式將結果或狀態傳回。 • 優點 • 簡化了管理層。 • 增強可靠度。 • 提供制式的方法經由區域程序呼叫(LPC)與管理層進行溝通。 • 提供分散式計算的基礎。(類似RPC的訊息傳送方式)
執行緒與對稱式多重處理(SMP) • 作業系統常式(routine)可執行在任一處理器上,不同常式可在不同處理器上同時執行。 • 同一個process的thread可執行在不同處理器上。 • server的process可使用多個thread,處理client的要求。 • 彈性的處理程序通訊(IPC),方便資料與資源的分享。
Windows 2000的物件 • 涵蓋的主要物件導向概念: 封裝(encapsulation) 、物件class與instance、繼承(inheritance) 、多型態(polymorphism) • W2K並非所有實體都是物件,以物件表示的資料型態 • 使用者模式存取的資料、分享或保護情況下的資料 • 舉例:檔案、process、thread、號誌(semaphore)、計時器(timer)、視窗等。 • 核心物件: 管理層內的物件,配置於核心程式的記憶體空間內。(與使用者階層的物件區隔) • handle:指到物件的指標 • 建立物件時傳回handle,呼叫Win32函式需要傳入handle。 • W2K並不是十分成熟的物件導向作業系統,它也不是用物件導向語言所實作。 • 存在於管理層元件內的資料結構並非以物件的方式呈現。 • W2K展現了物件導向技術持續用於作業系統設計的趨勢。
2.6 傳統UNIX作業系統 • UNIX的歷史 • AT&T Bell Labs發展(1970):PDP-7;受CTSS影響較大,結合了Multics許多的概念。 • 由PDP-7轉移至PDP-11:以C程式語言重新撰寫。 • Version 7:大部分現代UNIX的始祖 • BSD (Berkeley Software Distribution):加州柏克萊大學(University of California at Berkeley)
一般UNIX架構 Figure 2.15 General UNIX Architecture
使用者程式可以直接或間接的由函式庫程式(Library)呼叫系統服務。使用者程式可以直接或間接的由函式庫程式(Library)呼叫系統服務。 • 系統呼叫介面(System Call Interface)提供使用者與高階軟體存取kernel。 • Kernel分為二部分: • Process Control Subsystem • File Subsystem Figure 2.16 Traditional UNIX Kernel [BACH86]
2.7 現代UNIX系統 • 模組化的新系統 (圖2.17) • 小型的核心設施,提供處理程序所需的函式及服務。 • 外圍圓圈表示函式和介面。 • System V Release 4 (SVR4): 提供商業版UNIX的制式平台,可在32位元微處理器、超級電腦上執行。 • Solaris 2.x: Sun基於SVR4及其SunOS的UNIX發行版本,取代其基於BSD 4.2的SunOS。 • BSD 4.4: BSD的最後版本,其發展及實作組織後來被解散。 • Linux: (詳見下頁)