PART 1 建立入門觀念 Chapter 01 認識電腦系統 1.1 學習作業系統的準備...1-2 1.2 電腦發展的歷史...1-3 1.2.1 電腦系統的硬體組成...1-4 1.2.2 電腦系統的軟體組成...1-5 1.2.3 電腦系統處理的資料 (data)...1-7 1.2.4 主宰電腦的人類...1-7 1.3 認識電腦結構...1-8 1.3.1 處理的功能... 1-10 1.3.2 儲存的功能... 1-10 1.3.3 輸入與輸出的功能...1-11 1.4 電腦的種類...1-12 1.4.1 電腦的分類... 1-12 1.4.2 認識各種類型的電腦... 1-13 1.5 系統程式的迷思...1-15 1.5.1 組譯程式 (Assemblers)... 1-15 1.5.2 程式的連結 (Link) 與載入 (Load)... 1-16 1.5.3 編譯程式 (compiler)... 1-17 1.5.4 作業系統 (operating system)... 1-20 1.5.5 其他的系統程式... 1-20 Chapter 02 作業系統面面觀 2.1 作業系統簡介...2-2 2.1.1 作業系統發展的歷史...2-3 2.1.1.1 第 1 代 (first generation, 1945-1955) 2-4 2.1.1.2 第 2 代 (second generation, 1955-1965) 2-4 2.1.1.3 第 3 代 (third generation, 1965-1980) 2-5 2.1.1.4 第 4 代 (fourth generation, 1980 以後 ) 2-7 2.1.2 作業系統的設計...2-8 2.1.3 作業系統功能上的組織...2-9 2.1.4 作業系統的實作... 2-10 2.2 作業系統的分類...2-11 2.2.1 批次系統 (batch system)...2-11 2.2.2 分時 (timesharing) 系統... 2-12 2.2.3 個人電腦作業系統... 2-12 2.2.4 即時系統... 2-13 2.2.5 嵌入式作業系統 (Embedded operating systems)... 2-14 2.2.5.1 嵌入式系統的基本觀念 2-15 2.2.5.2 嵌入式系統的處理器 (processors) 2-15 0-5
作業系統 2.2.5.3 嵌入式系統的設計與應用 2-16 2.2.6 其他種類的作業系統... 2-19 2.3 虛擬機器 (virtual machines)...2-20 PART 2 處理元的管理 Chapter 03 認識處理元 3.1 處理元 (process) 的基本概念...3-2 3.2 從作業系統的啟動程序觀察處理元的衍生過程...3-6 3.2.1 UNIX 的啟動程序... 3-7 3.2.2 系統呼叫 (system call)...3-7 3.3 作業系統的內部對處理元的分類...3-8 3.4 系統的細節...3-9 3.5 系統呼叫 (system call) 的實例...3-10 3.6 處理元與執行緒 : 觀念的釐清...3-14 3.6.1 多執行緒的觀念 (multithreading)... 3-14 3.6.2 執行緒的功能... 3-16 3.6.3 執行緒的種類... 3-17 3.6.4 Windows 2000 對於執行緒與處理元的管理... 3-18 3.6.5 Linux 對於執行緒與處理元的管理... 3-19 Chapter 04 排程 (Scheduling) 4.1 排程 (Scheduling)...4-2 4.1.1 排程的由來... 4-2 4.1.2 排程機制與策略...4-3 4.1.3 不可間斷的 (nonpreemptive) 排程策略...4-6 4.1.3.1 先來先做 (FCFS, First-Come-First-Served) 的排程法 4-6 4.1.3.2 最短工作優先 (SJN, Shortest Job Next) 的排程法 4-7 4.1.3.3 指定優先權的排程法 4-8 4.1.3.4 截止時間的排程法 4-9 4.1.4 可間斷的 (preemptive) 排程策略... 4-10 4.1.4.1 輪替式的排程法 (Round Robin scheduling) 4-11 4.1.4.2 多層佇列 (multiple-level queues) 的排程法 4-13 4.2 多處理器的排程 (multiple-processor scheduling)...4-13 4.3 作業系統排程的實例...4-13 4.3.1 單一處理器的排程 (uniprocessor scheduling)... 4-14 4.3.2 回應時間 (response time)... 4-16 4.3.3 佇列系統 (queuing system)... 4-16 0-6
Chapter 05 同步 (Synchronization) 5.1 基本的作業系統同步 (Synchronization) 問題...5-2 5.1.1 認識並行 (concurrency) 的觀念...5-4 5.1.2 臨界區域 (critical section)...5-5 5.1.3 實際案例...5-5 5.1.4 解決的方法...5-7 5.1.5 同步問題解決方法的整理... 5-9 5.1.5.1 典型的互斥機制 5-9 5.1.5.2 透過軟體方法來達到互斥 (mutual exclusion) 5-9 5.1.5.3 Dekker s 演算法 5-12 5.1.5.4 Peterson 的演算法 5-14 5.2 處理元之間的協調...5-15 5.3 號誌 (semaphore)...5-16 5.3.1 常見的同步問題... 5-17 5.3.1.1 基本的臨界區域問題 5-17 5.3.1.2 基本的同步問題 5-17 5.3.1.3 生產者 - 消費者問題 (producer-consumer problem) 5-18 5.3.1.4 讀取與寫入的問題 (readers-writers problem) 5-19 5.3.2 實作上的考量... 5-21 Chapter 06 死結 (Deadlock) 6.1 認識死結 (Deadlock)...6-2 6.1.1 死結的基本觀念...6-3 6.1.2 死結的模型...6-4 6.1.3 處理死結的方法...6-5 6.2 死結的預防 (prevention) 策略...6-7 6.3 死結的避免 (avoidance) 策略...6-8 6.3.1 資源分配圖型演算法 (Resource-Allocation-Graph algorithm)... 6-8 6.3.2 班克演算法 (Banker s algorithm)...6-9 6.4 死結的偵測 (detection)...6-11 6.4.1 資源類型只有單一案例的情況...6-11 6.4.2 資源類型只有多個案例的情況... 6-12 6.5 死結的復原 (recovery)...6-12 6.5.1 處理元的終止 (process termination)... 6-12 6.5.2 資源的中斷 (resource preemption)... 6-13 Chapter 07 進階的同步觀念與實務 7.1 深入探討作業系統的同步 (Synchronization) 問題...7-2 7.1.1 共用變數 (shared variable) 的解決辦法...7-2 7.1.2 引導出號誌 (semaphore) 的觀念...7-5 7.1.3 實作 (implementation) 上的考量...7-7 0-7
作業系統 7.2 多處理器 (multiprocessors) 的情況...7-9 7.3 更高層次的同步控制方法...7-9 7.3.1 合併同步 (AND synchronization)...7-9 7.3.2 監督器 (monitor)...7-11 7.3.3 處理元間的溝通 (IPC)...7-11 7.3.4 事件排序 (Event ordering) 與同步問題... 7-12 7.4 執行緒 (threads) 的實作...7-12 7.4.1 程式語言中執行緒 (Thread) 的用途... 7-14 7.4.1.1 Java 執行緒狀態的變化 7-15 7.4.1.2 在 Java 中建立執行緒 7-15 7.4.1.3 Java 執行緒中常用的方法 7-18 7.4.2 共用程式碼與同時性控制... 7-19 7.4.3 執行緒之間的溝通... 7-21 PART 3 記憶體的管理 (memory management) Chapter 08 記憶體管理的概念 8.1 使用者程式的處理...8-2 8.2 認識電腦系統的主記憶體...8-3 8.2.1 主記憶體的種類...8-4 8.2.2 記憶體的定址 (memory addressing)...8-6 8.2.3 快取記憶體 (Cache Memory)...8-6 8.2.4 記憶體與儲存媒體的概念... 8-7 8.2.5 記憶體的技術規格...8-8 8.3 電腦系統中記憶體的管理...8-9 8.3.1 基本觀念的建立...8-11 8.3.1.1 處理元位址空間與主記憶體之間的對應 8-13 8.3.1.2 編譯時期 (compile time) 8-15 8.3.1.3 連結時期 (link time) 8-16 8.3.1.4 載入時期 (load time) 8-16 8.3.1.5 動態記憶體的觀念 8-17 8.3.2 記憶體的配置... 8-18 8.3.3 動態位址重定位 (dynamic address relocation)... 8-20 8.3.4 交換作業 (swapping)... 8-21 Chapter 09 虛擬記憶體 (virtual memory) 9.1 虛擬記憶體 (Virtual memory) 簡介...9-3 9.1.1 實體記憶體的抽象化...9-5 9.1.2 虛擬記憶體技術...9-5 9.2 分段式的虛擬記憶體機制 (segmentation)...9-6 9.2.1 分段法的原理...9-7 0-8
9.2.2 分段法的實作...9-8 9.3 分頁的虛擬記憶體機制 (paging)...9-9 9.3.1 靜態分頁配置演算法 (static paging algorithm)... 9-10 9.3.1.1 取用政策 (fetch policy) 9-11 9.3.1.2 需求分頁法 (demand paging) 9-11 9.3.1.3 堆疊演算法 (stack algorithms) 9-13 9.3.2 動態分頁配置演算法 (dynamic paging algorithm)... 9-14 9.4 分段分頁的記憶體配置 (segmented/demand paged memory allocation)...9-17 PART 4 儲存裝置的管理 (storage management) Chapter 10 檔案系統 (file system) 10.1 檔案的用途...10-2 10.1.1 檔案的類型 (file types)... 10-3 10.1.2 檔案的分享 (file sharing)... 10-4 10.2 檔案的觀念...10-5 10.2.1 檔案的屬性... 10-5 10.2.2 檔案的操作... 10-6 10.2.3 檔案與形成的架構... 10-6 10.3 檔案的結構與存取方法 (access methods)...10-8 10.3.1 結構化檔案... 10-8 10.3.2 結構化序列檔案... 10-9 10.3.3 索引循序檔案... 10-10 10.3.4 倒轉檔案 (inverted file)... 10-10 10.4 檔案系統 (file system)... 10-11 10.4.1 檔案系統的作業方式...10-11 10.4.2 各種應用系統使用的檔案系統... 10-12 10.5 體驗檔案系統的實作...10-13 10.5.1 資料方塊的管理 (block management)... 10-14 10.6 檔案系統的保護機制...10-15 10.6.1 存取的類型... 10-15 10.6.2 存取控制 (access control)... 10-15 10.7 檔案系統的掛載 (mount)...10-16 10.7.1 掛載的程序... 10-16 10.7.2 掛載的實例... 10-17 Chapter 11 儲存裝置與其管理 11.1 儲存裝置...11-2 11.1.1 磁碟簡介...11-2 11.1.2 磁碟機的由來...11-4 0-9
作業系統 11.1.3 硬碟的組織...11-4 11.1.4 硬碟的檔案系統 (hard disk file system)...11-6 11.1.5 磁碟裝置的連接與運作...11-7 11.2 磁碟排程的原理與方法...11-8 11.2.1 SSTF 排程法...11-8 11.2.2 FCFS 排程法...11-9 11.2.3 SCAN 排程法...11-9 11.2.4 LOOK 排程法...11-10 11.2.5 排程方法的選擇...11-10 11.3 磁碟儲存空間的管理... 11-10 11.3.1 磁碟的格式化...11-11 11.3.2 開機 (boot) 磁區... 11-11 11.4 切換空間 (swap space) 的管理... 11-12 11.5 磁碟穩定性的管理...11-12 11.6 儲存媒體的分級... 11-15 11.7 作業系統對於可抽換式儲存媒體的處理... 11-17 Chapter 12 輸出入系統 12.1 電腦輸出入系統簡介...12-2 12.1.1 認識 I/O 作業... 12-2 12.1.2 傳輸的模式... 12-3 12.2 從硬體和軟體層面來看輸出入作業...12-4 12.2.1 硬體層面的作業... 12-5 12.2.1.1 輪詢 (Polling) 12-6 12.2.1.2. 中斷 (Interrupts) 12-7 12.2.1.3 直接記憶存取 (DMA) 12-14 12.2.2 軟體層面的作業... 12-16 12.3 作業系統層次的輸出入作業...12-18 12.3.1 I/O 的排程 (Scheduling)... 12-19 12.3.2 緩衝處理 (buffering)... 12-19 12.3.3 快取記憶體 (cache) 的運用... 12-20 12.3.4 儲位 (Spool) 的運用... 12-20 12.3.5 溝通的訊息與系統資料的處理... 12-20 12.4 I/O 請求與硬體作業之間的轉換...12-21 12.5 串流 (streams) 的概念...12-21 12.5.1 串流 (stream) 的基本觀念... 12-22 12.5.2 認識串流類別之間的關係... 12-22 12.5.3 java.io.inputstream 的使用... 12-23 12.5.4 java.io.outputstream 的使用... 12-25 12.5.5 與檔案相關的串流處理... 12-26 12.5.6 Java 對於串流 (stream) 的其他支援... 12-27 0-10
12.5.6.1 篩選串流 (filtered streams) 12-27 12.5.6.2 字元串流 (character streams) 12-31 PART 5 分散式系統 Chapter 13 分散式作業系統 13.1 分散式作業系統 (distributed operating system) 入門...13-2 13.1.1 分散式系統 (distributed system)... 13-3 13.1.2 分散式系統的優缺點... 13-3 13.1.3 分散式系統的硬體觀念... 13-4 13.1.4 分散式作業系統的類型... 13-5 13.1.5 分散式系統中通訊的方式... 13-6 13.1.6 分散式系統中的程式與處理器... 13-8 13.2 區域網路作業系統...13-9 13.2.1 Novell Netware 簡介...13-11 13.2.2 從 Windows NT/2000 到 Windows 2008 Server... 13-13 13.2.3 以 UNIX 為基礎的網路作業環境... 13-14 13.3 分散式架構下的資訊傳遞...13-15 13.3.1 傳輸層服務的基本作業... 13-16 13.3.2 通訊槽 (socket) 的基本觀念... 13-18 13.3.2.1 TCP/IP 中的主從模型 13-18 13.3.2.2 通訊軟體的設計與架構 13-20 13.3.2.3 協定的應用程式介面 13-20 13.3.3 遠端程序呼叫 (RPC,Remote Procedure Calls)... 13-21 13.4 Java 的遠端方法呼叫...13-22 13.4.1 Client 與 Server 程式設計... 13-22 13.4.2 Java RMI 架構的編譯與執行過程... 13-28 13.5 Java RMI 範例練習...13-30 13.6 從應用的觀點來了解訊息服務 (messaging service)...13-33 Chapter 14 分散式檔案系統 14.1 分散式檔案系統...14-2 14.1.1 命名的問題 (naming)... 14-2 14.1.2 遠端檔案的存取 (remote file access)... 14-3 14.1.3 遠端檔案服務 (remote file service)... 14-4 14.2 廣域網路檔案系統...14-5 14.2.1 廣域透明化... 14-6 14.2.1.1 通訊的模式 14-7 14.2.1.2 廣域應用的發展 14-7 14.2.2 分散式檔案系統的實例... 14-7 14.2.2.1 NFS 簡介 14-8 0-11
作業系統 14.2.2.2 AFS 簡介 14-9 14.2.2.3 DCE 簡介 14-11 Chapter 15 分散式系統的理論與實務 15.1 分散式運算系統的基本概念...15-2 15.1.1 分散式運算的涵義... 15-4 15.1.2 訊息傳遞的方法 (Message passing)... 15-5 15.1.3 分散式的記憶體管理... 15-6 15.2 事件的排序問題...15-7 15.2.1 之前發生的關係 (happened-before relation)... 15-7 15.2.2 決定事件發生先後的方法... 15-8 15.3 互斥 (mutual exclusion)...15-8 15.3.1 集中式的演算法... 15-8 15.3.2 完全分散式的演算法... 15-9 15.3.3 註記傳遞 (token-passing) 的演算法... 15-10 15.4 分散式的單元性 (atomicity)...15-10 15.5 分散式的並行控制 (concurrency control)... 15-11 15.5.1 時鐘的同步 (Clock synchronization)...15-11 15.5.2 互斥 (Mutual exclusion)... 15-12 15.5.3 交易異動模型 (Transaction model)... 15-12 15.6 分散式的死結處理 (deadlock handling)...15-13 15.7 分散式演算法的常見問題...15-13 15.8 以 CORBA 為例來認識分散式系統...15-14 15.8.1 CORBA 的基本觀念... 15-14 15.8.1.1 CORBA 的基本組成 15-15 15.8.1.2 CORBA 中物件的處理 15-16 15.8.2 簡單的 CORBA 實作... 15-17 15.8.2.1 定義 IDL 介面 15-17 15.8.2.2 CORBA 物件啟動的過程 15-21 15.8.3 認識 IDL(interface definition language)... 15-23 15.8.3.1 IDL 的資料型式 (data types) 15-23 15.8.3.2 模組 (modules) 與介面 (interfaces) 15-24 15.8.4 從 IIOP(Internet Inter-ORB Protocol) 看分散式應用的開發... 15-24 15.8.4.1 認識 RMI-IIOP 15-25 15.8.4.2 CORBA 與 RMI-IIOP 15-30 PART 6 系統的保護與安全管理 Chapter 16 系統的保護 16.1 系統保護 (Protection) 的基本觀念...16-2 0-12
16.1.1 保護的目的... 16-2 16.1.2 保護的原則... 16-3 16.2 系統保護的機制...16-3 16.2.1 保護政策的觀念... 16-4 16.2.2 保護領域 (protection domain) 的觀念... 16-4 16.2.3 與系統保護相關的實例... 16-6 16.3 存取控制 (access control)...16-7 16.3.1 資料存取控制簡介... 16-7 16.3.2 身份識別 (identification) 與驗證 (authentication)... 16-9 16.3.2.1 身份識別與鑑別的方法與技術 16-10 16.3.2.2 存取授權 (authorization) 16-13 16.3.3 存取控制的模型... 16-15 16.3.3.1 自決式的 (discretionary) 模型 16-16 16.3.3.2 強制式的 (mandatory) 模型 16-16 16.3.3.3 非自決式的 (nondiscretionary) 模型 16-16 16.3.4 存取控制的技術... 16-17 16.3.4.1 以規則為主的存取控制 (rule-based access control) 16-17 16.3.4.2 有限制的使用者介面 (constrained user interface) 16-17 16.3.4.3 存取控制矩陣 (access control matrix) 16-17 16.3.4.4 與內容相關的存取控制 (content-dependent access control) 16-18 16.3.4.5 與環境因素相關的存取控制 (context-dependent access control) 16-18 16.3.5 存取控制的實施... 16-18 16.3.5.1 存取控制的管理 16-18 16.3.5.2 存取控制的方法 16-19 16.3.5.3 存取控制的類型 16-21 16.3.5.4 責任機制 (Accountability) 16-22 16.3.5.5 存取控制的作業實務 16-23 16.4 用陣列來描述保護的模型...16-25 16.4.1 以存取權矩陣 (access matrix) 為例... 16-25 16.4.2 存取權矩陣的實作... 16-25 16.5 存取控制可能遭遇的威脅...16-27 16.5.1 字典攻擊 (dictionary attack)... 16-27 16.5.2 蠻力攻擊 (brute force attack)... 16-27 16.5.3 假造的登入畫面 (spoofing at logon)... 16-28 Chapter 17 系統的安全管理 17.1 電腦與網路安全...17-2 17.1.1 認識安全問題... 17-2 17.1.2 網路安全 (Network Security)... 17-3 17.1.3 網路使用的安全模型 (Network Access Security Model)... 17-4 17.1.4 安全原則... 17-5 17.2 惡意軟體 (malware)...17-6 17.2.1 惡意軟體的分類... 17-7 0-13
作業系統 17.2.2 惡意軟體的實例... 17-8 17.3 安全問題的解決辦法... 17-11 17.3.1 系統的監督 (monitoring)...17-11 17.3.2 入侵偵測 (intrusion detection)... 17-12 17.3.3 入侵預防系統 (intrusion prevention systems)... 17-12 17.4 從密碼學 (cryptography) 來看保護安全的方法...17-13 17.4.1 來自網路上的攻擊... 17-13 17.4.2 解開資訊大門的金鑰... 17-14 17.4.3 保持資料的完整性與身份識別 (Authentication)... 17-15 17.4.4 告訴我你是誰?... 17-16 17.4.5 RSA 加密法 (RSA encryption)... 17-16 17.5 防火牆 (firewall)...17-18 PART 7 特定系統介紹與案例探討 Chapter 18 特定系統的介紹 18.1 作業系統的元件與架構...18-2 18.1.1 單一組合的結構 (monolithic)... 18-5 18.1.2 模組化的設計 (modular design)... 18-6 18.1.3 擴充式核心 (extensible nucleus) 的設計... 18-6 18.1.4 層次化的架構... 18-8 18.2 硬體分散產生的影響...18-9 18.2.1 網路作業系統 (NOS, Network Operating System)... 18-9 18.2.2 分散式的作業系統 (DOS, Distributed Operating System)... 18-10 18.3 作業系統的設計...18-10 18.3.1 作業系統的介面...18-11 18.3.2 作業系統的製作... 18-12 18.3.3 作業系統發展的趨勢... 18-13 18.3.3.1 大位址空間的作業系統 (large address space operating systems) 18-13 18.3.3.2 網路化 18-13 18.3.3.3 平行與分散式系統 18-14 18.3.3.4 多媒體的需求 18-14 18.3.3.5 低功率電腦與嵌入式系統 (embedded systems) 18-14 18.4 特定系統...18-15 18.4.1 即時系統 (real-time systems)... 18-15 18.4.2 多媒體系統 (multimedia systems)... 18-16 Chapter 19 作業系統的實例與研究方向 19.1 Windows NT 簡介...19-2 19.1.1 NT 的歷史... 19-2 19.1.2 NT 設計的原則... 19-3 0-14
19.1.3 NT 的系統組成... 19-4 19.1.3.1 硬體抽象層 (HAL, Hardware abstraction layer) 19-4 19.1.3.2 NT 的核心 (kernel) 19-5 19.1.3.3 NT Executive 19-6 19.1.3.4 環境子系統 (Environment subsystem) 19-8 19.1.4 NT 的檔案系統 (file system)... 19-9 19.1.5 NT 網路的觀念... 19-9 19.1.6 NT 的程式設計介面... 19-10 19.2 UNIX 類型的作業系統... 19-11 19.2.1 傳統的 UNIX 系統...19-11 19.2.2 Linux 作業系統... 19-12 19.3 研發導向的作業系統...19-12 19.3.1 Choices 物件導向作業系統... 19-12 19.3.2 Mach 作業系統... 19-14 19.3.3 CHORUS 作業系統... 19-16 Appendixe A VMWare 的使用實務 A-1 虛擬機器 (virtual machines) 的概念...A-3 A-2 認識 VMWare...A-4 A-3 VMWare 的 Server 程式...A-9 A-4 VMWare 的設定...A-9 A-5 VMWare 的應用... A-10 Appendixe B 參考文獻 Appendixe C 索引 0-15