作業系統概論
Operating System Concepts
第二版 (2nd Edition)
賈蓉生 胡大源
林金池 編著
第一章
導讀 (Introduction)
• 1-1 簡介
• 1-2 本書主要內容
• 1-3 Java 系統程式
• 1-4 專有名詞索引
• 1-5 習作習題
• 1-6 光碟使用
1-1 簡介
• 作業系統 (Operating System) 是學習電腦的基礎課
目,內容含及電腦系統之結構、執行管理、儲存
管理、資料傳遞、網路應用、與保護安全等項目
。在未來學習電腦的大道上,這些項目提供了一
個輪廓,可令讀者胸有成竹地向前邁進。
1-2 本書主要內容
• 本書內容概分七篇,內容包括概論、行程管理、
儲存管理、輸入輸出、分散式系統、保護與安全
、與應用系統。
1-3 Java 系統程式
• 本書內容是人與機器間之介面 -- 作業系統
(Operating System) ,其中有許多觀念的描述
(Descriptions) 、執行方法的演算 (Algorithms) 等均
需以一個眾所認同的語言型態來表示,本書採用
具有物件導向意義 (Object-Oriented Approach) 之
Java 語言。有關 Java 系統之架構,讀者可參閱本
書第二十四章。
1-4 專有名詞索引
• 為了幫助讀者整理專有名詞,本書編輯中文專有
名詞索引約 1,000 個 ( 如附錄 D) ,以筆劃查閱;
英文專有名詞索引約 1,000 個 ( 如附錄 E) ,以字
母查閱。其中質量幾已涵蓋所有中英文專有名詞
,足夠儲備讀者未來閱讀原文書籍或期刊的能力
。
1-5 習作習題
• 作業系統是學習電腦的基礎課目,也是各重點考
試的必考科目,如升學考試、公職考試、甚或求
職考試等。本書將各章節重點內容整理成各類考
題,對準備考試有最全面性、深入性的幫助。有
關習題答案,讀者可向碁峄圖資公司或作者以 E-
Mail 直接索取。
1-6 光碟使用
• 本書隨書附光碟一片,內容有 Java 安裝程式
(System) 、範例應用程式 (Program) ;另於出版書
局附教學光碟一片,內容有教學投影 (Ppt) 、習題
解答 (Ex) 、 Java 安裝程式 (System) 、範例應用程
式 (Program) 。
第一篇
導論 (Over View)
• 作業系統 (Operating) 是一組系統程式 (System
Program) ,介於使用者 (User) 與電腦硬體
(Hardware) 之間,幫助使用者方便使用,監督電
腦有效執行。
• 作業系統內容複雜,範圍龐大,為了讓讀者在深
入研讀之前,有一粗略全盤概念的認識,本篇就
基礎觀念、電腦系統結構、與作業系統架構先作
介紹。
第二章
基礎概念 (Introduction)
• 2-1 簡介
• 2-2 大型電腦系統 (Mainframe Systems)
• 2-3 微型電腦系統 (Microcomputer Systems)
• 2-4 多處理器系統 (Multiprocessor System)
• 2-5 分散式系統 (Distributed System)
• 2-6 習題 (Exercises)
2-1 簡介
• 作業系統 (Operating System) 是一組系統程式,用
於支配 (manage) 電腦本機硬體及週邊設備等資源
之使用,並促進使用者方便使用 (conveniently) 、
有效使用 (efficiently) 。
圖 2-1
2-2 大型電腦系統 (Mainframe Systems)
• 通常大型電腦具有強大綜合性的功能 ( 如
IBM370) ,可同時執行單一工作 (Job) 、或多個工
作,因不同之需求,作業系統可類分為批次系統
(Batch Systems) 、即時系統 (Real-Time Systems) 、
多工系統 (Multi-programmed Systems) 、與分時系
統 (Time-Sharing Systems) 等。
2-3 微型電腦系統
(Microcomputer Systems)
• 微型電腦有:個人桌上型電腦系統 (PC 或稱
Desktop) 、筆記型電腦系統 (Notebook 或稱
Laptop) 、手持式電腦系統 (Handheld) 等。
• PC 微型電腦快速發展於 1970s 年代,與大型電腦
(Mainframe) 比較,微型電腦硬體資源較少但便宜
;使用者單純,通常是由一個使用者霸佔使用。
因此其作業系統之設計自與大型電腦不同。
2-4 多處理器系統
(Multiprocessor System)
• 一台電腦一個 CPU 處理器 (Central Processing
Unit) ,既使是新型電腦亦多是如此配置,擁有一
個主 CPU 處理器。一台電腦若擁有多個處理器,
其作業系統將對應於多處理器系統 (Multiprocessor
System) ,
• 多處理器系統可類分為對稱多處理器系統
(Symmetric Multiprocessing) 與非對稱多處理器
系統 (Asymmetric Multiprocessing) 。
圖 2-4-1
圖 2-4-2
2-5 分散式系統
(Distributed System)
• 個人電腦有其獨立的處理器與硬體裝置資源,應
用網路連接,將散置各處的電腦藉由分散式作業
系統合作執行指定的工作,如此安排是謂 “分散式
系統 (Distributed System) 。
圖 2-5-1
圖 2-5-2
2-6 習題 (Exercises)
• 1 、何謂作業系統?
• 2 、一套完整之電腦系統可概分那四組區塊?
• 3 、何謂批次系統 (Batch Systems) ?
• 4 、何謂即時系統 (Real-Time Systems) ?
• 5 、何謂多工系統 (Multiprogrammed Systems) ?
• 6 、何謂分時系統 (Time-Sharing Systems) ?
• 7 、微型電腦有那些?
• 8 、多處理器的優點為何?
• 9 、何謂分散式系統 (Distributed System) 。
• 10 、網路應用範圍可分為幾類?
• 11 、網路之連接技術可分為幾類?
• 12 、分散式系統在功能分配上可類分為幾類?
第三章電腦系統結構
(Computer SystemStructure)
• 3-1 簡介
• 3-2 起始操作 (Start Running)
• 3-3 中斷 (Interrupt)
• 3-4 輸入輸出架構 (I/O Structure)
• 3-5 儲存架構 (Storage Structure)
• 3-6 硬體保護 (Hardware Protection)
• 3-6-1 輸入輸出保護 (I/O Protection)
• 3-6-2 記憶體保護 (Memory Protection)
• 3-6-3 中央處理器保護 (CPU Protection)
• 3-7 網路架構 (Network Structure)
• 3-7-1 區域網域 (Local-Area Network)
• 3-7-2 廣域網域 (Wide-Area Network)
• 3-8 習題 (Exercises)
• 3-9 範例系統程式 (Programming)
• 3-9-1 中斷例外處理 ( 模擬 3-3 節 )
3-1 簡介
• 在我們深入探討電腦作業系統之前,有些關於電
腦的基本系統結構須先有一概念性的了解,本章
將粗略討論電腦系統結構,內容如起動
(StartUp) 、輸入 / 輸出 (I/O) 、儲存 (Storage) 等,
及計算機結構 (Computer Architecture) 與作業系統
(Operating System) 間之互動架構。
3-2 起始操作 (Start Running)
• 當開啟電腦的同時,即啟動 “初始程式 (Initial
Program 或稱 Bootstrap Program” ) ,為求快捷,
此程式特置於唯讀記憶體中 (ROM Ready-Only
Memory) ,初始啟動 CPU 、裝置控制器 (Device
Controllers) 、傳導器 (Adapters) 、與記憶體
(Memory) 。初始程式將作業系統 (Operating
System) 載入記憶體作核心運行 (Kernel) 。
圖 3-2
圖 3-3
3-4 輸入輸出架構 (I/O Structure)
• 當某裝置要求執行資料輸入輸出 (I/O) 時, CPU
載入該裝置控制器內之特殊功能暫存器,由作業
系統導引中斷 (Interrupt) 執行資料的輸入輸出。
I/O 中斷可類分為同步 I/O(Synchronous) 如圖 3-4-1 、與非同
步 I/O(Asynchronous) 如圖 3-4-2
圖 3-4-1 圖 3-4-2
圖 3-4-3
3-5 儲存架構 (Storage Structure)
• CPU 是電腦的執行中樞,直接對主記憶體 (Main
Memory) 隨機存取 (random access) 資料,典型的
指令執行週期 (Instruction Execution Cycle) 如范紐
曼 (Von Neumann) 所提出之執行架構 ( 如圖 3-5-1)
圖 3-5-1
圖 3-5-2
3-6 硬體保護
(Hardware Protection)
• 一台電腦硬體受傷害的原因來自電腦本身的機會
不大,多是來自人為程式的錯誤,受傷害的硬體
亦多是發生於 I/O 系統、記憶體、或 CPU 。因此
所謂電腦硬體保護 Hardware Protection) 就是摒除
人為程式的錯誤,而保護的對象為: (1) I/O 系統
(I/O) 、 (2) 記憶體 (Memory) 、 (3) 中央處理器
(CPU) 。
3-6-1 輸入輸出保護 (I/O Protection)
• 使用者 (Users) 可利用輸入輸出的機會,傳遞非法
指令 (illegal Instructions) 、或資料 (Data) ,非法進
入系統程式 (Operating System) 領域執行破壞行為
,為了避免如此傷害行為,所有的輸入輸出指令
(I/O Instructions) 均定義納入系統模式 (System
Mode) 。
圖 3-6-1
3-6-2 記憶體保護 (Memory Protection)
• 當使用者之工作程序進入記憶體後,作業系統以
兩個暫存器鎖定記憶體之使用範圍,基底暫存器
(Base Register) 存置起始地址 (Address) ;限制暫
存器 (Limit Register) 存置範圍距離,如圖 3-6-2
圖 3-6-2
3-6-3 中央處理器保護 (CPU Protection)
• CPU 的保護機制是在設定 CPU 之使用時間,作業
系統對每一進入 CPU 之程式作使用時間設定,超
過該設定時間即判定為非法無限迴圈,從 CPU 踢
出該程式,執行 CPU 保護。
3-7 網路架構 (Network Structure)
• 多台電腦以網路連通,相互支援程序執行與檔案
存取,是謂 “網路架構 (Network Structure) 。常見
的網路架構有:小範圍區域網域 (LAN Local-Area
Network) 、與大範圍廣域網域 (WAN Wide-Area
Network) 。
3-8 習題 (Exercises)
• 1 、何謂核心運行 (Kernel) ?
• 2 、何謂事件中斷 (Event Interrupt) ?
• 3 、中斷表 (Table of Interrupt) 與中斷程序之關係為何?
• 4 、何謂同步 I/O 中斷?
• 5 、何謂非同步 I/O 中斷?
• 6 、記憶體直接存取方法 (DMA) 的使用條件為何?
• 7 、主記憶體與 CPU 的關係為何?
• 8 、主記憶體有那些無法克服的困難?
• 9 、何謂快取記憶體 (Cache) ?
• 10 、硬體傷害常發生在那些裝置上?
• 11 、何謂雙模操作法?
• 12 、如何作 I/O 保護?
• 13 、如何作記憶體保護?
• 14 、如何作 CPU 保護?
• 15 、何謂區域網域 (LAN) ?
• 16 、何謂廣域網域 (WAN) ?
第四章 作業系統架構
(Operating System Structure)
• 4-1 簡介
• 4-2 系統組成要件 (System Components)
• 4-2-1 行程管理 (Process Management)
• 4-2-2 主記憶體管理 (Main Memory Management)
• 4-2-3 檔案管理 (File Management)
• 4-2-4 輸入輸出系統管理 (I/O System Management)
• 4-2-5 輔助記憶體管理 (Secondary Storage Management)
• 4-2-6 網路連通管理 (Networking Management)
• 4-2-7 保護系統管理 (Protection Management)
• 4-2-8 介面指令管理 (Shell Command Interpreter Management)
• 4-3 作業系統服務 (Operating System Services)
• 4-4 系統呼叫 (System Calls)
• 4-5 系統程式 (System Programs)
• 4-6 應用程式 (Application Programs)
• 4-7 系統架構 (System Structure)
• 4-7-1 簡易架構 (Simple Structure)
• 4-7-2 階層架構 (Layered Approach)
• 4-7-3 微核心 (Microkernel)
• 4-7-4 模組架構 (Modules)
• 4-8 虛擬機器 (Virtual Machines)
• 4-9 系統設計與編寫 (System Design and Implementation)
• 4-10 檢選系統 (System Generation)
• 4-11 開機系統 (System Boot)
• 4-12 習題 (Exercises)
4-1 簡介
• 作業系統是一個非常龐大且複雜的程式,如果沒有一系列
井然有序的描述,將不易了解,本章就其組成要件、服務
、程式架構、系統程式、應用程式、設計規範、開機系統
等,作輪廓描述,讓讀者先有清晰概念,本書將於爾後各
章節詳細敘述。
4-2 系統組成要件 (System Components)
• 作業系統 (Operating System) 即龐大又複雜,本節就其功
能性 ( 如圖 4-2-1) 將系統類分成程序管理 (Process
Management) 、主記憶體管理 (Main Memory
Management) 、檔案管理 (File Management) 、輸入輸出管
理 (I/O Management) 、輔助記憶體 (Secondary Storage
Management) 、網路連通管理 (Networking
Management) 、保護管理 (Protection Management) 、指令
解釋管理 (Command Interpreter Management) ,並作概念
描述。
圖 4-2-1
4-3 作業系統服務
(Operating System Services)
• 電腦能有效執行,有賴於作業系統的有效運行,作業系統
不僅要提供使用者最佳的服務 (Services) ,也要對作業系
統自己提供最佳的可信度。
4-4 系統呼叫 (System Calls)
• 當行程 (Process) 衝撞系統時,行程要求系統呼應執行是
謂 “系統呼叫 (System Call)” 。除了低階語言 ( 如組合語言
Assembly Language) 與少數高階語言之某些狀況外,為了
保護系統安全,一般高階語言均不被允許直接 (Directly)
作系統呼叫。
圖 4-4-1
圖 4-4-2
圖 4-4-3
4-5 系統程式 (System Programs)
• 回憶圖 2-1 ,最底層是電腦硬體 (Hardware) ,其次是作業
系統 (Operating System) ,再其次即是系統程式 (System
Programs) 與應用程式 (Application Programs) 。系統程式
(System Programs) 提供使用者程式 (User’s Program) 一個
良好的執行環境,亦即使用者與系統程式間的介面
(Interface) ,可藉系統呼叫 (System Call) 或其他方式執行
4-6 應用程式 (Application Programs)
• 如圖 2-1 ,與系統程式在相同地位的是 “應用程式
(Application Program 或 System Utilities) ,用以支援解決
一般之應用問題。這些程式包括網路瀏覽器 (Web
Browsers) 、文字處理器 (Word Processors) 、試算表
(Spreadsheets) 、資料庫 (Database Systems) 、繪圖
(Plotters) 、統計分析 (Statistical Analysis) 、遊戲 (Games)
等。
4-7 系統架構 (System Structure)
• 隨著電腦應用需求之增加,作業系統已變成龐大且複雜,
其結構概念也由整體架構 (Monolithic System) 改向為小單
位分割架構 (Partition of Small Components System) 。整體
架構之缺點為反應遲緩,任何錯誤均將禍及整體系統甚至
當機,優點為設計簡易、管理方便;小單位分割架構之缺
點為設計複雜,優點為反應靈巧,區隔錯誤使其不影響其
他部份。
圖 4-7-1
圖 4-7-2
圖 4-7-3
圖 4-7-4
圖 4-7-5
4-8 虛擬機器 (Virtual Machines)
• 一般作業系統可類分為 3 個主要區塊 ( 如圖 4-8-
1) ,包括行程 (Processes) 、核心 (Kernel) 、與硬
體 (Hardware) 三部份。
圖 4-8-1
圖 4-8-2
圖 4-8-3
4-9 系統設計與編寫
(System Design and Implementation)
• 規劃設計藍圖之前,須先考量為何種電腦硬體設計?設計
何種系統?採用批次執行 (Batch) ?分時執行 (Time
Shared) ?一個使用者 (Single User) ?多個使用者
(Multiusers) ?即時系統 (Real Time) ?分散式據點
(Distributed) ?產生方式 (Generation) ?
• 關鍵機制 (Mechanisms) 用於處理如何作為 (How) ?,執
行計劃 (Policies) 用於處理做些什麼 (What) ?系統通常以
低階語言 -- 組合語言 (Assembly Language)-- 編寫,也有小
部份以高階語言 --C 、 C++ -- 編寫,新型作業系統以 Java
編寫。
4-10 檢選系統
(System Generation)
• 一般系統程式之設計考量應是: (1) 適用於同型電腦
(Class of Machine) , (2) 適用於不同的場所 (Varity of
Sits) , (3) 適用於不同的周邊環境 (Varity of Peripheral
Configurations) 。
• 同類型電腦因是相同機件,可作統一設計,但為了滿足不
同的場所與周邊環境,則須先考量納入所有可能發生的狀
況,於臨場實地使用時,再篩選有用的內容納入當時的作
業系統,如是設計的作業系統稱為 “檢選系統 (SYSGEN
System Generation)” 。
4-11 開機系統 (System Boot)
• 當電腦開啟電源 (Power on) 或重新啟動 (Reset)
時,立即將指令暫存器 (IR Instruction Register) 載
入,同時執行開機程式 (Bootstrap Program) 。開
機程式儲存於 ROM 內,不須作任何初始動作
(Initialization) ,開機就執行,亦不受任何病毒的
入侵。
4-12 習題 (Exercises)
1 、作業系統 (Operating System) 有那些要件?
2 、作業系統應有那些行程管理內容?
3 、在安排記憶體上、作業系統應有那些行程管理內容?
4 、作業系統應有那些檔案管理內容?
5 、作業系統應有那些 I/O 管理內容?
6 、作業系統應有那些輔助記憶體管理內容?
7 、作業系統應有那些網路連通管理內容?
8 、作業系統應有那些保護管理內容?
9 、作業系統應有那些介面命令管理內容?
10 、作業系統之服務要旨為何?
11 、系統呼叫可藉參數 (Parameter) 傳遞訊息之方法有那些
?
12 、系統呼叫可類分為那幾類?
13 、系統程式可類分那幾類?
14 、作業系統之架構可類分那機類?
第二篇
行程管理 (Process Management)
第五章 行程 (Processes)
• 5-1 簡介
• 5-2 行程之觀念 (Process Concept)
• 5-2-1 行程狀態 (Process State)
• 5-2-2 行程控制區段 (Process Control Block)
• 5-2-3 執行緒 (Threads)
• 5-3 排程 (Process Scheduling)
• 5-3-1 排程佇列 (Scheduling Queues)
• 5-3-2 排程器 (Schedulers)
• 5-3-3 內文切換 (Context Switch)
• 5-4 行程操作 (Operations on Processes)
• 5-4-1 行程產生 (Process Creation)
• 5-4-2 行程結束 (Process Termination)
• 5-5 合作行程 (Cooperating Processes)
• 5-6 行程通訊 (Interprocess Communication)
• 5-6-1 訊息傳遞 (Message Passing System)
• 5-6-2 同步操作 (Synchronization)
• 5-6-3 緩衝 (Buffering)
• 5-7 網路連通 (Server/Client Network)
• 5-8 習題 (Exercises)
• 5-9 範例系統程式
• 5-9-1 父行程與子行程之繼承關係 ( 模擬 5-4-1 節 )
• 5-9-2 合作行程 ( 模擬 5-5 節 )
• 5-9-3 網路連通 ( 模擬 5-7 節 )
5-1 簡介
• 程式 (Program) 是程式碼之檔案 (File) ,行程
(Process) 是正在執行的程式 (Program in
Execution) 。早期電腦當執行程式時,整個系統資
源均用於支援該一個程式;今日電腦系統可同時
支援多個程式之執行。
• 行程是工作的單元 (Unit of Work) ,一個程式有數
個行程。系統內有多個行程競爭進入 CPU 作執行
, CPU 切換 (Switch) 於各行程之間,盡求公平執
行各行程。
5-2 行程之觀念 (Process Concept)
• 如前述,行程 (Process) 是正在執行的程式
(Program in Execution) ,一個程式可能有數個行程
,有些書將行程 (Process) 亦稱為工作 (Job) ,本
書為了爾後的清晰解述,一般應用名稱使用 “行程
(Process)” ;特定意義應用名稱使用 “工作
(Job)” ,如工作排程 (Job Scheduling) 等。
圖 5-2-1
5-3 排程 (Process Scheduling)
• CPU 是系統的執行中樞,有其自身的執行能力限
制 (limitations) ,不會因外在的強求而改變,亦無
法完全配合周遭瞬息萬變的條件環境
(Environment) 。以行程 (Process) 為例,如有多個
行程競爭進入 CPU ,因 CPU 一個時間只能執行一
個工作,無法同時將這些行程同時執行,但可退
而求其次,以其能力範圍內,輪流切換 (switch)
執行各個行程,切換 (switch) 的流程如圖 5-3-1 。
圖 5-3-1
圖 5-3-2
圖 5-3-3
圖 5-3-4
5-4 行程操作 (Operations on Processes)
• 行程 (Processes) 不定期隨機 (dynamically) 產生,
亦不定期隨機終結消失,為了可以處理如此不定
期的多個行程,多數作業系統 (Operating System)
均設計為可操作行程作並行執行 (execute
concurrently) 。
5-5 合作行程 (Cooperating Processes)
• 一個行程如果不影響其他行程、不被其他行程影
響、亦不與其他行程共享資料 (Data) 或資源
(Resource) ,如是行程是謂 “獨立行程
(Independent Process)” ;否則即謂 “合作行程
(Cooperating Process) 。
5-6 行程通訊
(Interprocess Communication)
• 兩個行程 (Processes) 互通訊息是謂 “行程通訊
(IPC Interprocess Communication)” ,這兩個行程可
能演譯自同一程式 (Program) ,亦可能演譯自不同
的多個程式 (Programs) 。
圖 5-6-1
圖 5-6-2
5-7 網路連通 (Server/Client Network)
• 今日電腦網路蓬勃發展,網路連通已是作業系統
的基本功能之一,網路連通 ( 如圖 5-7) 之要件為
網址 (IP) 、埠 (Port) 、與平台 (Socket) 。請參考本
章 5-9 節,實作一個網路連通範例,以 Java 作為
執行語言,設定 Server , Client 兩個網路行程。
圖 5-7
5-8 習題 (Exercises)
• 1 、何謂行程 (Process) ?
• 2 、行程有那 5 個狀態 (States) ?
• 3 、何謂 “行程控制區段 (PCB Process Control Block)” ?
• 4 、行程控制區段 (PCB Process Control Block) 內有那些資
料?
• 5 、何謂 “排程佇列 (Scheduling Queue)” ?
• 6 、何謂 “排程器 (Scheduler)” ?
• 7 、除了因完成任務而結束外,行程尚有那些原因被迫結
束?
• 8 、行程合作的理由有那些?
• 9 、直接通訊 (Direct Communication) 之優缺點為何?
• 10 、間接通訊 (Indirect Communication) 之優缺點為何?
• 11 、何謂同步操作 (Synchronization) ?
• 12 、何謂非同步操作 (Asynchronization) ?
• 13 、網路連通要件有那些?
第六章
執行緒 (Threads)
• 6-1 簡介
• 6-2 執行緒定義 (Overview)
• 6-3 多執行緒模型 (Multithreading Models)
• 6-4 執行緒操作 (Operations of Threads)
• 6-4-1 執行緒之終止 (Cancellation)
• 6-4-2 信號管理 (Signal Handling)
• 6-4-3 執行緒池 (Thread Pools)
• 6-5 執行緒與 CPU(Threads and CPU)
• 6-6 習題 (Exercises)
• 6-7 範例系統程式 (Programming)
• 6-7-1 執行緒與 CPU( 模擬 6-5 節 )
6-1 簡介
• 於前章我們針對行程 (Processes) 已作概念性的討論,本
章我們將討論更為靈活的執行單元 “執行緒 (Threads)” 。
行程 (Process) 是工作單元 (Unit of work) ,系統內有多個
行程同時存在,但 CPU 一個時間只能處理一個行程,因此
多數的行程都在等待狀態 (Waiting State) ,競爭進入 CPU
被執行,如此形式的行程又稱為 “執行緒 (Thread)” 。早期
系統一個行程即是一個執行緒,新型電腦一個行程可視其
多元性之工作內容,允許依不同工作內容分割出多個執行
緒,利用 CPU 分時執行方法 (Time Sharing) ,在一個時間
中可執行多個任務 (Tasks) 。
6-2 執行緒定義 (Overview)
• 執行緒 (Thread) 是 CPU 之基本執行單元 (Basic
Unit) ,如前述,早期系統一個行程即是一個執行
緒,新型電腦系統一個行程可視其多元性之工作
內容,允許依不同工作內容分割出多個執行緒,
利用 CPU 分時執行方法 (Time Sharing) ,在一個時
間中執行多個任務 (Tasks) 。
• 如圖 6-2-1 ,每個執行緒 (Thread) 擁有各自的識
別碼 (ID) 、指令計數器 (Program Counter) 、暫存
器組 (Register Set) 、與一個堆疊 (Stack) 。如圖 6-
2-2 ,同屬一個行程 (Process) 的各執行緒可共享
程式碼 (Code) 、資料 (Data) 、檔案 (Files) 等系統
資源。
圖 6-2-1
圖 6-2-2
6-3 多執行緒模型 (Multithreading Models)
• 於前節已描述使用者執行緒 (User Threads) 與核心
執行緒 (Kernel Threads) ,使用者執行緒由核心支
援 (support) ,但由使用者管理 (managed) ;核心
執行緒由核心支援,亦由核心管理。本節將就使
用者執行緒、與核心執行緒兩者之對應關係
(Mapping Relations) 作更進一步的探討。
圖 6-3-1
圖 6-3-2
圖 6-3-3
6-4 執行緒操作 (Operations of Threads)
• 經過前數章節對執行緒的描述,讀者對執行緒已
有基礎應用上的概念,本節將再就執行緒之其他
執行事項作進一步的分析。
6-5 執行緒與 CPU(Threads and CPU)
• Java 系統內建 Thread 類別,其功能是將 CPU 分割
成多個工作時段,適當地提供給條件最優的工作
片斷作執行。使用者可藉: (1) 以新類別繼承
Thread 類別,再由該新繼承類別以 new 產生執行
物件, (2) 或以 “ new” 由類別 Thread 直接產生新
執行物件,搶 CPU 時段給予條件最優的工作片斷
先作執行。
6-6 習題 (Exercises)
1 、執行緒 (Thread) 擁有那些基本設定?
2 、同屬一個行程 (Process) 的各執行緒可共享那些
資源?
3 、一個多元性工作的行程 (Process) ,可依其不同
工作內容分割出多個執行緒 (Threads) ,其優點有
為何?
4 、使用者執行緒 (User Threads) 與核心執行緒
(Kernel Threads) 有那些關係模型?
5 、當標的執行緒執行 “終止” 時,視系統的不同,
有那兩種情況伴隨發生?
6 、設置執行緒池的理由為何?
第七章
CPU 排程 (Scheduling)
• 7-1 簡介
• 7-2 排程概念 (Scheduling Concepts)
• 7-2-1 CPU 與 I/O 週期 (CPU and I/O Cycle)
• 7-2-2 CPU 排程器 (Scheduler)
• 7-2-3 搶先排程 (Concept of Preemptive Scheduling) 概念
• 7-2-4 分配器 (Dispatcher)
• 7-3 排程評量要件 (Scheduling Criteria)
• 7-4 排程演算法 (Scheduling Algorithms)
• 7-4-1 先到先執行 (FCFS First-Come-First-Served Scheduling)
• 7-4-2 最短工作優先 (SJF Shortest-Job-First Scheduling)
• 7-4-3 搶先排程 ( Preemptive Scheduling)
• 7-4-4 優先權排程 ( Priority Scheduling)
• 7-4-5 循環分時 (RR Round-Robin) 排程
• 7-4-6 多層佇列 (Multilevel Queues) 排程
• 7-4-7 多層回授佇列 (Multilevel Feedback-Queue) 排程
• 7-4-8 多處理器 (Multi-Processor) 排程
• 7-5 排程評量 (Algorithm Evaluation)
• 7-6 習題 (Exercises)
• 7-7 範例系統程式 (Programming)
• 7-7-1 優先權排程 ( 模擬 7-4-4 節 )
7-1 簡介
• CPU 排程 (Scheduling) 是多工作業系統
(Multiprogramming Operating System) 的基石之一
,當多個行程 (Processes) 或執行緒 (Threads) 在
就緒佇列 (Ready Queues) 中等待進入 CPU 時,系
統如何選擇適當的行程優先進入 CPU 即謂 “ CPU
排程”。
• 本章除了對 CPU 排程作概念描述之外,另列出數
種排程演算法 (Algorithms) 及應用分析。
7-2 排程概念 (Scheduling Concepts)
• CPU 一個時間只能允許一個行程 ( 例如 P0) 進入
執行,當行程 P0 執行完畢後,再輪由其他行程 Pi
依序進入 CPU 執行。此其間 P0 可能去執行 I/O ,
而 CPU 也因等待 P0 而怠惰 (Idle) ,如此珍貴的
CPU 時間用於等待 (Waiting) 實為可惜。
7-3 排程評量要件 (Scheduling Criteria)
• 如 7-2-2 節所述,至今已發展出許多排程演算法,
至於要選用那一種則無一定的定見,要配合當時
的電腦系統與執行環境、與程式本身之條件而定
。本節介紹 5 類評量要件,以其計量的數據評量
出最佳選擇。
7-4 排程演算法 (Scheduling Algorithms)
• 當行程置入就緒佇列 (Ready Queue) 後,隨即等
待系統依排程演算法選擇進入 CPU ,行程從進入
CPU 開始至離開 CPU 為止所需的時間是謂 “ CPU
時間 (Burst Time)” ,不同的演算法有其不同的執
行意義,本節將探討目前常用的各類排程演算法
。
7-4-1 先到先執行
(FCFS First-Come-First-Served Scheduling)
• 將就緒佇列 (Ready Queue) 內等待的各行程,依
先到先執行的法則排序進入 CPU 執行,如是法則
是謂 “先到先執行排程 (FCFS)” 。
圖 7-4-1-1
7-4-2 最短工作優先
(SJF Shortest-Job-First Scheduling)
• 於前節,我們已觀察到,於就緒佇列 (Ready
Queue) 內等待的各行程,將 CPU 時間較小的行程
先選入 CPU 執行,可節省大量的平均等待時間,
如是法則是謂 “最短工作優先排程 (SJF )” 。
圖 7-4-2-1
7-4-3 搶先排程 ( Preemptive Scheduling)
• 如 7-2-3 節所述,同時考量時間 (Time) 與權值
(Weight) 的排程是謂 “搶先排程 (Preemptive
Scheduling)” 。例如行程 P1 的權值高於 P2 的權值
,理應先選 P1 後選 P2 ,但於決選時刻, P1 尚未
抵達,只有 P2 出現,此時系統先選擇權值次高的
P2 ,若 P1 隨後到達,系統再以當時的狀況重新
考量最佳之選擇,其優點是不浪費等待的時間。
圖 7-4-3
7-4-4 優先權排程 ( Priority Scheduling)
• 因為工作重要性的需要,可付予行程適當的優先
權值 (Priority) ,優先等級較高的行程,優先被選
擇進入 CPU 。
圖 7-4-4
7-4-5 循環分時 (RR Round-Robin) 排程
• 設有行程 P1 、 P2 、 P3 依 FCFS 排序,將 CPU 時
間切割成數個時間分量 (Time Quantum) q ,行程
P1 進入 CPU 在時間分量 q 範圍內作執行,如果未
完成執行,跳出 CPU ,讓 P2 進入 CPU 。 P1 等待
下一循環再進入 CPU 繼續執行,直至各行程執行
完畢為止。如是作為是謂 “循環分時排程 (RR)” 。
圖 7-4-5
7-4-6 多層佇列 (Multilevel Queues) 排程
• 在眾多行程中,為了管理方便,可將功能性相同
的各行程納入同一群組 (Group) ,同一群組內,行
程與行程間執行適當之排程 (Suitable
Scheduling) ,群組與群組間亦執行適當之排程。
如此雙線排程是謂 “多層佇列排程 (Multilevel
Queues Scheduling)” 如圖 7-4-6 。
圖 7-4-6
7-4-7 多層回授佇列排程
(Multilevel Feedback-Queue)
• 於前節,我們已認識多層佇列排程的缺點是:如
果某群組的優先等級過低,則該群組的所有行程
就可能失去進入 CPU 的機會。
• 為了改善上述缺點,我們設計多層回授佇列排程
(Multilevel Feedback-Queue Scheduling) 如圖 7-4-
7 ,如果某群組之 CPU 時間超過規定之時間分量
(Quantum Time) ,系統即強迫將 CPU 使用權交付
予較低層之群組使用,如此每一層群組都有進入
CPU 的機會。
圖 7-4-7
7-4-8 多處理器 (Multi-Processor) 排程
• 到目前為止,我們探討的排程模型均為一個
CPU ,如果系統擁有多個 CPU ,執行效率將大為
提高且精彩,如此環境執行的排程是謂 “多處理器
排程 (Multi-Processor Scheduling) 。
圖 7-4-8-1
圖 7-4-8-2
圖 7-4-8-4
7-5 排程評量 (Algorithm Evaluation)
• 於前數節中,我們已探討過多種排程方法,每一
種方法都有其獨特的優點與缺點,我們也很難評
量出那一種方法為最佳法則。除了排程方法外,
當時的執行環境亦是重要影響因素之一。事實上
,觀察實際執行的現象才是較為可靠的評量。
7-6 習題 (Exercises)
1 、何謂 CPU 排程 (Scheduling) ?
2 、何謂 I/O 型行程 (I/O-Bound Process) ?
3 、何謂 CPU 型行程 (CPU-Bound Process) ?
4 、何謂搶先排程 (Preemptive Scheduling) ?
5 、系統需要考量排程的關鍵時機為何?
6 、排程評量要件 (Scheduling Criteria) 有那些?
7 、設有行程與其 CPU 時間如下,試以 FCFS 計算其平均等待
時間?
8 、設有行程與其 CPU 時間如下,試以 SJF 計算其平均等待
時間?
9 、設有行程與其 CPU 時間如下,試以 Preemptive 與 SJF 計
算其平均等待時間?
10 、設有行程與其 CPU 時間如下,試以優先權排程計算其
平均等待時間?
11 、著手執行評量,可類分那 3 個執行階層?
第八章
行程與同步並行 (Process Synchronization)
• 8-1 簡介
• 8-2 並行條件 (Concurrency Conditions)
• 8-3 臨界區 (Critical Section)
• 8-4 兩任務演算法 (Two-Tasks Algorithms)
• 8-4-1 演算法 1(Algorithm1)
• 8-4-2 演算法 2(Algorithm2)
• 8-4-3 演算法 3(Algorithm3)
• 8-5 硬體並行指令 (Synchronization Hardware)
• 8-5-1 方法程序 getAndset( )
• 8-5-2 方法程序 swap( )
• 8-6 信號 (Semaphores)
• 8-6-1 信號 (Semaphores) 與臨界區 (Critical Section)
• 8-6-2 信號 (Semaphores) 與並行序列 (Synchronization)
• 8-7 應用 (Application)
• 8-8 習題 (Exercises)
• 8-9 範例系統程式 (Programming)
• 8-9-1 臨界區演算法 1( 模擬 8-4-1 節 )
• 8-9-2 臨界區演算法 2( 模擬 8-4-2 節 )
• 8-9-3 臨界區演算法 3( 模擬 8-4-3 節 )
• 8-9-4 臨界區硬體指令 getAndset( ) ( 模擬 8-5-1 節 )
• 8-9-5 臨界區硬體指令 getAndset( ) ( 模擬 8-5-2 節 )
• 8-9-6 號碼機與 synchronized 類別 ( 模擬 8-7 節 )
8-1 簡介
• 我們曾於 5-5 節述及合作行程 (Cooperating
Process) ,於執行時,行程之間可相互影響,分享
記憶體 (Memory) ,分享資料 (Data) ,但往往因管
理不周嚴,使得資料失去一致性 (Inconsistency) 。
例如有一個銀行帳戶,哥哥到銀行臨櫃存錢,同
一時間,弟弟以提款卡到提款機取錢,如此同步
並行,如果管理不當,資料失去一致性,帳戶餘
額將會混亂錯誤。
• 因此、在多個行程同步並行時,如何保持資料的
一致性 (Consistency) ,是行程作業的一個重要環
節,本章將深入探討之。
8-2 並行條件 (Concurrency Conditions)
• 如前述,在多個行程同步並行時,如何保持資料的一致性
(Consistency) ,是行程並行作業的重要一環,設有程式片斷:
• S1 : a ← 5
• S2 : b ← a+1
• S3 : c ← a+2
• S4 : d ← b+c
圖 8-2-1
• S1 : a ← 5
• S2 : b ← a+1
• S3 : c ← a+2
• S4 : a ← b
• S5 : a ← c
• S6 : print a
圖 8-2-2
8-3 臨界區 (Critical Section)
• 每一執行緒 (Thread) 之寫入 / 讀取 (W/R) 功能碼
(Code) ,均可視為該執行緒之臨界區 (CS Critical
Section) 。於臨界區,執行緒可對共享資源
(Shared Resource) 存取 (Access) 資料,如共用記
憶體或變數 (Common Variables) 、檔案 (Files) 等
。
8-4 兩任務演算法 (Two-Tasks Algorithms)
• 於系統中,有多個執行緒 (T1 、 T2 、…、 Tn) 等
待執行,為了容易解說,將此 n 個執行緒類分為
2 種角色: (1) 使用者關心的執行緒 Ti ; (2) 其他
執行緒 Tj 。例如使用者關心 T3 ,則 Ti = {T3} 、 Tj
= { T1 、 T2 、 T4 、…、 Tn} 。
圖 8-4
8-4-1 演算法 1(Algorithm1)
圖 8-4-1
8-4-2 演算法 2(Algorithm2)
圖 8-4-2-1
8-4-3 演算法 3(Algorithm3)
圖 8-4-3
8-5 硬體並行指令
(Synchronization Hardware)
• 在形式上或非形式上,可直接控制記憶體的指令
是謂 “硬體控制指令 (Hardware Instructions)” ,本
節關心的是將記憶體鎖住的指令 (lock) ,如果能
將記憶體鎖住,防止不必要的執行緒作資料存取
, 8-4 節所談的各演算法均可輕易迎刃而解。
8-5-1 方法程序 getAndset( )
圖 8-5-1
8-5-2 方法程序 swap( )
圖 8-5-2
8-6 信號 (Semaphores)
• 於執行緒同步並行設計中,信號方法
(Semaphores) 是一很有意義的一環,其可達成兩
個重要意義: (1) 解決臨界區的問題、 (2) 自動調
配並行序列的連貫性。
8-6-1 信號 (Semaphores) 與
臨界區 (Critical Section)
圖 8-6-1
8-6-2 信號 (Semaphores) 與
並行序列 (Synchronization)
圖 8-6-2-1
圖 8-6-2-2
8-7 應用 (Application)
• 當我們走進高鐡車站,先到售票機按鈕買票,進
入月台再依車票座位號碼找車箱座位。本節就以
售票機為設計範例,如果有多個旅客同時按鈕買
票,亦即同時進入售票系統之臨界區,此時各旅
客可能領到相同座位號碼的車票 ( 讀者是否還記
得,高鐡通車時買票混亂之情形 ) 。請讀者參考
本章 8-9 節範例系統程式,以了解其混亂的原因
與改進之方法。
8-8 習題 (Exercises)
1 、何謂 伯恩斯坦同步並行條件 (Bernstein
Condition) ?
2 、何謂臨界區 (CS Critical Section) 。於臨界區?
3 、同步並行須滿足那三個要件?
4 、何謂 2 任務演算法?
5 、使用者關心的執行緒 Ti ,有那三種關鍵機制訊
息?
6 、何謂硬體控制指令 (Hardware Instructions) ?
7 、信號 (Semaphore) 的概念為何?
第九章 死結 (Deadlocks)
• 9-1 簡介
• 9-2 死結定義 (Deadlock Definition)
• 9-3 死結特性 (Deadlock Characterization)
• 9-3-1 必要條件 (Necessary Conditions)
• 9-3-2 資源分配圖 (Resource – Allocation Graph)
• 9-4 死結預防 (Deadlock Prevention)
• 9-5 死結避免 (Deadlock Avoidance)
• 9-5-1 銀行家概念 (Conception of Banker)
• 9-5-2 安全演算法 (Safety Algorithm)
• 9-5-3 資源要求演算法 (Resource Request Algorithm)
• 9-5-4 單一裝置 (Single Instance)
• 9-6 死結偵測 (Deadlock Detection)
• 9-6-1 偵測演算法
• 9-6-2 單一裝置 (Single Instance)
• 9-6-3 啟動偵測時機 (Detection Algorithm Usage)
• 9-7 死結消弭 (Recovery from Deadlock)
• 9-7-1 行程終止法 (Process Termination)
• 9-7-2 資源釋放法 (Resource Preemption)
• 9-8 習題 (Exercises)
• 9-9 範例系統程式 (Programming)
• 9-9-1 循環等待之死結 ( 模擬 9-3-2 節 )
9-1 簡介
• 在多工環境 (Multiprogramming Environment) ,隨
時都有多個行程 (Processes) 或執行緒 (Threads)
競爭有限數量的資源 (Resources) ,如果執行緒 Ti
需要的資源 Ri 當時不方便 (not Available) , Ti 即
轉為等待狀態 (Waiting State) 。
• 如上述,執行緒 Ti 需要資源 Ri ,此時若 Ri 被其
他執行緒 Tj 控制佔有,而 Tj 也處於等待狀態,且
不釋放 Ri ,如此現象是謂 “死結 (Deadlock)” 。
9-2 死結定義 (Deadlock Definition)
• 死結形成的基本原因是資源 (Resource) 的不敷使
用,資源包括實體資源 (Physical Resource) 和程式
中的邏輯資源 (Logical Resource) ,若一味因資源
不足而增加資源,則將付出不菲的代價
(Payment) ,故行程 (Processes) 與資源 (Resource)
的優良管理是避免死結 (Prevent Deadlocks) 的最
佳途徑。
圖 9-2
9-3 死結特性 (Deadlock Characterization)
• 系統陷入死結 (Deadlock) 時,行程 (Process) 無法
完成執行,資源 (Resource) 被工作綁住而無法脫
身。
9-3-1 必要條件 (Necessary Conditions)
• 要避免死結發生,須先了解死結發生的因素特性
(Characters) ,死結發生的必要條件是當下列四個
狀態同時產生時:
• 互斥 (Mutual Exclusion)
• 佔有與等待 (Hold and Wait)
• 無搶先機制 (No Preemption)
• 循環等待 (Circular Wait)
9-3-2 資源分配圖
(Resource – Allocation Graph)
• 死結是由一系列行程與資源之阻通而造成,為了
清楚解說,我們設計資源分配圖 (Resource
Allocation Graph) 參與說明。
要求 (Request) :
• 行程向系統提出某資源之使用要求,如圖 9-3-2-
1 ,行程 P1 對資源 R1 提出要求。其表示式為:
• 行程集合 P = {P1} 。
• 資源集合 R = {R1} 。
• 關係邊集合 E = {P1→R1} 。
圖 9-3-2-1
2 、佔用 (Use) / 佔有 (Hold) :
• 如圖 9-3-2-2 ,行程 P2 佔用或佔有資源 R1 的一件
裝置 (Instance) 。其中佔用 (Use) 是 P2 正在使用
該項資源 R1 ;佔有 (Hold) 是 P2 除了已抓取 R1
之外,尚等待要求其他資源,亦可能是因此造成
死結之原因。表示式為:
• 行程集合 P = {P2} 。
• 資源集合 R = {R1} 。
• 關係邊集合 E = { R1→P2} 。
圖 9-3-2-2
3 、佔有 (Hold) 與要求 (Request) :
• 如圖 9-3-2-3 , P3 除了已抓取 R1 之外,尚等待要
求其他資源 R2 。表示式為:
• 行程集合 P = {P3} 。
• 資源集合 R = {R1, R2} 。
• 關係邊集合 E = { R1→P3, P3→R1} 。
圖 9-3-2-3
4 、循環等待 (Circular Wait) :
• 如圖 9-3-2-4 , P1 已佔有 R1 ,且提出要求 R2 ,
但 R2 已被 P2 佔有; P2 已佔有 R2 ,且提出要求
R1 ,但 R1 已被 P1 佔有。如此永久等待無法解開
的迴圈是謂 “循環等待 (Circular Wait)” ,亦是造成
死結的元兇原因。表示式為:
• 行程集合 P = {P1, P2} 。
• 資源集合 R = {R1, R2} 。
• 關係邊集合 E = { R1→P1→R2→P2→R1 } 。
圖 9-3-2-4
5 、迴圈 (Cycle Graph) :
• 如圖 9-3-2-5 ,雖然與圖 9-3-2-4 有一樣的迴圈,
但在死結的意義上却不相同。於圖 (a) , R1 有兩
件裝置 (Instance) , P2 不會永久等待,故不會產
生死結。於圖 (b) ,當 P3 正在佔用 R1 的一件資源
時, P2 等待;一旦 P3 釋放 R1 , P2 即不需再等
待,故也不會產生死結。
圖 9-3-2-5
(a) (b)
9-4 死結預防 (Deadlock Prevention)
• 為了預防死結發生,我們可從上述之死結必要條
件著手,亦即想盡方法不讓上述四個條件發生。
• 1 、互斥 (Mutual Exclusion)
• 2 、佔有與等待 (Hold and Wait)
• 3 、無搶先機制 (No Preemption)
• 4 、循環等待 (Circular Wait)
9-5 死結避免 (Deadlock Avoidance)
• 本節提出避免死結 (Avoidance) 以取代預防死結
(Prevention) 之觀念。如圖 9-5-1 , (1) 安全區為
絕無發生死結可能之區域,亦即無 9-4 節所述之
死結必要條件。 (2) 非安全區為已觸及死結的必
要條件,但尚未真正產生死結。 (3) 死結區為已
發生死結。
圖 9-5-1
圖 9-5-1-1/ 圖 9-5-1-2
9-5-2 安全演算法 (Safety Algorithm)
• 當行程 Pi 需求資源 Needi 時,系統有足夠的可用資源提供使用,即 Needi ≦
Available 。如果如此狀態能滿足每一個行程,系統已處於安全狀態,且安排
出行程安全序列 <Pi, Pj, Pk, …> 。其演算法為:
• 1. 宣告 work ← Available;
• finish[i] ← false; ( 其中 i = 0, 1, …, n-1)
• string ← Ø;
• 2. 依序測試 for (i=0; i<n; i++)
• if (finish[i] ==false) and (Needi work)≦ then
• string ← string + “Pi”;
• goto step3;
• goto step 4;
• 3. work ← work + Allocation;
• finish[i] ← true;
• goto step 2;
• 4. 依序測試 for (i=0; i<n; i++)
• if finish[i] == true 表示行程 Pi 順利完成,如果每一行程均順利完成,
系統在安全狀態 ;
• 5. print string;
圖 9-5-2-1/ 圖 9-5-2-2
9-5-3 資源要求演算法
(Resource Request Algorithm)
• 當行程 Pi 提出資源要求量 Requesti ,要求量不得多於需求量
(Need) ,即 Requesti Needi≦ ,否則有致發生死結的可能;同時要求
量亦不得多於可用量 (Available) ,即 Requesti Available≦ ,否則須等
待系統釋出足夠的資源。其演算法為:
• 1. 行程 Pi 提出資源要求 Requesti;
• 2. if Requesti Needi≦ then goto step 2;
• else 有致生死結的可能 ;
• 3. if Requesti Available≦ then goto step 3;
• 4. 系統依照安全規則運行: Available ← Available – Requesti;
• Allocationi ← Allocationi + Requesti;
• Needi ← Needi – Requesti;
9-6 死結偵測 (Deadlock Detection)
• 如前述,如果將系統一直維持在安全區內,雖可
預防死結之發生,但也傷害了系統的效率。我們
可放任系統於非安全區遊走在死結之邊緣外圍,
並於一定時間之間隔,執行一次死結偵測,當發
現有死結發生,立即執行挽救措施,雖然很危險
,但可將系統效率推升至最高點。我們設計一些
演算法,密切監視系統運行狀況。
9-6-1 偵測演算法
• 偵測演算法與 9-5-2 節之安全演算法是屬同一架構,當行程 Pi 要求資
源時 Requesti ,系統沒有足夠的可用資源提供使用,即 Requesti ≧
Available 。如果如此狀態發生,系統已處於死結狀態。其演算法為:
• 1. 宣告 work ← Available;
• finish[i] ← false; ( 其中 i = 0, 1, …, n-1)
• 2. 依序測試 for (i=0; i<n; i++)
• if (finish[i] ==false) and (Requesti work)≦ then
• goto step3;
• goto step 4;
• 3. work ← work + Allocation;
• finish[i] ← true;
• goto step 2;
• 4. 依序測試 for (i=0; i<n; i++)
• if finish[i] == false 表示行程 Pi 已處於死結狀態 ;
圖 9-6-1-1 / 圖 9-6-1-2
9-6-2 單一裝置 (Single Instance)
• 如前述,於資源分配圖,如果各資源類僅有一件
裝置如圖 9-6-2 ,只要有迴圈,就表示死結已發生
。
圖 9-6-2
9-7 死結消弭 (Recovery from Deadlock)
• 當偵測到發生死結時,我們採取兩個對應步驟:
通知系統管理員 (Operator) 採用適當死結消弭措
施;或是以信號告知作業系統起動死結消弭措施
。死結消弭措施可由兩個切入點著手: (1) 從行
程切入, (2) 從資源切入。
9-8 習題 (Exercises)
1 、何謂死結 (Deadlock) ?
2 、當一個行程使用資源時,有那三個過程?
3 、死結發生的必要條件為何?
4 、如何預防死結發生?
5 、如何避免死結發生?
6 、如 9-5-2 節,自行設計系統資源狀況,執行安全演算法。
7 、如 9-6-1 節,自行設計系統資源狀況,執行偵測演算法。
8 、何時啟動偵測演算法?
9 、消弭死結,有那兩種方法?
第三篇
儲存管理 (Storage Management)
第十章
記憶體管理 (Memory Management)
• 10-1 簡介
• 10-2 記憶體之觀念 (Concept of Memory)
• 10-2-1 地址方式 (Address Binding)
• 10-2-2 邏輯地址 / 實體地址 (Logical / Physical Address)
• 10-2-3 機動載入 / 連接 (Dynamic Loading / Linking)
• 10-2-4 重疊 (Overlays)
• 10-3 置換 (Swapping)
• 10-3-1 回存裝置 (Backing Store)
• 10-3-2 置換時間
• 10-3-3 重疊置換 (Overlapped Swapping)
• 10-4 連續記憶體配置 (Contiguous Memory Allocation)
• 10-4-1 記憶體保護 (Memory Protection)
• 10-4-2 記憶體分配 (Memory Allocation)
• 10-4-3 碎片 (Fragmentation)
• 10-5 分頁 (Paging)
• 10-5-1 分頁方法 (Paging Methods)
• 10-5-2 硬體支援 (Hardware Support)
• 10-5-3 框頁保護 (Frames Protection)
• 10-5-4 框頁分享 (Shared Pages)
• 10-6 區段 (Segmentation)
• 10-7 區段分頁 (Segmentation with Paging)
• 10-8 習題 (Exercises)
• 10-9 範例系統程式 (Programming)
• 10-9-1 區段應用 ( 模擬 10-6 節 )
10-1 簡介
• 於前數章節,我們談到多個行程 (Processes) 競爭
CPU 的使用方法;於本章,我們將另談及多個行
程 (Processes) 競爭記憶體 (Memory) 的應用。為
了安排記憶體作最佳使用,過程中需要良好的管
理,早期僅有單純的記憶體 (Bare Machine) 使用
,近期發展出置換 (Swapping) 、分頁 (Paging) 、
與區段 (Segmentation) 等方法,增加記憶體使用
之效率。
10-2 記憶體之觀念 (Concept of Memory)
• 一個行程或執行緒在進入 CPU 前,必須先置入主
記憶體 (Main Memory) , CPU 直接對主記憶體
(Main Memory) 隨機存取 (random access) 資料,
典型的指令執行週期 (Instruction Execution Cycle)
如范紐曼 (Von Neumann) 所提出之執行架構 ( 如
圖 3-5-1) ,由控制單元 (CU Control Unit) 安排從主
記憶體 (Main Memory) 抓取 (fetch) 指令碼
(Instruction) 至邏輯運算單元 (Arithmetic Logic
Unit) 內之暫存器 (Register) 作解碼 (decode) ,視
指令碼之需要,再從主記憶體抓取執行所需的資
料 (Data) 。執行完成後將結果 (Result) 傳回主記
憶體。等待執行下一個執行週期。
圖 10-2
(b)
(a)
10-2-1 地址方式 (Address Binding)
• 當一個程式 (Program) 從開始編輯 (Editing) 到執
行完畢 (Execution) ,其間各程式碼也隨著不同的
過程 (Stages / Time) ,有著不同的記憶體地址方式
(Address Binding) 。
圖 10-2-1
10-2-2 邏輯地址 / 實體地址
(Logical / Physical Address)
• 經由 CPU 處理過而產生的一批資料,可自成一組
單元,有其自身之資料置放次序,此時各資料的
次序位置是謂 “邏輯地址 (Logical Address)” 。如此
儲存這些資料的空間是謂 “邏輯地址空間 (Logical
Address Space)” 。
圖 10-2-2
10-2-3 機動載入 / 連接
(Dynamic Loading / Linking)
• 一個完整的執行程式,除了有主程式 (Main Program) 外,
另有多個等待被呼叫的函數 (Functions) 或副程式
(Subroutine) ,如圖 10-2-3 ,這些程式碼均完整地儲存在
實體記憶體 (Physical Memory) 中。當被執行時,需先將程
式碼載入 (Load) 執行記憶體 (Execution Memory) 或稱邏
輯空間記憶體 (Logical Address Space Memory) 。
• 執行記憶體的容量可能不足以容納全部程式碼,除了主程
式必須載入外,其他函數或副程式則於需要時才被載入,
亦即未獲呼叫 (call) 時不必載入,以節省有限的記憶體空
間,如此之載入是謂 “機動載入 (Dynamic Loading)” 。
圖 10-2-3
10-2-4 重疊 (Overlays)
• 當一個程式的程式碼無法同時容納於執行記憶體
時,我們可以重疊方法 (Overlays) 支援執行,先將
經常需要執行的指令 (Instructions) 與資料 (Data)
置入執行記憶體,其他指令與資料則於需要時再
載入,執行完畢後置換出,將記憶體空間留給次
一批指令與資料使用,如此作為是謂 “重疊
(Overlays)” 。
10-3 置換 (Swapping)
• 我們已了解,一個行程必須先置入執行記憶體
(Main Memory) ,才可進入 CPU 執行。如圖 10-
3 ,在主記憶體的行程 (Process) 可視需要暫時置
換移出至回存裝置 (Backing Store) ,或在回存裝置
的行程亦可視需要暫時置換移入至主記憶體,如
此移出移入是謂 “置換 (Swapping)” 。其機制是 “置
換器 (Swapper)” 。
圖 10-3
10-3-1 回存裝置 (Backing Store)
• 回存裝置是一快速性能的記憶體裝置,一般來言
為一磁碟或磁鼓,當行程從主記憶體被置換出
(Swap out) 時,可在此暫時存駐,並等待時機再
置換入 (Swap in) 主記憶體。
• 回存裝置的容量至少要大於主記憶體的容量,換
言之,需要有足夠容量容納主記憶體上所有的行
程,如此才可勝任回存之任務 (Task) 。
10-3-2 置換時間
• 行程愈大,置換時間愈長,即置換時間與行程大
小成正比。由圖 10-3-2 可知,行程在主記憶體的
置換時間亦將影響 CPU 的工作效率:
• Ecpu = (T – (tin + tout)) / T
圖 10-3-2
10-3-3 重疊置換 (Overlapped Swapping)
• 於前節,我們認識,當行程在置換時, CPU 無法
工作以致處於等待狀態。為了解決此問題,我們
可於主記憶體設置兩個以上之緩衝區 (Buffers) ,
如圖 10-3-3 ,當置換行程 2 之同時,可將已在緩
衝區之行程 3 調入執行區進入 CPU 執行。如此作
為是謂 “重疊置換 (Overlapped Swapping)” , CPU
將不再浪費在等待上。
圖 10-3-3
圖 10-4
10-4-1 記憶體保護 (Memory Protection)
• 一旦某記憶體區域為某行程使用,此時該區域不
再允許其他資料置入,如此作為是謂 “記憶體保護
(Memory Protection)” 。
• 記憶體保護之方法有: (1) 界限保護 (Bound
Protection) , (2) 基底保護 (Base Protection)
圖 10-4-1
(a) (b)
10-4-2 記憶體分配 (Memory Allocation)
• 記憶體 (Main Memory) 隨時有行程 (Processes) 進
出,有些空間被佔用,有些空間未被使用,如圖
10-4-2 ,這些未被使用之空白區域是謂 “未使用坑
(Hole)” 。
圖 10-4-2
10-4-3 碎片 (Fragmentation)
• 如圖 10-4-3-1 ,設有記憶體如圖 (a) ,置入行程 Pi
後,剩餘未被佔用的空間是謂 “碎片
(Fragmentation) ,如圖 (b) 。
圖 10-4-3-1
(a)
(b)
圖 10-4-3-2
10-5 分頁 (Paging)
• 於前節,為了 “行程 - 記憶體” 作適當配對,我們
飽受連續記憶體 (Contiguous Memory) 與碎片
(Fragmentation) 之苦。本節探討分頁 (Paging) ,
其構想來自於:
• 1 、指標運用 (Using Pointers)
• 2 、框頁運用 (Using Frame)
圖 10-5-1
圖 10-5-2
10-5-1 分頁方法 (Paging Methods)
• 範例如圖 10-5-1-1 ,將行程的程式碼,在邏輯空
間 (Logical Space) 中分三頁置放,經過作業系統
分頁表 (Page Table) 之配置,將行程的 Page0 配置
於實體空間 (Physical Space) 的第 3 頁;行程的
Page1 配置於實體空間的第 6 頁;行程的 Page2 配
置於實體空間的第 1 頁。
圖 10-5-1-1
圖 10-5-1-2
10-5-2 硬體支援 (Hardware Support)
• 如圖 10-5-2-1 , TLB 是以快速存取硬體材質製造
,框頁數量不多,功能與分頁表 (Page Table) 相
同,但在存取速度上, TLB 較分頁表快速許多。
當 “邏輯 - 實體” 對應地址頁目配對時,除了必須
記錄於分頁表外,另擇常用的頁目抄錄至 TLB 。
圖 10-5-2-1
10-5-3 框頁保護 (Frames Protection)
• 如圖 10-5-3-1 ,我們可於分頁表 (Page Table) 增設
一個位元 (Bit) ,標註 “可用 (Valid)” 與 “禁用
(Invalid)” 。
• 標註 “可用 (Valid)” 是指當時可對該框頁執行存取
;標註 “禁用 (Invalid)” 是指當時禁止對該框頁執
行存取,亦即對該框頁實施保護 (Protection) 。如
圖 10-5-3-1 ,實體空間的第 5 頁。
圖 10-5-3-1
10-5-4 框頁分享 (Shared Pages)
• 如圖 10-5-4-1 ,行程 P1 之第 0 頁 Data0 與行程 P2
之第 0 頁 Data0 相同;行程 P1 之第 1 頁 Data1 與
行程 P2 之第 1 頁 Data1 相同,因此 P1 與 P2 可分
享實體記憶體 (Physical Memory) 之 Data0 與
Data1 。其優點為可節省框頁。
圖 10-5-4-1
10-6 區段 (Segmentation)
• 如圖 10-6-1 ,為了管理方便,系統將相近功能的
程式碼以邏輯地址叢聚在一個區段內,亦可如分
頁方法以區段表 (Segment Table) 對映至實體記憶
體。
圖 10-6-1
圖 10-6-2
圖 10-6-3
10-7 區段分頁 (Segmentation with Paging)
如圖 10-7 ,我們將區段方法 (Segmentation) 與分頁方法
(Paging) 合併使用,其間對映過程:
(1) 於區段表 (Segmentation Table) ,邏輯區段起始位址
(Segmentation Number) 對映實體區段基底地址 (Physical
Base Address) ;
(2) 區段表 (Segmentation Table) 中該區段之邏輯相對距離
(Logical Offset) 對映至分頁表 (Page Table) 之邏輯分頁目
(Logical Pages) ;
(3) 於分頁表 (Page Table) ,邏輯分頁目 (Logical Pages) 對映
實體分頁目 (Physical Pages) ;
(4) 綜合項 (1) 之實體區段基底地址 (Physical Base Address)
與項 (3) 之實體分頁目 (Physical Pages) ,可將各區段以區
段分頁方法 (Segmentation with Paging) 完整地對映至實體
記憶體。
圖 10-7
10-8 習題 (Exercises)
1 、記憶體之地址 (Address) 有那兩種表示方式?
2 、絕對地址與相對地址之關係為何?
3 、何謂邏輯地址 (Logical Address) ?
4 、何謂機動載入 (Dynamic Loading) ?
5 、何謂重疊 (Overlays) ?
6 、何謂置換 (Swapping) ?
7 、置換時間與 CPU 的工作效率有合關係?
8 、記憶體保護之方法有那些?
9 、行程 - 未使用坑之配對法則有那些?
10 、何謂內部碎片 (Internal Fragmentation) ?
11 、何謂外部碎片 (External Fragmentation) ?
12 、何謂快取分頁緩衝器 (TLB Translation Look-aside
Buffer) ?
第十一章
虛擬記憶體 (Virtual Memory)
• 11-1 簡介
• 11-2 虛擬記憶體之觀念 (Concept of Virtual Memory)
• 11-3 分頁要求 (Demand Paging)
• 11-4 框頁替換 (Page Replacement)
• 11-5 頁框分配 (Allocation of Frames)
• 11-6 輾轉混亂現象 (Thrashing)
• 11-7 其他考量 (Other Considerations)
• 11-8 習題 (Exercises)
• 11-9 範例系統程式 (Programming)
• 11-9-1 分頁設計 ( 模擬 11-3-2 節 )
11-1 簡介
• 於前章,我們很努力地探討記憶體與其管理,目
的無非是要如何配合多工程式 (Multiprogramming)
之執行,即記憶體如何同時 (simultaneously) 容納
多個行程 (Processes) 。於本章,我們更關切,無
論行程有多大,在執行前,我們如何將該行程之
全部程式碼先搬置於主記憶體內。
• 事實上,一定有某些行程 (Processes) 大於主記憶
體之實體容量,亦即在執行前,我們無法將該行
程之全部程式碼先搬置於主記憶體內。此時我們
可藉本章提出之虛擬記憶體方法尋求解決。
11-2 虛擬記憶體之觀念
(Concept of Virtual Memory)
• 我們已非常了解,任何要進入 CPU 執行的行程
(Process) 均需先置入主記憶體,如果行程大於主
記憶體的容量,我們無法將該行程的程式碼同時
完整地置入主記憶體,亦即無法達到執行條件的
要求 (Execution Requirements) 。
圖 11-2
11-3 分頁要求 (Demand Paging)
• 於一般作業系統,虛擬記憶體 (Virtual Memory)
之形成,均是因執行 “分頁要求 (Demand Paging)”
而產生的。同理、“區段要求 (Segment Paging)” 亦
可產生虛擬記憶體。
圖 11-3
11-3-1 分頁要求觀念
(Concept of Demand Paging)
• 分頁要求器 (Pager) 僅將需要執行的框頁置換入主
記憶體,如此可節省記憶體之實體容量,及節省
不必要框頁的置換時間。
圖 11-3-1-1
圖 11-3-1-2
11-3-2 分頁要求之執行意義
(Performance of Demand Paging)
• 於前節我們已了解,當系統檢視分頁表 (Page
Table) 之檢視位元 (Valid / Invalid) 時,如果是 v
則表示該框頁已置入實體空間,可進入 CPU 執行
;如果是 i 則表示該框頁尚未置換入實體空間,
此時若被選中,則視為 “選頁錯誤 (Page Fault)” ,
系統將執行 “選頁錯誤中斷 (Page Fault Interrupt
Trap)” 。
11-4 框頁替換 (Page Replacement)
• 以圖 11-4 為例,當執行行程 (Process) P0 時,有 3
個框頁要求,檢視分頁表知該 3 頁已置入實體記
憶體之 0~2 頁,可立即執行 P0 。
圖 11-4
11-4-1 框頁替換之觀念
(Concept of Page Replacement)
• 繼續上述範例,如圖 11-4-1 ,行程 P1 有 4 個框頁
要求,檢視分頁表,有 2 頁已置入實體記憶體之
3~4 頁,另外 2 頁 P1_Pg2 、 P1_Pg3 却無空間可
置入 ( 實體記憶體之 5~6 頁為 Invalid 不得置入資
料 )
圖 11-4-1
11-4-2 先入先出框頁替換
(FIFO Page Replacement)
• 範例如圖 11-4-2-1 , Position Labels 為時間位置,
Demand Page Reference String 為框頁要求序列,
長方形為框頁 ( 本例有 3 頁 ) ,星號 (*) 為撃中
(Hit) 。
圖 11-4-2-1
畢勒得異常 (Belady’s Anomaly)
圖 11-4-2-2
(a)
(b)
11-4-3 最佳框頁替換
(Optimal Page Replacement)
• 依框頁要求序列,依序將每頁資料置入頁框,當
頁框數量不足時,實施框頁替換,系統檢視未來
各資料之使用機會,將機會最低的資料置出。如
圖 11-4-3
圖 11-4-3
11-4-4 最近最少使用框頁替換
(Least Recently Used Page Replacement)
• 前節所述的最佳框頁替換,是預估未來的機會,
要付出極高的代價,甚或不可行。本節之最近最
少使用框頁替換 (LRU Least Recently Used Page
Replacement) 是從相反的方向來檢視,預估未來
很困難,檢視過去的歷史記錄則很容易。其著眼
點是如果此時使用過某資料,可能有機會再提出
使用要求。如圖 11-4-4
圖 11-4-4
11-5 頁框分配 (Allocation of Frames)
• 於作業系統,分頁要求是影響工作效率的重要因
素之一,相對的,頁框數量的多寡却是影響此項
因素的重要資源 (Resource) 。框頁分配 (Allocation
of Frames) 得到愈多,選頁錯誤 (Page Fault) 愈少
,撃中率 (Hit Rate) 愈高,以致整體系統的工作效
率 (Efficiency) 也隨之提高。
11-6 輾轉混亂現象 (Thrashing)
• 當一個行程 (Process) 分配得到的頁框數量少於其
最低需求數量時,系統應立即終止該行程,並將
其已佔有的頁框分配給予其他行程使用。
• 當任何行程的頁框不足時,如 11-3-1 節所述,很
快即發生 “選頁錯誤 (Page Fault)” ,該行程必須立
刻執行框頁替換,但因頁框不足,所有的框頁均
在使用中,沒有空間可供替換,選頁錯誤 (Page
Fault) 立即又再發生,前一個替換尚未解決,次
一個替換又接踵而來,如此惡性分頁替換是謂 “輾
轉混亂現象 (Thrashing)” 。
圖 11-6-1
圖 11-6-2
圖 11-6-3
11-6-4 選頁錯誤頻率
(Page Fault Frequency)
• 我們已了解,當頁框數量不足時,擊中率降低,
選頁錯誤率增加。如圖 11-6-3 ,系統可設一選頁
錯誤頻率上限,當到達上限時,表示頁框數量開
始不足,系統應增遣頁框以供使用。如果選頁錯
誤頻率仍不下降,表示已發生輾轉混亂現象
(Thrashing) ,系統應終止部份行程,減少競爭頁
框的對手,同時釋出頁框。當到達下限時,表示
頁框數量充裕,系統可減少頁框之數量,節省系
統資源。
圖 11-6-4
11-7 其他考量 (Other Considerations)
• 由前述各節,我們認識到 “分頁作業 (Page
Operation)” 的重點考慮是在: (1) 分頁替換,與
(2) 頁框分配,其意義均是為了增加系統效率。除
了前述各節述及的考量外,本節再探討一些其他
考量。
• 1 、預先分頁 (Prepaging)
• 2 、分頁大小 (Page Size)
• 3 、快取分頁緩衝器 (TLB Translation Look-aside
Buffer)
• 4 、程式結構 (Program Structure)
• 5 、 I/O 鎖定
圖 11-7-1
圖 11-7-2
11-8 習題 (Exercises)
1 、為了節省使用空間,系統總是先檢視那些不會立刻使用的程式碼?
2 、使用虛擬記憶體方法,可以虛擬記憶體 (Virtual Memory) 補助實體記
憶體 (Physical Memory) 之不足,其利益優勢為何?
3 、何謂 “懶惰置換 (Lazy Swapping)” ?
4 、何謂 “選頁錯誤 (Page Fault)” ?
5 、先進先出框頁替換法 (FIFO Page Replacement) 之優缺點為何?
6 、最佳框頁替換 (Optimal Page Replacement) 的優缺點為何?
7 、頁框數量的多寡如何影響系統的工作效率?
8 、理論上,一個行程至少應分配得到那些頁框?
9 、何謂全域替換 (Global Replacement) ?
10 、何謂局部替換 (Local Replacement) ?
11 、何謂 “輾轉混亂現象 (Thrashing)” ?
12 、挽救輾轉混亂現象 (Thrashing) 的方法為何?
第十二章
檔案系統介面 (File System Interface)
• 12-1 簡介
• 12-2 檔案概念 (File Concept)
• 12-2-1 檔案屬性特徵 (File Attributes)
• 12-2-2 檔案操作 (File Operations)
• 12-2-3 開啟 / 關閉檔案 (Open / Close File)
• 12-2-4 鎖住 / 釋出檔案 (Lock / Release File)
• 12-2-5 檔案類型 (File Types)
• 12-3 檔案存取方法 (Access Methods)
• 12-4 目錄結構 (Directory Structure)
• 12-4-1 單層目錄 (Single Level Directory)
• 12-4-2 雙層目錄 (Two Level Directory)
• 12-4-3 樹狀目錄 (Tree Structured Directories)
• 12-4-4 非迴路圖形目錄 (Acyclic Graph Directories)
• 12-4-5 綜合圖形目錄 (General Graph Directories)
• 12-5 檔案系統掛載 (File System Mounting)
• 12-6 檔案分享 (File Sharing)
• 12-7 檔案保護 (File Protection)
• 12-8 習題 (Exercises)
• 12-9 範例系統程式 (Programming)
• 12-9-1 讀取檔案屬性 ( 模擬 12-2-1 節 )
• 12-9-2 檔案之寫入 / 讀取 ( 模擬 12-2-2 節 )
12-1 簡介
• 對使用者來言,檔案 (File) 是能見度相當高的作
業系統應用,無論是作業系統的程式 (Program)
與資料 (Data) 、或是使用者的程式與資料,檔案
都提供了線上 (On Line) 記憶體之存取機制 (Access
Mechanism) 。
• 檔案系統可概分為兩類: (1) 檔案系統、與 (2)
目錄系統。檔案系統處理檔案本身的資料存取問
題,目錄系統處理各檔案的歸類問題。也有少數
大型電腦設置叢目錄系統 (Partition) ,處理各目錄
的歸類問題。
12-2 檔案概念 (File Concept)
• 電腦的實體儲存裝置有光碟、磁碟、與磁帶,檔
案儲存於這些裝置,均不會因停電、關機、與重
新啟動而丟失資料。
• 檔案 (File) 是以一個名稱 (Name) 集合有關係資料
(Related Information) 的組合,亦即一個名稱及一
串位元 (Bits) 、位元組 (Bytes) 、列 (Lines) 、與資
料錄 (Records) ,從邏輯空間 (Logical Space) 由作
業系統對映至實體空間 (Physical Space) 。
12-2-1 檔案屬性特徵 (File Attributes)
• 隨著電腦系統的不同,檔案突顯的屬性特徵 (Attributes)
項目亦隨之不同,一般來言,檔案屬性特徵項目有:
• 1 、檔案名稱 (Name)
• 2 、檔案識別碼 (Identifier)
• 3 、檔案類型 (Type)
• 4 、檔案位置 (Location)
• 5 、檔案大小 (Size)
• 6 、檔案保護 (Protection)
• 7 、時間 (Time)
12-2-2 檔案操作 (File Operations)
• 檔案操作 (File Operations) 是指系統可直接處理檔
案的模式,經常執行的操作有: (1) 建立檔案
(Creating a File) 、 (2) 寫入檔案 (Writing a File) 、
(3) 讀取檔案 (Reading a File) 、 (4) 刪除檔案
(Deleting a File) 、 (5) 重新命名檔案 (Renaming a
File) 、 (6) 合併檔案 (Appending New
Information) 、 (7) 截斷檔案 (Truncating a File) 等
12-2-3 開啟 / 關閉檔案 (Open / Close File)
• 當寫入檔案或讀出檔案之前,需先藉由系統呼叫
open( ) 、或 read( ) / write( ) 將檔案開啟 (Open) ;
以 close( ) 關閉檔案、或當執行完畢後系統自動將
檔案關閉。
• 如圖 12-2-3-1 ,系統設置 “開啟檔案表 (Open File
Table)” ,將當時正被開啟的各檔案納入其中,使
用者 (Users) 與系統 (System) 可於該表查詢已開
啟的檔案,減免在記憶體搜尋所付出的代價。當
檔案被關閉後,亦將於表中刪除該檔案。
圖 12-2-3-1
圖 12-2-3-2
圖 12-2-3-3
12-2-4 鎖住 / 釋出檔案 (Lock / Release File)
• 鎖住檔案 (Lock File) 的意義是:除了某些特定行
程 (Specific Processes) 之外,其他行程 (Other
Processes) 均不得進出該檔案。
• 讀取鎖住 (Readers Locks)
• 分享鎖住 (Shared Lock)
• 委託鎖住 (Mandatory Lock)
12-2-5 檔案類型 (File Types)
• 通常於檔案名稱上註明檔案類型,將檔案名稱分
為兩部份:主檔名 (File Name) 與副檔名 (File
Extension Name) ,之間以句點 (Period Character)
分隔。主檔名為檔案名稱,也即檔案的起始位置
;副檔名為該檔案的類型 (Type) ,如
testFile.java 。
• 隨著不同的系統,檔案名稱也會受到一些限制,
例如 Dos 系統:主檔名不得大於 8 個字元,副檔
名不得大於 3 個字元。我們常見到的檔案類型如
圖 12-2-5 。
圖 12-2-5
12-3 檔案存取方法 (Access Methods)
• 使用檔案資料 (Information) ,即是將檔案資料讀
取 (Read File) 至電腦系統記憶體、或是將電腦系
統之資料寫入至檔案 (Write File) ,可統稱謂 “檔案
存取 (Access File)” 。常用的存取方法有 (1) 循序
存取 (Sequential Access) , (2) 直接存取 (Direct
Access) , (3) 索引存取 (Index Access) 。
• 1 、循序存取 (Sequential Access)
• 2 、直接存取 (Direct Access)
• 3 、索引存取 (Index Access)
圖 12-3-1
圖 12-3-2
圖 12-3-3
12-4 目錄結構 (Directory Structure)
• 一般電腦系統均擁有數千個檔案 (Files) ,良好的
管理是非常有必要的,檔案儲存在記憶體中,故
檔案管理亦即是記憶體管理的延伸,例如於輔助
記憶體 ( 如磁碟 ) ,我們可分為兩階段處理:
• 1 、磁碟分割 (Partitions)
• 2 、建立目錄 (Directory)
圖 12-4
(a) (b)
12-4-1 單層目錄 (Single Level Directory)
• 單層目錄 (Single Level Directory) 是最簡單的目錄
應用,如圖 12-4-1 ,所有的檔案都包含在同一目
錄中。
圖 12-4-1
12-4-2 雙層目錄 (Two Level Directory)
• 當某使用者註冊後,如圖 12-4-2 ,系統立即將該
使用者名稱建立於主檔目錄 (MFD) 內,並允許該
使用者建立自己的使用者目錄 (UFD) ,指向使用
者檔案的入口 (Entries) 。
圖 12-4-2
12-4-3 樹狀目錄
(Tree Structured Directories)
• 如圖 12-4-3 ,樹狀目錄的特徵有:
• (1) 連通性 (Connectivity)
• (2) 無循環迴圈 (Acyclic Connection)
圖 12-4-3
12-4-4 非迴路圖形目錄
(Acyclic Graph Directories)
• 首先我們須辨別何謂迴圈 (Cyclic Connection) ?何
謂迴路 (Cyclic Graph) ?由圖 12-4-4 與圖 12-4-5 ,
可作非常清楚地說明,於圖 12-4-4 之 rbcda 是迴
圈,但不是迴路;於圖 12-4-5 之 abc 是迴圈,亦
是迴路。
圖 12-4-4
圖 12-4-5
12-5 檔案系統掛載 (File System Mounting)
• 為了更靈活應用檔案系統,有些系統允許將一串
次目錄系統 ( 如圖 12-5-1-(b)) 或檔案 (File) ,移動
穿梭於主目錄系統,如此作為是謂 “檔案系統掛載
(File System Mounting) 。
圖 12-5-1
圖 12-5-2
12-6 檔案分享 (File Sharing)
• 一個檔案的價值,與其被分享的程度是成正比的
,因此作業系統對檔案分享的管理,亦是影響工
作效率的一環。
• 依區域範圍,檔案分享可概分為本機範圍分享
(Local File Sharing) 與網路範圍分享 (Remote File
Sharing) ,前者是由本機系統的多個使用者,依被
允許的權限分享檔案;後者是由網路上的多個使
用者,依被允許的權限分享檔案,有關網路方面
的問題,本書將爾後詳細討論。
• 無論是何種範圍,檔案分享能提昇檔案的價值,
但也是非常危險的作為,系統須非常謹慎地作安
全措施管理。
12-7 檔案保護 (File Protection)
• 對於儲存於電腦系統中之資料 (Information) ,我們應確保
其無實體損壞 (Physical Damage) 、與確保其適當存取
(Proper Access) 。
• 無實體損壞是指確保可信度 (Reliability) ,目前最完整的方
法是定期複製檔案備存 (Back up) ;適當存取是指檔案保護
(Protection) ,如果是單人單工系統,將無存取保護的問題
,如果是多人多工系統即需考量檔案保護如下:
• 1 、存取類型 (Type of Access) :
• 2 、存取控制 (Access Control) :
• 3 、其他保護 (Other Protection) :
12-8 習題 (Exercises)
• 1 、檔案屬性特徵項目有那些?
• 2 、經常執行的操作操作有那些?
• 3 、當行程關閉檔案時,系統應執行那些步驟?
• 4 、何謂委託鎖住 (Mandatory Lock) ?
• 5 、何謂建議鎖住 (Advisory Lock) ?
• 6 、檔案存取方法有那些?
• 7 、樹狀目錄的特徵有那些?
• 8 、綜合圖形目錄 (General Graph Directories) 之缺點為何
?
• 9 、造成綜合圖形目錄的原因為何?
• 10 、何謂 “掛載點 (Mount Point)” ?
• 11 、掛載可類分為那三種型態?
• 12 、檔案存取類型 (Type of Access) 有那些?
第十三章檔案系統運作
(File System Implementation)
• 13-1 簡介
• 13-2 檔案系統結構 (File System Structure)
• 13-3 檔案系統運作 (File System Implementation)
• 13-3-1 檔案系統概念 (Concept of File System)
• 13-3-2 分割區與掛載 (Partitions and Mounting)
• 13-3-3 虛擬檔案系統 (Virtual File System)
• 13-4 目錄運作 (Directory Implementation)
• 13-5 空間分配方法 (Allocation Methods)
• 13-5-1 連續空間分配 (Contiguous Allocation)
• 13-5-2 鏈接空間分配 (Linked Allocation)
• 13-5-3 索引空間分配 (Indexed Allocation)
• 13-5-4 運作性能 (Performance)
• 13-6 空白空間之管理 (Free Space Management)
• 13-7 網路檔案系統 (NFS Network File System)
• 13-8 習題 (Exercises)
13-1 簡介
• 於前章我們已了解,檔案系統提供了線上 (On Line
Storage) 儲存裝置 (Storage) 與檔案存取 (Access
Files) 機制。
• 本章將探討磁碟儲存裝置 (Disk) 、與在磁碟上如
何執行檔案存取 (File Access) ,內容含及檔案系統
結構 (File System Structure) 、磁碟空間分配
(Allocate Disk Space) 、標定資料位置 (Track Data
Location) 、及提供儲存裝置與作業系統之執行介
面 (Interface) 。
13-2 檔案系統結構 (File System Structure)
• 在輔助記憶體 (Secondary Storage) 種類中,磁碟 (Disk) 是
很重要的儲存裝置 (Device) ,且已為今日大多數電腦系統
所採用,其原因是磁碟具有: (1) 重寫性 (Rewritable) :
寫入磁碟的資料,刪除後,相同的位置可再寫入其他資料
。 (2) 區塊性 (Blocking) :可作區塊性資料之存取,以致
可輕易執行檔案之直接存取 ( 如 12-3 節所述 ) 。
• 檔案系統 (File System) 最重要的兩項工作為: (1) 如何定
義 (Define) 一個檔案及其屬性特徵 (Attributes) ? (2) 如何
將邏輯檔案系統 (Logical File System) 對映至實體檔案系統
(Physical File System) ?檔案系統是為多層設計 (Layer
Design) ,如圖 13-2 ,上端為邏輯空間 (Logical Space) ,下
端為實體空間 (Physical Space) 。
圖 13-2
13-3 檔案系統運作
(File System Implementation)
• 於前章 12-2-2 節,我們曾探討單純的檔案操作
(File Operations) ,於本節,我們將探討整體性的
檔案運作 (File System Implementation) 。
• 檔案系統概念 (Concept of File System)
• 分割區與掛載 (Partitions and Mounting)
圖 13-3-3
13-4 目錄運作 (Directory Implementation)
• 選擇適當的目錄管理演算法 (Directory
Management Algorithms) 與空間分配 (Directory
Allocation) ,對檔案的執行效率 (Efficiency) 有其
一定程度的影響。使用者 (Users) 於目錄
(Directory) 搜尋檔案的方法有:
• 1 、線性串列 (Linear List)
• 2 、雜湊表 (Hash Table)
13-5 空間分配方法
(Allocation Methods)
• 無可避免地,總是有多個檔案儲存在一個磁碟內
,此時如何將磁碟的空間適當地分配給予各檔案
,將影響磁碟空間之有效使用 (Space Utilizing
Efficiency) 、與檔案存取 (Access Files) 的速率。磁
碟空間之主要分配方法有:連續空間分配
(Contiguous Allocation) 、鏈接空間分配 (Linked
Allocation) 、索引空間分配 (Indexed Allocation) 。
圖 13-5-1
圖 13-5-2-1
圖 13-5-2-2
圖 13-5-3
13-6 空白空間之管理
(Free Space Management)
• 磁碟的空間是有限的 (Limited) ,當新檔案建立時
,系統要搜尋空白空間 (Free Space) 來安置該新檔
案;當檔案被刪除 (Delete) 時,系統要管理這些
被釋出 (Released) 的空間。今日電腦系統,對空
白空間的管理方法有:
• 1 、位元記錄 (Bit Vector)
• 2 、連接串列 (Linked List)
• 3 、群組串列 (Group List)
13-7 網路檔案系統
(NFS Network File System)
• 於前述 13-3-3 節,我們曾述及,虛擬檔案系統之
組成架構有三層,本節所述的虛擬網路檔案系統
亦是如此,如圖 13-7 :
圖 13-7
13-8 習題 (Exercises)
1 、今日大多數電腦系統採用磁碟的原因為何?
2 、檔案系統 (File System) 最重要的兩項工作為何?
3 、檔案系統是為多層設計 (Layer Design) ,可分為那幾習?
4 、虛擬檔案系統有那三層 (Layers) ?
5 、使用者 (Users) 於目錄 (Directory) 搜尋檔案的方法有那
些?
6 、磁碟空間之主要分配方法有那些?
7 、連續空間分配之優缺點為何?
8 、鏈接空間分配的缺點為何?
9 、空白空間的管理方法那些?
第四篇
輸入輸出 (Input and Output)
第十四章
輸入輸出系統 (I/O Systems)
• 14-1 簡介
• 14-2 概念 (Overview)
• 14-3 I/O 硬體 (I/O Hardware)
• 14-3-1 匯流排 (Bus)
• 14-3-2 連接埠 (Port)
• 14-3-4 中斷 (Interrupts)
• 14-3-5 直接記憶體存取 (Direct Memory Access)
• 14-4 I/O 介面應用 (Application I/O Interface)
• 14-5 核心 I/O 次系統 (Kernel I/O Subsystem)
• 14-6 硬體 I/O 操作 (Transforming I/O to Hardware Operation)
• 14-7 串流 (Streams)
• 14-8 執行效率 (Performance)
• 14-9 習題 (Exercises)
• 14-10 範例系統程式 (Programming)
• 14-10-1 資料串流 FileInputStream 與 FileOutStream( 模擬 14-7 節 )
• 14-10-2 資料串流 DataInputStream 與 DataOutStream( 模擬 14-7 節 )
14-1 簡介
• 電腦的兩大主要工作 (Jobs) ,一是前數章所探討
的工作處理 (Job Processing) ,另一個即是 I/O 。
因 I/O 的執行速率較慢,比較上系統似用較多的
時間在處理 I/O 事宜。
• 作業系統用於 I/O 的部份,是在管理 (Manage) 與
控制 (Control) 周邊裝置與 I/O 運作,本章將探討
: (1) I/O 硬體操作 (Hardware) 、 (2) I/O 服務
(Service) 、 (3) I/O 介面 (Interface) 、 (4) I/O 運作
(Implement) 、與 (5) 設計改善 (Design) 等內容。
14-2 概念 (Overview)
• 作業系統的主要設計考量,是在如何導引控制
(Control) 與電腦連通的各個裝置。各 I/O 裝置無
論是在功能上,或是在速度上都是各不相同,因
此電腦系統也應以廣泛的能力來面對。為了慎重
處理,作業系統於其核心 (Kernel) 另設 I/O 次系
統 (Subsystem) 。
• 在力求改善 I/O 技術的今日,時而出現兩個相互
矛盾的方向: (1) 我們竭盡努力將 I/O 裝置標準化
,期使 I/O 控制能統一且簡化; (2) 另一方面,我
們又竭盡努力地開發與眾不同的 I/O 方法,以因
應新的裝置與技術。
14-3 I/O 硬體 (I/O Hardware)
• 我們常用的周邊裝置 (Devices) 有: (1) 儲存裝置
(Storage Devices) 如磁碟 (Disks) 、磁帶 (Tapes) 等
; (2) 傳輸裝置 (Transmission Devices) 如網路
(Network) 、數據機 (Modems) 、讀卡機 (Cards) 等
; (3) 人機介面 (Human Interface) 如螢幕
(Screen) 、鍵盤 (Keyboard) 、滑鼠 (Mouse) 、搖桿
(Joystick) 等。
• 無論電腦周邊設備有多廣,在概念上我們努力解
決 (1) 如何將這些裝置與電腦掛載連接
(Attached) ? (2) 如何以軟體程式 (Software) 來控
制這些硬體裝置 (Hardware) ?
14-3-1 匯流排 (Bus)
• 周邊裝置以匯流排 (Bus) 與電腦系統互通訊息
(Signals) 和資料 (Data) ,裝置連線與匯流排之接
點稱為連接埠 (Connection Ports) ,匯流排 (Bus)
架構有三類:
圖 14-3-1-1
圖 14-3-1-2
圖 14-3-1-3
圖 14-3-1-4
14-3-2 連接埠 (Port)
• 裝置與連線的接點之間設置 “連接埠 (Port)” ,通
常是由 4 個暫存器所組成,狀態暫存器 (Status) 、
控制暫存器 (Control) 、資料輸入暫存器 (Data
In) 、資料輸出暫存器 (Data Out) 。內容如下:
• 狀態暫存器 (Status)
• 控制暫存器 (Control)
• 資料輸入暫存器 (Data In)
• 資料輸出暫存器 (Data Out)
14-3-3 握手與協定 (Handshaking and
Protocol)
• 為了容易解說,我們以前述 14-3-1 節之輪詢型
(Pulling) 為例,本機系統 (Host) 與裝置控制器 D1
之間,如何互通訊息?如圖 14-3-3-1 :
圖 14-3-3-1
14-3-4 中斷 (Interrupts)
• 如圖 14-3-4-1 ,在硬體機制上, CPU 與各裝置控
制器之間,設有一中斷需求線 (Interrupt Request
Line) 。系統執行中斷之步驟如下:
圖 14-3-4-1
圖 4-3-4-2
14-3-5 直接記憶體存取
(Direct Memory Access)
• 為了資料傳遞的靈活性與方便性,如果當時: (1)
CPU 非常忙碌; (2) 傳送大量資料; (3) 確定無傷
害系統的資料,資料可不經過 CPU 之帶領,直接
從儲存裝置 ( 如磁碟 ) 傳遞至主記憶體 (Main
Memory) 之指定位置,如是之資料傳遞是謂 “直
接記憶體存取 (DMA Direct Memory Access)” 。依
圖 14-3-5-1 ,直接記憶體之執行步驟如下:
圖 14-3-5-1
14-4 I/O 介面應用
(Application I/O Interface)
• I/O 裝置種類繁多,如果要每種均兼顧,系統必將
龐大且不易管理;如果不每種兼顧,則又將無法
有效執行。為了解決如是問題,我們將作業系統
之 I/O 部份,如圖 14-4-1 作分層設計 (Multi−Level
Design) 。
圖 14-4-1
圖 14-4-2
14-5 核心 I/O 次系統
(Kernel I/O Subsystem)
• I/O 工作範圍廣泛,作業系統於其核心 (Kernel) 另
設置核心 I/O 次系統 (Kernel I/O Subsystem) ,以方
便管理排程 (Scheduling) 、緩衝 (Buffering) 、快取
(Caching) 、串置執行 (Spooling) 等 I/O 事項。
14-6 硬體 I/O 操作
(Transforming I/O to Hardware Operation)
• 從應用程式 (Application) 提出 I/O 需求 (I/O
Request) ,到從磁碟 (Disk) 讀取檔案,其間過程
如前述圖 14-4-1 ,穿過 I/O 次系統層 (I/O
Subsystem Level) 、裝置驅動程式層 (Device Driver
Level) 、裝置控制器層 (Device Controller Level) 、
到硬體裝置。如圖 14-6 ,我們可觀查一個 I/O 需
求 (I/O Request) 的執行週期 (Life Cycle) :
圖 14-6
14-7 串流 (Streams)
• 當使用者行程 (User’s Process) 與裝置 ( 如磁碟 )
作資料傳遞時,系統將資料安排成串流形態,如
圖 14-7 ,由三部份組成:
• (1) 串流頂前端 (Stream Head)
• (2) 驅動尾後端 (Driver End)
• (3) 串流模型 (Stream Modules)
圖 14-7
14-8 執行效率 (Performance)
• 系統之執行效率,對 I/O 有其深重的影響, CPU 擔負著執行裝置驅動
程式碼 (Device Driver Codes) 、與 I/O 排程 (Schedule) ;今日新型的電
腦雖然在一秒內可同時執行上千個中斷常式 (Interrupt Routines) ,中
斷仍然是電腦系統的一項重大負擔;網路資料之傳遞是 I/O 項目之一
,其是否傳遞流暢亦影響執行效率。為了改善 I/O 執行效率,系統應
:
• 1 、如 5-3-3 節,減少內文切換次數 (Context Switches) 。
• 2 、減少在記憶體中複製資料的次數。
• 3 、降低中斷執行頻率 (Frequency) ,盡量執行大量資料傳遞 (Large
Transfer) 、靈巧控制器 (Controller) 、聰明輪詢 (Polling) 。
• 4 、使用 DMA ,增加同步傳遞資料的機會。
• 5 、盡可能將行程關鍵資訊 (Processing Primitives) 推向硬體,使裝置
控制器 (Device Controller) 更能配合 CPU 與匯流排 (Bus) 之操作。
• 6 、平衡 CPU 、記憶體、匯流排、 I/O 之執行,如果其中有一項特別
熱烈,均將導致其他項目的怠惰 (Idleness) ,亦即降低系統效率。
圖 14-8
14-9 習題 (Exercises)
1 、在力求改善 I/O 技術的今日,出現那兩個相互矛盾的方向?
2 、何謂匯流排 (Bus) 之雛菊鏈型 (Daisy Chaining) 架構?其優缺點為何?
3 、何謂匯流排 (Bus) 之輪詢型 (Pulling) 架構?其優缺點為何?
4 、何謂匯流排 (Bus) 之獨立型 (Independent) 架構?其優缺點為何?
5 、連接埠 (Port) 是由那 4 個暫存器所組成?
6 、何謂不可遮罩中斷 (Nonmaskable Interrupt) / 遮罩中斷 (Maskable
Interrupt) ?
7 、使用直接記憶體存取 (DMA) 的時機為何?
8 、何謂 I/O 快取 (Caching) ?
9 、試請列出 I/O 需求 (I/O Request) 的執行週期 (Life Cycle) 。
10 、系統如何改善 I/O 執行效率?
第十五章 大量儲存結構 (Mass Storage Structure)
• 15-1 簡介
• 15-2 磁碟結構 (Disk Structure)
• 15-3 磁碟排程 (Disk Scheduling)
• 15-4 磁碟管理 (Disk Management)
• 15-5 置換空間管理 (Swap Space Management)
• 15-6 磁碟矩陣結構
• 15-7 磁碟掛載應用 (Disk Attachment)
• 15-8 穩定儲存應用 (Stable Storage Implementation)
• 15-9 習題 (Exercises)
15-1 簡介
• 就檔案系統 (File System) 來言,我們曾於第十二
章探討過使用者與檔案系統間之關係,於十三章
探討過作業系統與檔案間之運作關係,於本章,
我們將討論檔案與儲存裝置的問題,特別是磁碟
(Disk) 之管理。
15-2 磁碟結構 (Disk Structure)
• 新型磁碟機猶如是一個大型的一維資料矩陣 (One
Dimensional Array) ,矩陣元素由邏輯區塊 (Logical
Block) 組成,亦即最小的傳輸單位 (Unit of
Transfer) 。一個邏輯區塊通常有 512 個位元組
(Bytes) ,少數電腦系統採用 1,024 個位元組。
• 在實體 (Physical) 上,如圖 15-2 ,磁碟以磁區
(Sector) 、磁軌 (Track) 、磁柱 (Cylinder) 為儲存位
置單元。磁區 0 在最外圈磁軌之起點,多個磁片
之相對磁軌組成磁柱。
圖 15-2
(a) (b)
15-3 磁碟排程 (Disk Scheduling)
• 作業系統如何安排存取磁碟之資料,將影響系統
之執行效率。如圖 15-3 ,通常存取磁碟資料可分
4 個時間步驟:
• (1) 磁軌搜尋時間 (Seek Time)
• (2) 旋轉延遲時間 (Rotational Latency)
• (3) 資料傳輸時間 (Transfer Time)
• (4) 綜合執行時間 (Bandwidth Scheduling)
圖 15-3
15-3-1 先到先執行 (FCFS Scheduling)
• 設有一範例,磁頭當時位置在 50 ,磁碟等待佇列
(Waiting Queue) 內之資料磁柱 (Cylinder) 次序
(Order) 為 ( 或稱資料點次序 ) :
• 95, 155, 30, 120, 10, 125, 65, 70
• 若以先到先執行排程 (FCFS First−Come−First−Serve
Scheduling) 執行,磁頭 (Disk Head) 掃過磁碟資料
點的過程將如圖 15-3-1 :
圖 15-3-1
15-3-2 最短搜尋時間先執行
(SSTF Scheduling)
• 每當磁頭存取一個磁柱資料點之後,立刻評估下
一個資料點,選擇最近距離之資料點執行之,此
為 “最短搜尋時間先執行排程 (SSTF
Shortest−Seek−Time−First Scheduling)” 。圖 15-3-2
為 SSTF 之執行範例:
圖 15-3-2
15-3-3 掃瞄排程 (Scan Scheduling)
• 將磁頭從當時位置向磁碟的一端掃瞄,再向另一
端掃瞄,當經過各資料點時,執行資料存取,此
為 “掃瞄排程 (Scan Scheduling)” 。圖 15-3-3 為
Scan 之執行範例:
圖 15-3-3
15-3-4 C− 掃瞄排程 (C−Scan Scheduling)
• 將磁頭從當時位置向磁碟的一端掃瞄,再從另一
端開始掃瞄,避開重複資料區,當經過各資料點
時,執行資料存取,此為 “ C− 掃瞄排程 (C−Scan
Scheduling)” 。圖 15-3-4 為 C−Scan 之執行範例:
圖 15-3-4
15-3-5 掃瞄判斷排程 (Look Scheduling) 與
C− 掃瞄判斷排程 (C−Look Scheduling)
• 為了避免無謂的端點掃瞄,我們將 Scan Scheduling 改善為 Look
Scheduling ,將 C−Scan Scheduling 改善為 C−Look Scheduling( 如圖 15-
3-5) :
圖 15-3-5
15-3-6 磁碟排程分析
(Disk Scheduling Selection)
• 任何事均不可能完美無缺,電腦系統的各項措施也是一樣
,一定有其優點與缺點,我們可選擇適當的時機,盡可能
利用其優點屏棄其缺點。
• 當磁碟資料點之密度與存取頻率均高 (Heavy Load) 時,我
們採用 FCFS ,以避免有餓死 (Starvation) 情況產生。
• 如果存取頻率很低,許久才有一個資料點出現,此時不論
有多少排程方法,其作為均如 FCFS 排程。
• 檔案空間分配 (File Allocation) 也是影響執行效率之一項因
素 ( 如 13-5 節 ) ,如果是連續空間分配 (Contiguous
Allocation) ,即多是鄰近資料點,將節省磁頭掃除的時間
;如果是鏈接空間分配 (Linked Allocation) 或是索引空間
分配 (Index Allocation) ,資料點分散各個角落,將增加磁
頭掃瞄的時間。
15-4 磁碟管理 (Disk Management)
• 於前數章節,我們已探討許多關於磁碟的問題,
本節將再繼續討論磁碟的管理事項,如磁碟格式
化 (Disk Formatting) 、起動區塊 (Boot Block) 、與
損壞區塊 (Bad Blocks) 等之管理。
15-4-1 磁碟格式化 (Disk Formatting)
• 一個全新的磁碟,除了佈滿磁性物質 (Magnetic
Material) 外,尚無法作為儲存記憶體
(Memory) ,必須要劃分出儲存單元磁區
(Sectors) ,才可配合磁碟控制器 (Disk Controller)
讀寫資料,如此劃分之作為是謂 “低階格式化
(Low Level Formatting)” 或稱 “實體格式化 (Physical
Formatting)” 。
15-4-2 起動區塊 (Boot Blocks)
• 當開啟電源 (Power Up) 啟動電腦、或重新啟動
(Reboot) 電腦時,開機程式 (Bootstrap Program)
亦隨之起動,由開機程式初始 (Initializing) 作業系
統,包括 CPU 的各暫存器 (Registers) 、裝置控制
器 (Device Controllers) 、與主記憶體 (Main
Memory) 等。
15-4-3 損壞區塊 (Bad Blocks)
• 一個磁碟會因雜質或刮傷而損壞,遭受損壞的區
塊稱為 “損壞區塊 (Bad Block)” 。如果損壞過於嚴
重,整個磁碟應棄換不用;如果是非常輕微的損
壞,則可跳過損壞區塊,繼續使用其他良好區塊
。
15-5 置換空間管理
(Swap Space Management)
• 置換空間可設置於磁碟的檔案系統內 (File
System) 、或設置於磁碟的獨立分割內
(Partition) 。 (1) 若設置於檔案系統內,可將置換
資料以檔案形態處理,其優點是簡單且易執行;
缺點是要依檔案方式處理 ( 如目錄、空間分配
等 ) ,將降低執行速率。 (2) 若設置於獨立分割內
,其優點是因無檔案系統牽拌,執行迅速;缺點
是內部碎片 (Internal Fragmentation) 將漸漸擴大
,影響執行效率。
15-6 磁碟矩陣結構
• 今日磁碟之開發,體積愈來愈精巧,價格愈來愈
便宜,電腦系統使用多個磁碟並不會付出特別的
代價。將多個磁碟組織成 “磁碟矩陣 (RAID
Redundant Arrays of Inexpensive Disks)” ,一則可增
加儲存資料的安全可信度 (Reliability) ,一則可以
並行方式 (Parallelism) 增加執行速率。
15-6-1 安全可信度 (Reliability)
• 我們可以多個磁碟執行鏡影 (Mirroring) 操作,同
時將資料寫入兩個磁碟,亦即一個邏輯磁碟
(Logical Disk) 由兩個實體磁碟 (Physical Disk) 組成
。當一個磁碟受損,另一個磁碟可將資料重新補
救。
15-6-2 並行方式 (Parallelism)
• 既然電腦系統已經使用多個磁碟,我們可將其安
排成並行處理 (Parallelizing) ,以節省執行時間,
理論上,假設 1 個資料 1 個磁碟的存取時間為
t ;則 1 個資料 n 個磁碟的並行存取時間將為 t /
n 。
• 如果資料是以位元組 (Byte) 為單位,每一個位元
組有 8 個位元 (Bits) ,我們可以八個磁碟對應分置
這些資料,第 1 個位元分置於第 1 個磁碟,第 2
個位元分置於第 2 個磁碟,以此類推。當八個磁
碟同時並行存取資料時,其速度將較一個磁碟快
8 倍。以位元 (Bit) 為分置單位者是謂 “位元階層
分置 (Bit Level Striping)” ,以區塊 (Block) 為分置
單位者是謂 “區塊階層分置 (Block Level
Striping)” 。
15-6-3 磁碟矩陣階層 (RAID Level)
• 於 15-6-1 節,我們談到鏡影 (Mirroring) 操作,將
資料同時寫入兩個磁碟,雖然有極佳的安全可信
度,但也付出了相當的代價。除此之外,還可使
用其他我們熟悉的偵錯方式,如檢查碼 (Parity
Check Codes) 、漢明碼 (Hamming Codes) 等,將這
些方式應用在磁碟矩陣 (RAID) ,可類分成數個如
下之使用階層:
圖 15-6-3-0
圖 15-6-3-1
圖 15-6-3-2
圖 15-6-3-4
圖 15-6-3-5
圖 15-6-3-6
16-6-4 磁碟矩陣階層分析 (Selecting a RAID Level)
• RAID 0 將所有的磁碟都用於儲存資料,優點是使用效率最高,又因是分置
(Striping) 儲存,可執行同步存取,增加執行速率;缺點是一旦有磁碟損壞,
即無補救之途徑。
• RAID 1 將資料鏡影 (Mirroring) 兩個磁碟,優點是當有磁碟損壞時,可立刻以
另一個磁碟的資料修補之,安全可靠性最高;缺點是以兩倍數量的磁碟儲存
資料,使用效率最低,又因未安排分置儲存,無法執行同步存取。
• RAID 0+1 將資料先分置於一組磁碟,再鏡影複製於另一組磁碟,優點是因是
分置 (Striping) 儲存,可執行同步存取,且當有磁碟損壞時,可立刻以另一個
磁碟的資料修補之,安全可靠性最高;缺點是以兩倍數量的磁碟儲存資料,
使用效率最低。
• RAID 1+0 將資料鏡影寫入兩組磁碟,再將第一組資料分置 (Striping) ,優點是
以第一組磁碟執行同步存取,以第二組磁碟作原始資料修補;缺點是以兩倍
數量的磁碟儲存資料,使用效率最低。理論上 RAID 1+0 較 RAID 0+1 更安全可
靠。
• RAID 2 使用漢明碼概念,優點是可在能力範圍內自動修補錯誤,安全可靠性
與 RAID 1 相等,且使用數量較少的磁碟執行修補任務。
• RAID 3 使用單一檢查碼概念,優點是僅以一個磁碟執行偵錯任務,節省資源
;缺點是僅能偵錯,無法修補錯誤。
• RAID 4 與 RAID 3 的意義相同,不同者是以區塊 (Block) 為分置單位,可用於大
量資料的傳遞。
• RAID 5 與 RAID 4 的意義相同,不同者是將資料與檢查碼依序分置 (Striping) 於
各磁碟,以免一個磁碟損壞,所有檢查碼均遺失。
• RAID 6 採用 Reed−Solomon Codes 方法,目前已少有電腦系統採用。
15-7 磁碟掛載應用 (Disk Attachment)
• 電腦系統與磁碟間之掛載用可類分為: (1) 本機
掛載儲存裝置 (Host Attached Storage) 、 (2) 網路
掛載儲存裝置 (Net Work Attacked Storage) 、 (3)
儲區網路 (Storage Area Network) 。
15-7-1 本機掛載儲存裝置
(Host Attached Storage)
• 系統經過 I/O ,對掛載於本機的裝置執行資料存
取,依 RAID 概念,今日微電腦系列常使用的磁碟
組織有 IDE 與 SCSI ,其結構如圖 15-7-1 。
圖 15-7-1
15-7-2 網路掛載儲存裝置
(Network Attacked Storage)
• 電腦系統可經過網路,對儲存裝置存取資料,如
此作為是謂 “網路掛載儲存裝置 (NAS Network
Attached Storage)” ,如圖 15-7-2 , Servers 對 NAS
存取資料, Clients 對 NAS 存取資料。
圖 15-7-2
15-7-3 儲區網路
(Storage Area Network)
• 網域是否暢通,是影響網路操作效率的重要因素
,網域資源非常珍貴,盡可能要屏除不必要的浪
費,如前節所述之 NAS ,在使用上將與
Server−Client 競爭網域頻寬,影響網路傳輸效率。
圖 15-7-3
15-8 穩定儲存應用
(Stable Storage Implementation)
• 一個良好的電腦系統應具有穩定的儲存裝置,亦
即有一個不會產生錯誤的儲存系統。當一個磁碟
有錯誤發生時,系統立即安排:
• (1) 將另一個儲存相同資料的鏡影磁碟取代該受損
磁碟;
• (2) 使用除錯碼技術 ( 如漢明碼等 ) 將錯誤修補之
。
• 前述 15-6-3 節所描述之 RAID 即是維護穩定儲存的
良好儲存裝置。
15-9 習題 (Exercises)
1 、於磁碟運用,何謂等角速率 (CAV Constant Angle
Velocity) ?
2 、於磁碟運用,何謂等線性速率 (CLV Constant Linear
Velocity ?
3 、通常存取磁碟資料有那 4 個時間步驟?
4 、一個 I/O 需求 (I/O Request) 內容應包含那些資訊?
5 、 FCFS 的優缺點為何?
6 、 FCFS 的優缺點為何?
7 、 Scan 的優缺點為何?
8 、 C−Scan 的優缺點為何?
9 、掃瞄判斷排程 (Look Scheduling) 與 C− 掃瞄判斷排程
(C−Look Scheduling) 的優缺點為何?
10 、置換空間設置於磁碟的檔案系統內 (File System) 、或設
置於磁碟的獨立分割內 (Partition) 。兩者有何差別?
11 、試請分析 RAID 各階層。
12 、何謂 IDE ?
13 、何謂 SCSI ?
第五篇
分散式系統 (Distributed System)
第十六章
分散式系統結構 (Distributed System Structures)
• 16-1 簡介
• 16-2 概念 (Background)
• 16-2-1 分散式系統之優點 (Advantages of Distributed Systems)
• 16-2-2 分散式作業系統之類型 (Types of Distributed Operating System)
• 16-3 節點連接 (Topology)
• 16-4 網路通訊 (Communication)
• 16-4-1 名稱解析 (Naming Resolution)
• 16-4-2 路由策略 (Routing Strategies)
• 16-4-3 連接策略 (Connection Strategies)
• 16-4-4 衝突避免 (Contention)
• 16-5 網路通訊協定 (Communication Protocols)
• 16-6 網路故障處理 (Robustness)
• 16-7 習題 (Exercises)
• 16-8 範例系統程式 (Programming)
• 16-8-1 網路節點連接 ( 模擬 16-3 節 )
• 16-8-2 網路節點連接 ( 模擬 16-4-1 節 )
• 16-8-3 網路線路 / 資料交換 ( 模擬 16-4-3 節 )
16-1 簡介
• 分散式系統 (Distributed System) 是多個處理器
(Processors) 的組合,各處理器散置於各不同地區
,彼此間互不共享記憶體,各有其自己的記憶體
(Memory) ,以地區網路 (LAN Local Area Network)
或廣域網路 (WAN Wide Area Network) 互通訊息。
本章將探討分散式系統之結構、及使用之網路。
16-2 概念 (Background)
• 分散式系統 (Distributed System) 是多個處理器
(Processors) 的組合,從小型的手持微電腦、個人
電腦、到大型的工作站,散置於各不同地區
(Sites) ,由網路互相連通。
16-2-1 分散式系統之優點
(Advantages of Distributed Systems)
• 建置分散式系統至少有四個理由:資源分享
(Resource Sharing) 、計算迅速 (Computation
Speedup) 、可靠性佳 (Reliability) 、與便利通訊
(Communication) 。
• 1 、資源分享 (Resource Sharing)
• 2 、計算迅速 (Computation Speedup)
• 3 、可靠性佳 (Reliability)
• 4 、便利通訊 (Communication)
16-2-2 分散式作業系統之類型
(Types of Distributed Operating System)
• 本節將介紹兩類網路導向作業系統 (Network
Oriented Operation System) : (1) 網路作業系統
(Network Operating System) 與 (2) 分散式作業系
統 (Distributed Operation System) 。在網路運用上
,前者較後者容易操作;在存取儲存裝置上,後
者較前者容易操作。
• 1 、網路作業系統 (Network Operating System)
• 2 、分散式作業系統 (Distributed Operation
System)
16-3 節點連接 (Topology)
• 分散式系統是將散置於各處的處理器 (Processors)
以網路連接,互通訊息。其中有許多連接方式,
各有其優缺點,我們考量的重點有:
• (1) 實體安裝代價 (Installation Cost)
• (2) 通訊時間代價 (Communication Cost)
• (3) 執行方便考量 (Availability)
圖 16-3-1
圖 16-3-2
圖 16-3-3
圖 16-3-4
圖 16-3-5
16-4 網路通訊 (Communication)
• 當探討網路通訊,我們須考量: (1) 名稱解析
(Naming Resolution) ,兩個行程 (Processes) 如何
在廣大的網域中互相定址對方? (2) 路由策略
(Routing Strategies) ,如何在網域中選擇傳遞資料
之途徑? (3) 連接策略 (Connection Strategies) ,
網路中如何安排多個行程同時傳遞資料? (4) 衝
突避免 (Contention) ,當發生網路上爭議的問題時
,如何解決?
16-4-1 名稱解析 (Naming Resolution)
• 網路上兩個行程 (Processes) 若要互通訊息,首先
須定址對方,知道對方的位置之後,才能將資料
傳遞給對方,或從對方下載資料。網路上電腦節
點之名稱即是該節點的地址,通常有兩種表示方
式:識別地址碼 (Host Identifier) 、與識別名稱
(Host Name) 。
16-4-2 路由策略 (Routing Strategies)
• 當網路中兩節點相互通訊,其間安排資料傳遞的
途徑是謂 “路由策略 (Routing Strategies)” 。每一個
網路地區均設有路由表 (Routing Table) ,詳載資料
可傳送的各種途徑 (Alternative Paths) 、及傳遞之
時間代價 (Cost) 等資訊 (Information) ,表中內容
隨周遭環境之變化而自動更新。資料傳遞方式可
概分為: (1) 固定路徑 (Fixing Routing) 、 (2) 虛擬
路徑 (Virtual Routing) 、 (3) 機動路徑 (Dynamic
Routing) 。
圖 16-4-2
16-4-3 連接策略 (Connection Strategies)
• 當網路上兩個行程 (Processes) 相互通訊時,兩行程間建
立起通訊管道 (Communications Sessions) ,在此時段期間
,該兩行程佔用連通線 (Connection Lines) 以交換資料
(Switching Data) ,資料交換完畢後,再釋出連通線供其他
行程使用。交換資料的方式可類分為:線路交換 (Circuit
Switching) 、資料交換 (Message Switching) ,與封包交換
(Packet Switching) 。
• 1 、線路交換 (Circuit Switching)
• 2 、資料交換 (Message Switching)
• 3 、封包交換 (Packet Switching)
16-4-4 衝突避免 (Contention)
• 網路上電腦節點眾多,每條連線總有多個節點同
時使用,因此傳遞的資料時有衝突混亂,如果不
設立防範機制,將無法順利傳遞資料。目前網路
上常用的防範機制有:載體偵測法 (CSMA Carrier
Sense with Multiple Access) 、衝突警告法 (CD
Collision Detection) 、與輪序傳遞法 (Token
Passing) 。
• 1 、衝突偵測法 (CSMA)
• 2 、衝突警告法 (CD Collision Detection)
• 3 、令牌傳遞法 (Token Passing)
16-5 網路通訊協定
(Communication Protocols)
• 網路上電腦節點眾多且資料格式不盡相同,強迫
互相傳遞資料,將無法順利執行。我們必須設定
一個各節點都可接受的協定 (Protocol) ,讓所有節
點都依協定的要求遂行資料傳遞,如此才可順利
執行。
• 網路通訊協定 (Communication Protocols) 是以多
階層 (Multiple Layers) 方式設計,網域網路採用國
際標準組織 (ISO International Standards
Organization) 所提出的協定 (Protocol) ,其模型如
圖 16-5-1 :
圖 16-5-1
圖 16-5-2
圖 16-5-3
16-6 網路故障處理 (Robustness)
• 網路節點眾多,發生故障的機會更是稀鬆平常,如連線故
障 (Failure of Link) 、電腦節點故障 (Failure of Site) 、資料
遺失 (Loss of Message) 等。
• 為了維護網路隨時保持良好狀態,網路應有能力執行:偵
測故障 (Detect Failure) 、重組系統 (Reconfiguration) 、與
修補故障 (Recovery from Failure) 。
• 1 、偵測故障 (Detect Failure)
• 2 、重組系統 (Reconfiguration)
• 3 、修複故障 (Recovery from Failure)
16-7 習題 (Exercises)
1 、分散式系統有那些優點?
2 、試請比較網路作業系統 (Network Operating System) 與分散式作業系
統 (Distributed Operation System) 之優缺點?
3 、常用的連線形式有那些?
4 、當某地區電腦節點 A 要定址另一節點 B 時,其作業系統要求網址解
析的執行步驟為何?
5 、於區域網路內,各節點與閘道節點 (Gateway) 之間以何種方式連接
?
6 、何謂線路交換 (Circuit Switching) ?
7 、何謂資料交換 (Message Switching) ?
8 、何謂封包交換 (Packet Switching) ?
9 、試請敘述國際標準組織 (ISO International Standards Organization) 所
提出的網路協定 (Protocol) 各層之內容。
10 、 UDP 與 TCP 有何差異?
11 、當網路某裝置發生故障時,我們如何偵測故障?
第十七章 分散式檔案系統
(Distributed File System)
• 17-1 簡介
• 17-2 概念 (Background)
• 17-3 名稱與通透性 (Naming and Transparency)
• 17-3-1 名稱結構 (Naming Structure)
• 17-3-2 名稱方案 (Naming Schemes)
• 17-4 遠端檔案存取 (Remote File Access)
• 17-4-1 快取方案 (Caching Scheme)
• 17-4-2 快取位置 (Cache Location)
• 17-4-3 更新快取資料 (Cache Update)
• 17-4-4 一致性 (Consistency)
• 17-4-5 快取與遠端服務之比較 (
• 17-5 檔案複製 (File Replication)
• 17-6 習題 (Exercises)
• 17-7 範例系統程式
• 17-7-1 遠端檔案儲存 ( 模擬 17-4 節 )
• 17-7-2 遠端檔案複製 ( 模擬 17-5 節 )
17-1 簡介
• 於前一章我們曾討論網路結構 (Distributed System
Structure) 與通訊協定 (Communication
Protocols) ,於 13 章我們曾討論檔案系統運作
(File System Implement) ,本章我們將結合此兩章
之內容,探討檔案系統如何在網路上運作,亦即
如何執行分散式檔案系統 (DFS Distributed File
Systems) ?
17-2 概念 (Background)
• 網路上蘊藏著許多服務項目 (Services) ,電腦節點
亦各有其不同之工作地位,伺服端電腦節點
(Server) 提供軟體服務機制 (Software Service) ;客
戶端電腦節點 (Clients) 連通服務機制,以網路作
業系統作為服務介面 (Interface) ,執行有關之服
務項目。
17-3 名稱與通透性 (Naming and Transparency)
• 使用者 (Users) 存取邏輯資料 (Logical Data) 的切入點是檔
案名稱 (File Name) ,在單機應用上,檔案名稱即是儲存檔
案資料的起始地址,如 12-2-1 節曾述,使用者 (Users) 使
用檔案名稱 (File Name) ,例如 testFile.java ;電腦系統使
用檔案識別碼 (File Identifier) ,例如 1234 。在網路應用上
,檔案儲存於網路某個電腦節點,故檔案名稱應包括電腦
節點名稱、與檔案本身名稱,如 16-4-1 節曾述,使用者
(Users) 使用檔案名稱 (File Name) ,例如 chia.tf.edu.tw /
testFile.java ;電腦系統使用檔案識別碼 (File Identifier) ,
例如 163.15.40.243 / testFile.java 。
• 讀者有經驗,在單機應用上,當編輯完成一個檔案後,我
們設定檔案名稱再將其存檔,此時我們知道的是一個已建
立的檔案,我們不知道檔案的儲存地址,也沒必要知道,
只要有名稱我們即可對該檔案執行資料存取。以此類推網
路檔案系統,我們不必知道檔案儲存在那一個節點,只要
知道檔案名稱,即可對該檔案執行存取資料,如此作為是
謂 DFS 之 “透通性 (Transparency)” 。
17-4 遠端檔案存取 (Remote File Access)
• 假設 DFS 以前節所述之名稱方案 (Naming Scheme)
定名,使用者透過遠端服務機制 (Remote Service
Mechanism) 存取遠端檔案,提出之存取需求
(Request) 在 DFS 之導引下抵達伺服端 (Server) ,
DFS 將需求結果從伺服端傳回至客戶端之使用者
,如此作為是謂 “遠端檔案存取 (Remote File
Access)” 。其中使用的遠端程序呼叫 (RPC Remote
Procedure Call) 與 4-4 節存取磁碟資料 (Access
Disk) 之系統呼叫 (System Call) 類似,不同者前者
須經過網域節點之定位。
圖 17-4
17-5 檔案複製 (File Replication)
• 檔案複製 (File Replication) 是將網路某節點之檔案資料複
製至其他網路節點,以備該節點損毀時,仍能保存資料。
• 為了方便使用者 (User) 使用,如 17-3-1 節曾述及之名稱
透通性 (Naming Transparency) ,作業系統安排檔案複製透
通性 (Replication Transparency) ,使用者只關心檔案名稱
,不必知道複製檔案的位置 (Location) ;複製檔案的位置
由系統導引安排。
• 檔案複製的優點是增加可靠性 (Reliability) ,不會因硬體損
壞而遺失資料;其缺點是一旦更新 (Update) 資料時,需
連絡所有的複製檔案同步更新,系統將付出可觀之代價。
17-6 習題 (Exercises)
1 、檔案系統之軟體本質服務項目有那些?
2 、何謂檔案名稱之透通性 (Transparency) ?
3 、何謂位置透通性 (Location Transparency) ?
4 、何謂位置獨立性 (Location Independency) ?
5 、 DFS 設定檔案名稱有那三種定名方案?
6 、快取資料的儲存位置可從那四個觀點來考量?
7 、客戶端將更新資料傳送給伺服端的時機有那三
種?
8 、試述檔案複製的缺點。
第十八章 分散式系統之整合
(Distributed Coordination)
• 18-1 簡介
• 18-2 事件序列 (Event Ordering)
• 18-3 互斥 (Mutual Exclusion)
• 18-4 緊密聚合 (Atomicity)
• 18-5 死結處理 (Deadlock Handling)
• 18-6 習題 (Exercises)
• 18-7 範例程式
• 18-7-1 網路集中 / 協調 ( 模擬 18-3-1 節 )
18-1 簡介
• 於第八章我們曾討論在單機系統環境 (Computer System
Environment) 下,一個行程 (Process) 之執行流程,也討
論多個行程之並行流程,其中如並行條件 (Concurrency
Conditions) 、臨界區 (Critical Section) 、信號 (Semaphores)
等問題,本章將以同樣的問題觀點,在分散式系統環境
(Distributed System Environment) 下,討論多個行程之並行
流程。
• 於第九章我們曾討論在單機系統環境 (Computer System
Environment) 下,死結定義 (Deadlock Definition) 、死結預
防 (Deadlock Prevention) 、死結避免 (Deadlock
Avoidance) 、死結偵測 (Deadlock Detection) 、死結消弭
(Recovery from Deadlock) 等問題,本章亦將以同樣的問題
觀點,在分散式系統環境 (Distributed System Environment)
下,討論死結的問題。
18-2 事件序列 (Event Ordering)
• 於 4-2-1 節曾述及,我們在編輯器上寫的程式碼是
謂 “程式 (Program)” ;當程式上的指令被 CPU 讀
取執行時是謂 “行程 (Process)” ;行程流程中執行
的事項是謂 “事件 (Event)” 。如圖 18-2 ,行程 P
依序執行 p1 、 p2 、…、 pn 等事件 (Events) 。
圖 18-2
18-2-1 先後關係式 (Happened−Before
Relation)
• 一個執行於集合 (Sets) S 之關式元 (Relation) R 被
稱為 “偏序 (Partial Order)” ,如果該 R 滿足:
•
• (1) 反身律 (Reflexive) :即 aRa ,其中 a 是 S 之任
一元素 (Element) ;
• (2) 反對稱律 (Anti-Symmetric) :即 當有 aRb 且
bRa 時,則有 a = b ;
• (3) 遞移律 (Transitive) :即 當有 aRb 且 bRc 時
,則有 aRc 。
圖 18-2-1-1
圖 18-2-1-2
18-2-2 應用 (Implementation)
• 在電腦系統操作中,有許多執行項目需要事件之
序列資料,如資料更新與複製、資源佔用與釋放
、資料輸出與接收等。於單機系統可以輕易地辨
識先後次序,但於網路多機系統却不易辨識。
• 於前節我們己粗略探討事件序列,本節將作更進
一步的實用探討。我們記錄每一事件的發生時間
,如圖 18-2-2-(a) , p1 為 100 、 q1 為 100 、 q2
為 200 ,此為 “時間戳記 (TS Timestamp) 。
圖 18-2-2
18-3 互斥 (Mutual Exclusion)
• 我們曾於第八章探討單機之互斥操作,本節將探
討在分散式系統環境 (Distributed System
Environment) 下,多個行程之互斥操作。
• 在分散式系統環境 (Distributed System
Environment) 下,互斥 (Mutual Exclusion) 之定義
(Definition) 是不允許有兩個行程 (Processes) 同時
在臨界區 (Critical Section) 操作。在執行上,可類
分為集中式執行 (Centralized Approach) 、與分散
式執行 (Distributed Approach) 。
圖 18-3-1
圖 18-3-2
圖 18-4
18-4 緊密聚合 (Atomicity)
• 有些工作必須緊密聚合 (Atomicity) 連續地執行,
在單機系統 (Computer System) 上並不困難,例如
執行批次工作 (Batch) 。但在分散式系統
(Distributed System) 上,却不易整合執行。假設
有一個工作 (Transaction) T ,具有兩個特性: (1)
龐大複雜,必須由多個電腦分擔處理; (2) 因內
容需要,必須緊密聚合連續地執行。此時我們必
須安排分散式之緊密聚合執行 (Distributed
Atomicity) 。
圖 18-4-1
18-5 死結處理 (Deadlock Handling)
• 我們曾於第九章詳細探討單機系統 (Computer
System) 之死結處理,其中之死結預防 (Deadlock
Prevention) 、死結避免 (Deadlock Avoidance) 、死
結偵測 (Deadlock Detection) 、死結消弭 (Recovery
from Deadlock) 等之觀點仍可用於分散式系統
(Distributed System) 。
圖 18-5-2-1
圖 18-5-2-2
圖 18-5-2-3
圖 18-5-2-1-1
圖 18-5-2-1-2
圖 18-5-2-2-1
圖 18-5-2-2-2
18-6 習題 (Exercises)
1 、何謂偏序 (Partial Order) 關係?
2 、試述 “先後關係式” 之特性。
3 、在分散式臨界區互斥之操作流程中,其執行困擾處為何
?
4 、在執行互斥流程中,何謂令牌傳遞執行 (Token Passing
Approach) ?
5 、令牌傳遞法 (Token Passing Approach) 須注意那些事項?
6 、何謂兩階段協定 (2PC Two−Phase Commit Protocol) ?
7 、 2PC 故障處理之方式為何?
8 、於時間戳記優先演算法 (Timestamp Priority Algorithm) 中
,何謂消極方式 (Wait−die Scheme) ?
9 、死結處理之時間戳記優先演算法中,何謂積極方式
(Wound Wait Scheme) ?
10 、死結處理之集中式執行 (Centralized Approach) 有那三種
檢視時間點?
第六篇
保護與安全 (Protection and
Security)
第十九章
保護 (Protection)
• 19-1 簡介
• 19-2 保護的目的 (Goal of Protection)
• 19-3 保護之定義域 (Protection Domain)
• 19-3-1 定義域結構 (Domain Structure)
• 19-3-2 定義域代表 (Domain Representations)
• 19-4 矩陣執行 (Access Matrix)
• 19-4-1 複製功能 (Copy)
• 19-4-2 擁有者功能 (Owner)
• 19-4-3 控制功能 (Control)
• 19-5 矩陣應用 (Implementation Matrix)
• 19-5-1 全域表格 (Global Table)
• 19-5-2 物件權限串列 (Access Lists for Objects)
• 19-5-3 定義域能力串列 (Capability Lists for Objects)
• 19-6 習題 (Exercises)
• 19-7 範例系統程式 (Programming)
• 19-7-1 矩陣應用 ( 模擬 19-5 節 )
19-1 簡介
• 系統中、通常都有多個行程 (Processes) 正在執行
,為了讓這些行程得以在不受干擾的環境下執行
工作,系統應有一些保護措施 (Protections) 。只
有系統允許 (Proper Authorization) 的行程,才能
使用特定的檔案 (File) 、記憶體
(Memory) 、 CPU 、或系統資源 (Resource) 。
• 系統保護機制控制 (Controlling) 程式
(Programs) 、行程 (Processes) 、或使用者 (Users)
等對資源的使用,其中可類分為保護 (Protection)
與安全 (Security) 。保護是維護行程不受干擾地使
用特定資源;安全是維護資料或資源不被外力侵
入而改變原有之意義。
19-2 保護的目的 (Goal of Protection)
• 隨著電腦的精進發展,系統保護的需求也隨之更為重要,
如同前數章曾述及之多程式作業系統 (Multiprogramming
Operating System) ,其中最重要的管理是: “只有系統認
可的權限使用者 (Users) ,才可依該權限使用特定的系統
資源 (Resources) ” 。
• 電腦系統之保護策略 (Protection Policy) 是提供保護機制
(Protection Mechanism) 以管理 (Governing) 系統各項資源
(Resources) 之使用。此項保護策略有三個時機建立保護機
制: (1) 硬體固定保護機制,系統出廠時已建立, (2) 作
業系統因應執行環境,建立管理機制, (3) 使用者因應執
行要求,建立管理機制。
19-3 保護之定義域 (Protection Domain)
• 電腦系統 (Computer System) 是行程 (Processes)
與物件 (Objects) 的組合,物件包括硬體物件
(Hardware Objects) 與軟體物件 (Software
Objects) ,前者如 CPU 、記憶體、磁碟、印表機
等,後者如檔案、程式等。
• 不同的物件對應不同型態 (Types) 的操作
(Operation) ,記憶體引導存取操作; CPU 引導執
行操作;檔案引導存取、建立、刪除等操作。
圖 19-3-1-1
圖 19-3-1-2
圖 19-3-1-3
19-4 矩陣執行 (Access Matrix)
• 為了方便設計程式 (Programming) ,我們可將前述
之集合 (Sets) 型式改以矩陣 (Matrix) 表示,如圖
19-3-1-3 ,當行程 (Process) P 代表定義域 (Domain)
D2 時, P 有讀取 (Read) 物件 (Object) O2 的權限
,以 “ read = access(D2, O2)” 表示。
圖 19-4-1
圖 19-4-2
圖 19-4-1-1
圖 19-4-2-1
圖 19-4-3-1
19-5 矩陣應用 (Implementation Matrix)
• 如圖 19-5 ,我們發現圖中有許多空白入口
(Entries) ,如果將矩陣圖儲存於記憶體,這些空白
入口所佔有的空間 (Space) 將是一種嚴重的記憶
體浪費,我們可以表格 (Table) 或串列 (Lists) 作適
當的取代。
圖 19-5
19-6 習題 (Exercises)
1 、保護 (Protection) 與安全 (Security) 有何區別?
2 、保護策略有那三個時機建立保護機制?
3 、於離散數學中曾定義 (Define) 之序對關係 (Ordered Pair)
為何?
4 、如何表示 “保護定義域 (Protection Domain)” ?
5 、定義域 (Domain) 之具體代表為何?
6 、複製 (Copy) 有那幾種?
7 、全域表格 (Global Table) 之優缺點為何?
8 、物件權限串列 (Access Lists for Objects) 之優缺點為何?
9 、定義域能力串列 (Capability Lists for Objects) 之優缺點為
何?
第二十章
安全 (Security)
• 20-1 簡介
• 20-2 安全問題 (Security Problem)
• 20-3 使用者確認 (User Authentication)
• 20-4 程式安全之威脅 (Program Threats)
• 20-5 系統安全之威脅 (System Threats)
• 20-6 加解密 (Cryptography)
• 20-6-1 傳統加密法
• 20-6-2 近代公開金匙加密法
• 20-6-2-1 公開金匙原理
• 20-6-2-2 金匙設計方法
• 20-6-2-3 金匙設計執行法則
• 20-6-2-4 金匙設計實例 (Java 範例程式設計 )
• 20-7 習題 (Exercises)
• 20-8 範例系統程式 (Programming)
• 20-8-1 傳統加解密法 ( 模擬 20-6-1 節 )
• 20-8-2 近代加解密法 ( 模擬 20-6-2 節 )
20-1 簡介
• 於前章我們述及系統之保護 (Protection) ,本章將
再進一步探討系統之安全 (Security) 。保護是維護
行程不受干擾地使用特定資源;安全是維護資料
或資源不被外力侵入而改變原有之意義。
• 具體來言,保護是處理系統內部環境 (Internal
Environment) 之問題,如檔案權限 (File Authority)
等;安全是處理系統外部環境 (External
Environment) 之侵入問題,如病毒、資料攔截等
。
20-2 安全問題 (Security Problem)
• 軟體資料 (Data) 或硬體資源 (Resource) 遭到不當
之使用是謂 “安全問題 (Security Problem)” 。所謂 “
不當使用 (Violations 或 Misuse)” 是指意外
(Accidental) 不當使用、或蓄意 (Intentional 或
Malicious) 不當使用兩種。
• 電腦之安全問題可由四個觀點來處理:實體觀點
(Physical) 、使用者觀點 (Users) 、網路觀點
(Network) 、作業系統觀點 (Operating System) 。
20-3 使用者確認 (User Authentication)
• 當使用者 (User) 要存取某檔案資料、或使用某資
源裝置之前,必須先經過使用者確認 (User
Authentication) ,確認的項目通常有三類:
• (1) 使用者物件 (User Possession) ,如使用者之卡
片 (Card) 、使用者之鎖匙 (key) 等;
• (2) 使用者資料 (User Knowledge) ,如使用者帳號
(ID) 、使用者名稱 (Name) 、使用者密碼
(Password) 等;
• (3) 使用者特性 (User Attributes) ,如指紋
(Fingerprint) 、視網膜 (Retina) 、簽名 (Signature)
等。
20-4 程式安全之威脅 (Program Threats)
• 當使用者 (User) 設計完成一個程式 (Program) ,
除了設計者外,也提供其他使用者使用,程式安
全之威脅因而由此產生,如木馬程式 (Trojan
Horses) 、陷阱口 (Trap Doors) 等。
20-5 系統安全之威脅 (System Threats)
• 作業系統 (Operating System) 提供行程可產生另一
行程的機制,當一個行程有瑕疵時,即可能產生
有瑕疵的其他行程,而將瑕疵擴散出去。如分裂
程式 (Worms) 與病毒 (Viruses) 等。
20-6 加解密 (Cryptography)
• 當兩個工作站台傳遞資料時,資料也隨即暴露在
人人可攔截的空曠網路上,資料的安全性面對極
大的挑戰。我們無法避免資料不被攔截,但我們
可將資料加密,使被攔截的資料無意義。本節將
探討: (1) 傳統加密法 與 (2) 近代公開金匙加密
法。
20-6-1 傳統加密法
• 所謂 “傳統加解密” 即是發射端 (Client 端 ) 與接收
端 (Server 端 ) 均有相同對應之密碼匙,發射端依
密碼匙將資料加密,接收端再依對應的密碼匙將
資料解密,如此方法行之自古至今,其優點是簡
易方便;缺點是不週嚴,有極大洩密之缺口,問
題在發射端與接收端於交換對應密碼匙時,無法
百分之百保密。
20-6-2 近代公開金匙加密法
• 傳統密碼加密法,有其一定的不可靠風險,接收
工作程序於設定加解密金匙後,自己保留解密金
匙,還必須將加密金匙,通知發射工作程序。在
通知的過程中,即已有了不可避免的洩密風險。
近代密碼加密法,針對此項洩密風險,加以改進
。接收工作程序於設定加解密金匙後,自己保留
解密金匙,另將加密金匙公告大眾。
20-6-2-1 公開金匙原理
• 接收工作程序於設定加解密金匙後,自己保留解
密金匙,另將加密金匙不僅不須隱密通知對方,
甚至將加密金匙公告大眾,其中神妙之處令人驚
嘆。
• 1 、暗門單向函數
• 2 、單向函數常例
• 3 、餘數同餘觀念
• 4 、縮剩餘系 (Reduced Set of Residues)
• 5 、尤拉商數 (Euler’s Totient Function)
• 6 、尤拉定理 (Euler’s Theorem)
• 7 、費瑪定理 (Fermat’s Theorem)
20-6-2-2 金匙設計方法
• 在初步了解上述觀念與理論後,即可著手設計
RSA 之公開加密金匙及私密解密金匙如下:
• 1 、首先考量金匙之可逆性
• 2 、由尤拉—費瑪 定理可得
• 3 、若設定公開加密金匙 (ex, N) 、如何求得私
密解密金匙 dx ?
20-6-2-3 金匙設計執行法則
• 我們己清礎了解近代加密法 RSA ,如何設定其公開加密金匙、及又如
何求取私密解密金匙。現在,我們將其執行過程整理詳述如下:
• (1) 受文者 ( 接收端工作程序 ) 為乙方,任意選取兩個大質數 p 與
q ,其積 N=pq 。
• (2) 乙方任意選擇一整數 ex ,且 ex 與 N 互質。將 (ex, N) 設定為公開
加密金匙,並公佈之。
• (3) 乙方以 20-6-2-2 之 3 -(3) dx = (kT + 1) / ex , 求得其中之整數
dx 。 T 如 20-6-2-2 之 2 , T = Φ(N) = (p-1)(q-1) ; k 如 20-6-2-2 之 3 -
(2) k 為常數 (0, 1, 2, …) 。以 dx 為乙方之私密解密金匙,妥善保管,
不得洩漏。
• (4) 發文者 ( 發射工作程序 ) 為甲方、要秘密傳送明文 m 給乙方。甲
方首先由公開檔案找到乙方公佈的公開加密金匙 (ex, N) 。然後以該公
開金匙將明文 m 加密成密文 n 。 如 33-2-( 一 )(1) : mex = n mod N
• (5) 受文者 ( 接收工作程序 ) 乙方收到密文 n 後,以其私密解密金匙
dx 解密。將密文 n 還原成 m 。 如 20-6-2-2 之 3 -(1) : ndx = m mod
N
圖 20-6-2-4
20-7 習題 (Exercises)
1 、電腦之安全問題可由那四個觀點來處理?
2 、使用者確認 (User Authentication) 通常有那三類?
3 、何謂木馬程式 (Trojan Horses) ?
4 、何論陷阱口 (Trap Doors) ?
5 、何謂病毒 (Viruses) ?
6 、何謂謂 “傳統加解密”?
7 、“傳統加解密” 之優缺點為何?
8 、“近代公開金匙加密法” 與 “傳統密碼加密法” 有何不同?
9 、試設計一組 “傳統密碼加密法” 網路程式實例。
10 、試設計一組 “近代公開金匙加密法” 網路程式實例。

作業系統概論

  • 1.
    作業系統概論 Operating System Concepts 第二版(2nd Edition) 賈蓉生 胡大源 林金池 編著
  • 2.
    第一章 導讀 (Introduction) • 1-1簡介 • 1-2 本書主要內容 • 1-3 Java 系統程式 • 1-4 專有名詞索引 • 1-5 習作習題 • 1-6 光碟使用
  • 3.
    1-1 簡介 • 作業系統(Operating System) 是學習電腦的基礎課 目,內容含及電腦系統之結構、執行管理、儲存 管理、資料傳遞、網路應用、與保護安全等項目 。在未來學習電腦的大道上,這些項目提供了一 個輪廓,可令讀者胸有成竹地向前邁進。
  • 4.
  • 5.
    1-3 Java 系統程式 •本書內容是人與機器間之介面 -- 作業系統 (Operating System) ,其中有許多觀念的描述 (Descriptions) 、執行方法的演算 (Algorithms) 等均 需以一個眾所認同的語言型態來表示,本書採用 具有物件導向意義 (Object-Oriented Approach) 之 Java 語言。有關 Java 系統之架構,讀者可參閱本 書第二十四章。
  • 6.
    1-4 專有名詞索引 • 為了幫助讀者整理專有名詞,本書編輯中文專有 名詞索引約1,000 個 ( 如附錄 D) ,以筆劃查閱; 英文專有名詞索引約 1,000 個 ( 如附錄 E) ,以字 母查閱。其中質量幾已涵蓋所有中英文專有名詞 ,足夠儲備讀者未來閱讀原文書籍或期刊的能力 。
  • 7.
  • 8.
    1-6 光碟使用 • 本書隨書附光碟一片,內容有Java 安裝程式 (System) 、範例應用程式 (Program) ;另於出版書 局附教學光碟一片,內容有教學投影 (Ppt) 、習題 解答 (Ex) 、 Java 安裝程式 (System) 、範例應用程 式 (Program) 。
  • 9.
    第一篇 導論 (Over View) •作業系統 (Operating) 是一組系統程式 (System Program) ,介於使用者 (User) 與電腦硬體 (Hardware) 之間,幫助使用者方便使用,監督電 腦有效執行。 • 作業系統內容複雜,範圍龐大,為了讓讀者在深 入研讀之前,有一粗略全盤概念的認識,本篇就 基礎觀念、電腦系統結構、與作業系統架構先作 介紹。
  • 10.
    第二章 基礎概念 (Introduction) • 2-1簡介 • 2-2 大型電腦系統 (Mainframe Systems) • 2-3 微型電腦系統 (Microcomputer Systems) • 2-4 多處理器系統 (Multiprocessor System) • 2-5 分散式系統 (Distributed System) • 2-6 習題 (Exercises)
  • 11.
    2-1 簡介 • 作業系統(Operating System) 是一組系統程式,用 於支配 (manage) 電腦本機硬體及週邊設備等資源 之使用,並促進使用者方便使用 (conveniently) 、 有效使用 (efficiently) 。
  • 12.
  • 13.
    2-2 大型電腦系統 (MainframeSystems) • 通常大型電腦具有強大綜合性的功能 ( 如 IBM370) ,可同時執行單一工作 (Job) 、或多個工 作,因不同之需求,作業系統可類分為批次系統 (Batch Systems) 、即時系統 (Real-Time Systems) 、 多工系統 (Multi-programmed Systems) 、與分時系 統 (Time-Sharing Systems) 等。
  • 14.
    2-3 微型電腦系統 (Microcomputer Systems) •微型電腦有:個人桌上型電腦系統 (PC 或稱 Desktop) 、筆記型電腦系統 (Notebook 或稱 Laptop) 、手持式電腦系統 (Handheld) 等。 • PC 微型電腦快速發展於 1970s 年代,與大型電腦 (Mainframe) 比較,微型電腦硬體資源較少但便宜 ;使用者單純,通常是由一個使用者霸佔使用。 因此其作業系統之設計自與大型電腦不同。
  • 15.
    2-4 多處理器系統 (Multiprocessor System) •一台電腦一個 CPU 處理器 (Central Processing Unit) ,既使是新型電腦亦多是如此配置,擁有一 個主 CPU 處理器。一台電腦若擁有多個處理器, 其作業系統將對應於多處理器系統 (Multiprocessor System) , • 多處理器系統可類分為對稱多處理器系統 (Symmetric Multiprocessing) 與非對稱多處理器 系統 (Asymmetric Multiprocessing) 。
  • 16.
  • 17.
  • 18.
    2-5 分散式系統 (Distributed System) •個人電腦有其獨立的處理器與硬體裝置資源,應 用網路連接,將散置各處的電腦藉由分散式作業 系統合作執行指定的工作,如此安排是謂 “分散式 系統 (Distributed System) 。
  • 19.
  • 20.
  • 21.
    2-6 習題 (Exercises) •1 、何謂作業系統? • 2 、一套完整之電腦系統可概分那四組區塊? • 3 、何謂批次系統 (Batch Systems) ? • 4 、何謂即時系統 (Real-Time Systems) ? • 5 、何謂多工系統 (Multiprogrammed Systems) ? • 6 、何謂分時系統 (Time-Sharing Systems) ? • 7 、微型電腦有那些? • 8 、多處理器的優點為何? • 9 、何謂分散式系統 (Distributed System) 。 • 10 、網路應用範圍可分為幾類? • 11 、網路之連接技術可分為幾類? • 12 、分散式系統在功能分配上可類分為幾類?
  • 22.
    第三章電腦系統結構 (Computer SystemStructure) • 3-1簡介 • 3-2 起始操作 (Start Running) • 3-3 中斷 (Interrupt) • 3-4 輸入輸出架構 (I/O Structure) • 3-5 儲存架構 (Storage Structure) • 3-6 硬體保護 (Hardware Protection) • 3-6-1 輸入輸出保護 (I/O Protection) • 3-6-2 記憶體保護 (Memory Protection) • 3-6-3 中央處理器保護 (CPU Protection) • 3-7 網路架構 (Network Structure) • 3-7-1 區域網域 (Local-Area Network) • 3-7-2 廣域網域 (Wide-Area Network) • 3-8 習題 (Exercises) • 3-9 範例系統程式 (Programming) • 3-9-1 中斷例外處理 ( 模擬 3-3 節 )
  • 23.
    3-1 簡介 • 在我們深入探討電腦作業系統之前,有些關於電 腦的基本系統結構須先有一概念性的了解,本章 將粗略討論電腦系統結構,內容如起動 (StartUp)、輸入 / 輸出 (I/O) 、儲存 (Storage) 等, 及計算機結構 (Computer Architecture) 與作業系統 (Operating System) 間之互動架構。
  • 24.
    3-2 起始操作 (StartRunning) • 當開啟電腦的同時,即啟動 “初始程式 (Initial Program 或稱 Bootstrap Program” ) ,為求快捷, 此程式特置於唯讀記憶體中 (ROM Ready-Only Memory) ,初始啟動 CPU 、裝置控制器 (Device Controllers) 、傳導器 (Adapters) 、與記憶體 (Memory) 。初始程式將作業系統 (Operating System) 載入記憶體作核心運行 (Kernel) 。
  • 25.
  • 26.
  • 27.
    3-4 輸入輸出架構 (I/OStructure) • 當某裝置要求執行資料輸入輸出 (I/O) 時, CPU 載入該裝置控制器內之特殊功能暫存器,由作業 系統導引中斷 (Interrupt) 執行資料的輸入輸出。
  • 28.
    I/O 中斷可類分為同步 I/O(Synchronous)如圖 3-4-1 、與非同 步 I/O(Asynchronous) 如圖 3-4-2 圖 3-4-1 圖 3-4-2
  • 29.
  • 30.
    3-5 儲存架構 (StorageStructure) • CPU 是電腦的執行中樞,直接對主記憶體 (Main Memory) 隨機存取 (random access) 資料,典型的 指令執行週期 (Instruction Execution Cycle) 如范紐 曼 (Von Neumann) 所提出之執行架構 ( 如圖 3-5-1)
  • 31.
  • 32.
  • 33.
    3-6 硬體保護 (Hardware Protection) •一台電腦硬體受傷害的原因來自電腦本身的機會 不大,多是來自人為程式的錯誤,受傷害的硬體 亦多是發生於 I/O 系統、記憶體、或 CPU 。因此 所謂電腦硬體保護 Hardware Protection) 就是摒除 人為程式的錯誤,而保護的對象為: (1) I/O 系統 (I/O) 、 (2) 記憶體 (Memory) 、 (3) 中央處理器 (CPU) 。
  • 34.
    3-6-1 輸入輸出保護 (I/OProtection) • 使用者 (Users) 可利用輸入輸出的機會,傳遞非法 指令 (illegal Instructions) 、或資料 (Data) ,非法進 入系統程式 (Operating System) 領域執行破壞行為 ,為了避免如此傷害行為,所有的輸入輸出指令 (I/O Instructions) 均定義納入系統模式 (System Mode) 。
  • 35.
  • 36.
    3-6-2 記憶體保護 (MemoryProtection) • 當使用者之工作程序進入記憶體後,作業系統以 兩個暫存器鎖定記憶體之使用範圍,基底暫存器 (Base Register) 存置起始地址 (Address) ;限制暫 存器 (Limit Register) 存置範圍距離,如圖 3-6-2
  • 37.
  • 38.
    3-6-3 中央處理器保護 (CPUProtection) • CPU 的保護機制是在設定 CPU 之使用時間,作業 系統對每一進入 CPU 之程式作使用時間設定,超 過該設定時間即判定為非法無限迴圈,從 CPU 踢 出該程式,執行 CPU 保護。
  • 39.
    3-7 網路架構 (NetworkStructure) • 多台電腦以網路連通,相互支援程序執行與檔案 存取,是謂 “網路架構 (Network Structure) 。常見 的網路架構有:小範圍區域網域 (LAN Local-Area Network) 、與大範圍廣域網域 (WAN Wide-Area Network) 。
  • 40.
    3-8 習題 (Exercises) •1 、何謂核心運行 (Kernel) ? • 2 、何謂事件中斷 (Event Interrupt) ? • 3 、中斷表 (Table of Interrupt) 與中斷程序之關係為何? • 4 、何謂同步 I/O 中斷? • 5 、何謂非同步 I/O 中斷? • 6 、記憶體直接存取方法 (DMA) 的使用條件為何? • 7 、主記憶體與 CPU 的關係為何? • 8 、主記憶體有那些無法克服的困難? • 9 、何謂快取記憶體 (Cache) ? • 10 、硬體傷害常發生在那些裝置上? • 11 、何謂雙模操作法? • 12 、如何作 I/O 保護? • 13 、如何作記憶體保護? • 14 、如何作 CPU 保護? • 15 、何謂區域網域 (LAN) ? • 16 、何謂廣域網域 (WAN) ?
  • 41.
    第四章 作業系統架構 (Operating SystemStructure) • 4-1 簡介 • 4-2 系統組成要件 (System Components) • 4-2-1 行程管理 (Process Management) • 4-2-2 主記憶體管理 (Main Memory Management) • 4-2-3 檔案管理 (File Management) • 4-2-4 輸入輸出系統管理 (I/O System Management) • 4-2-5 輔助記憶體管理 (Secondary Storage Management) • 4-2-6 網路連通管理 (Networking Management) • 4-2-7 保護系統管理 (Protection Management) • 4-2-8 介面指令管理 (Shell Command Interpreter Management) • 4-3 作業系統服務 (Operating System Services) • 4-4 系統呼叫 (System Calls) • 4-5 系統程式 (System Programs) • 4-6 應用程式 (Application Programs) • 4-7 系統架構 (System Structure) • 4-7-1 簡易架構 (Simple Structure) • 4-7-2 階層架構 (Layered Approach) • 4-7-3 微核心 (Microkernel) • 4-7-4 模組架構 (Modules) • 4-8 虛擬機器 (Virtual Machines) • 4-9 系統設計與編寫 (System Design and Implementation) • 4-10 檢選系統 (System Generation) • 4-11 開機系統 (System Boot) • 4-12 習題 (Exercises)
  • 42.
  • 43.
    4-2 系統組成要件 (SystemComponents) • 作業系統 (Operating System) 即龐大又複雜,本節就其功 能性 ( 如圖 4-2-1) 將系統類分成程序管理 (Process Management) 、主記憶體管理 (Main Memory Management) 、檔案管理 (File Management) 、輸入輸出管 理 (I/O Management) 、輔助記憶體 (Secondary Storage Management) 、網路連通管理 (Networking Management) 、保護管理 (Protection Management) 、指令 解釋管理 (Command Interpreter Management) ,並作概念 描述。
  • 44.
  • 45.
    4-3 作業系統服務 (Operating SystemServices) • 電腦能有效執行,有賴於作業系統的有效運行,作業系統 不僅要提供使用者最佳的服務 (Services) ,也要對作業系 統自己提供最佳的可信度。
  • 46.
    4-4 系統呼叫 (SystemCalls) • 當行程 (Process) 衝撞系統時,行程要求系統呼應執行是 謂 “系統呼叫 (System Call)” 。除了低階語言 ( 如組合語言 Assembly Language) 與少數高階語言之某些狀況外,為了 保護系統安全,一般高階語言均不被允許直接 (Directly) 作系統呼叫。
  • 47.
  • 48.
  • 49.
  • 50.
    4-5 系統程式 (SystemPrograms) • 回憶圖 2-1 ,最底層是電腦硬體 (Hardware) ,其次是作業 系統 (Operating System) ,再其次即是系統程式 (System Programs) 與應用程式 (Application Programs) 。系統程式 (System Programs) 提供使用者程式 (User’s Program) 一個 良好的執行環境,亦即使用者與系統程式間的介面 (Interface) ,可藉系統呼叫 (System Call) 或其他方式執行
  • 51.
    4-6 應用程式 (ApplicationPrograms) • 如圖 2-1 ,與系統程式在相同地位的是 “應用程式 (Application Program 或 System Utilities) ,用以支援解決 一般之應用問題。這些程式包括網路瀏覽器 (Web Browsers) 、文字處理器 (Word Processors) 、試算表 (Spreadsheets) 、資料庫 (Database Systems) 、繪圖 (Plotters) 、統計分析 (Statistical Analysis) 、遊戲 (Games) 等。
  • 52.
    4-7 系統架構 (SystemStructure) • 隨著電腦應用需求之增加,作業系統已變成龐大且複雜, 其結構概念也由整體架構 (Monolithic System) 改向為小單 位分割架構 (Partition of Small Components System) 。整體 架構之缺點為反應遲緩,任何錯誤均將禍及整體系統甚至 當機,優點為設計簡易、管理方便;小單位分割架構之缺 點為設計複雜,優點為反應靈巧,區隔錯誤使其不影響其 他部份。
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
    4-8 虛擬機器 (VirtualMachines) • 一般作業系統可類分為 3 個主要區塊 ( 如圖 4-8- 1) ,包括行程 (Processes) 、核心 (Kernel) 、與硬 體 (Hardware) 三部份。
  • 59.
  • 60.
  • 61.
  • 62.
    4-9 系統設計與編寫 (System Designand Implementation) • 規劃設計藍圖之前,須先考量為何種電腦硬體設計?設計 何種系統?採用批次執行 (Batch) ?分時執行 (Time Shared) ?一個使用者 (Single User) ?多個使用者 (Multiusers) ?即時系統 (Real Time) ?分散式據點 (Distributed) ?產生方式 (Generation) ? • 關鍵機制 (Mechanisms) 用於處理如何作為 (How) ?,執 行計劃 (Policies) 用於處理做些什麼 (What) ?系統通常以 低階語言 -- 組合語言 (Assembly Language)-- 編寫,也有小 部份以高階語言 --C 、 C++ -- 編寫,新型作業系統以 Java 編寫。
  • 63.
    4-10 檢選系統 (System Generation) •一般系統程式之設計考量應是: (1) 適用於同型電腦 (Class of Machine) , (2) 適用於不同的場所 (Varity of Sits) , (3) 適用於不同的周邊環境 (Varity of Peripheral Configurations) 。 • 同類型電腦因是相同機件,可作統一設計,但為了滿足不 同的場所與周邊環境,則須先考量納入所有可能發生的狀 況,於臨場實地使用時,再篩選有用的內容納入當時的作 業系統,如是設計的作業系統稱為 “檢選系統 (SYSGEN System Generation)” 。
  • 64.
    4-11 開機系統 (SystemBoot) • 當電腦開啟電源 (Power on) 或重新啟動 (Reset) 時,立即將指令暫存器 (IR Instruction Register) 載 入,同時執行開機程式 (Bootstrap Program) 。開 機程式儲存於 ROM 內,不須作任何初始動作 (Initialization) ,開機就執行,亦不受任何病毒的 入侵。
  • 65.
    4-12 習題 (Exercises) 1、作業系統 (Operating System) 有那些要件? 2 、作業系統應有那些行程管理內容? 3 、在安排記憶體上、作業系統應有那些行程管理內容? 4 、作業系統應有那些檔案管理內容? 5 、作業系統應有那些 I/O 管理內容? 6 、作業系統應有那些輔助記憶體管理內容? 7 、作業系統應有那些網路連通管理內容? 8 、作業系統應有那些保護管理內容? 9 、作業系統應有那些介面命令管理內容? 10 、作業系統之服務要旨為何? 11 、系統呼叫可藉參數 (Parameter) 傳遞訊息之方法有那些 ? 12 、系統呼叫可類分為那幾類? 13 、系統程式可類分那幾類? 14 、作業系統之架構可類分那機類?
  • 66.
  • 67.
    第五章 行程 (Processes) •5-1 簡介 • 5-2 行程之觀念 (Process Concept) • 5-2-1 行程狀態 (Process State) • 5-2-2 行程控制區段 (Process Control Block) • 5-2-3 執行緒 (Threads) • 5-3 排程 (Process Scheduling) • 5-3-1 排程佇列 (Scheduling Queues) • 5-3-2 排程器 (Schedulers) • 5-3-3 內文切換 (Context Switch) • 5-4 行程操作 (Operations on Processes) • 5-4-1 行程產生 (Process Creation) • 5-4-2 行程結束 (Process Termination) • 5-5 合作行程 (Cooperating Processes) • 5-6 行程通訊 (Interprocess Communication) • 5-6-1 訊息傳遞 (Message Passing System) • 5-6-2 同步操作 (Synchronization) • 5-6-3 緩衝 (Buffering) • 5-7 網路連通 (Server/Client Network) • 5-8 習題 (Exercises) • 5-9 範例系統程式 • 5-9-1 父行程與子行程之繼承關係 ( 模擬 5-4-1 節 ) • 5-9-2 合作行程 ( 模擬 5-5 節 ) • 5-9-3 網路連通 ( 模擬 5-7 節 )
  • 68.
    5-1 簡介 • 程式(Program) 是程式碼之檔案 (File) ,行程 (Process) 是正在執行的程式 (Program in Execution) 。早期電腦當執行程式時,整個系統資 源均用於支援該一個程式;今日電腦系統可同時 支援多個程式之執行。 • 行程是工作的單元 (Unit of Work) ,一個程式有數 個行程。系統內有多個行程競爭進入 CPU 作執行 , CPU 切換 (Switch) 於各行程之間,盡求公平執 行各行程。
  • 69.
    5-2 行程之觀念 (ProcessConcept) • 如前述,行程 (Process) 是正在執行的程式 (Program in Execution) ,一個程式可能有數個行程 ,有些書將行程 (Process) 亦稱為工作 (Job) ,本 書為了爾後的清晰解述,一般應用名稱使用 “行程 (Process)” ;特定意義應用名稱使用 “工作 (Job)” ,如工作排程 (Job Scheduling) 等。
  • 70.
  • 71.
    5-3 排程 (ProcessScheduling) • CPU 是系統的執行中樞,有其自身的執行能力限 制 (limitations) ,不會因外在的強求而改變,亦無 法完全配合周遭瞬息萬變的條件環境 (Environment) 。以行程 (Process) 為例,如有多個 行程競爭進入 CPU ,因 CPU 一個時間只能執行一 個工作,無法同時將這些行程同時執行,但可退 而求其次,以其能力範圍內,輪流切換 (switch) 執行各個行程,切換 (switch) 的流程如圖 5-3-1 。
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
    5-4 行程操作 (Operationson Processes) • 行程 (Processes) 不定期隨機 (dynamically) 產生, 亦不定期隨機終結消失,為了可以處理如此不定 期的多個行程,多數作業系統 (Operating System) 均設計為可操作行程作並行執行 (execute concurrently) 。
  • 77.
    5-5 合作行程 (CooperatingProcesses) • 一個行程如果不影響其他行程、不被其他行程影 響、亦不與其他行程共享資料 (Data) 或資源 (Resource) ,如是行程是謂 “獨立行程 (Independent Process)” ;否則即謂 “合作行程 (Cooperating Process) 。
  • 78.
    5-6 行程通訊 (Interprocess Communication) •兩個行程 (Processes) 互通訊息是謂 “行程通訊 (IPC Interprocess Communication)” ,這兩個行程可 能演譯自同一程式 (Program) ,亦可能演譯自不同 的多個程式 (Programs) 。
  • 79.
  • 80.
  • 81.
    5-7 網路連通 (Server/ClientNetwork) • 今日電腦網路蓬勃發展,網路連通已是作業系統 的基本功能之一,網路連通 ( 如圖 5-7) 之要件為 網址 (IP) 、埠 (Port) 、與平台 (Socket) 。請參考本 章 5-9 節,實作一個網路連通範例,以 Java 作為 執行語言,設定 Server , Client 兩個網路行程。
  • 82.
  • 83.
    5-8 習題 (Exercises) •1 、何謂行程 (Process) ? • 2 、行程有那 5 個狀態 (States) ? • 3 、何謂 “行程控制區段 (PCB Process Control Block)” ? • 4 、行程控制區段 (PCB Process Control Block) 內有那些資 料? • 5 、何謂 “排程佇列 (Scheduling Queue)” ? • 6 、何謂 “排程器 (Scheduler)” ? • 7 、除了因完成任務而結束外,行程尚有那些原因被迫結 束? • 8 、行程合作的理由有那些? • 9 、直接通訊 (Direct Communication) 之優缺點為何? • 10 、間接通訊 (Indirect Communication) 之優缺點為何? • 11 、何謂同步操作 (Synchronization) ? • 12 、何謂非同步操作 (Asynchronization) ? • 13 、網路連通要件有那些?
  • 84.
    第六章 執行緒 (Threads) • 6-1簡介 • 6-2 執行緒定義 (Overview) • 6-3 多執行緒模型 (Multithreading Models) • 6-4 執行緒操作 (Operations of Threads) • 6-4-1 執行緒之終止 (Cancellation) • 6-4-2 信號管理 (Signal Handling) • 6-4-3 執行緒池 (Thread Pools) • 6-5 執行緒與 CPU(Threads and CPU) • 6-6 習題 (Exercises) • 6-7 範例系統程式 (Programming) • 6-7-1 執行緒與 CPU( 模擬 6-5 節 )
  • 85.
    6-1 簡介 • 於前章我們針對行程(Processes) 已作概念性的討論,本 章我們將討論更為靈活的執行單元 “執行緒 (Threads)” 。 行程 (Process) 是工作單元 (Unit of work) ,系統內有多個 行程同時存在,但 CPU 一個時間只能處理一個行程,因此 多數的行程都在等待狀態 (Waiting State) ,競爭進入 CPU 被執行,如此形式的行程又稱為 “執行緒 (Thread)” 。早期 系統一個行程即是一個執行緒,新型電腦一個行程可視其 多元性之工作內容,允許依不同工作內容分割出多個執行 緒,利用 CPU 分時執行方法 (Time Sharing) ,在一個時間 中可執行多個任務 (Tasks) 。
  • 86.
    6-2 執行緒定義 (Overview) •執行緒 (Thread) 是 CPU 之基本執行單元 (Basic Unit) ,如前述,早期系統一個行程即是一個執行 緒,新型電腦系統一個行程可視其多元性之工作 內容,允許依不同工作內容分割出多個執行緒, 利用 CPU 分時執行方法 (Time Sharing) ,在一個時 間中執行多個任務 (Tasks) 。 • 如圖 6-2-1 ,每個執行緒 (Thread) 擁有各自的識 別碼 (ID) 、指令計數器 (Program Counter) 、暫存 器組 (Register Set) 、與一個堆疊 (Stack) 。如圖 6- 2-2 ,同屬一個行程 (Process) 的各執行緒可共享 程式碼 (Code) 、資料 (Data) 、檔案 (Files) 等系統 資源。
  • 87.
  • 88.
  • 89.
    6-3 多執行緒模型 (MultithreadingModels) • 於前節已描述使用者執行緒 (User Threads) 與核心 執行緒 (Kernel Threads) ,使用者執行緒由核心支 援 (support) ,但由使用者管理 (managed) ;核心 執行緒由核心支援,亦由核心管理。本節將就使 用者執行緒、與核心執行緒兩者之對應關係 (Mapping Relations) 作更進一步的探討。
  • 90.
  • 91.
  • 92.
  • 93.
    6-4 執行緒操作 (Operationsof Threads) • 經過前數章節對執行緒的描述,讀者對執行緒已 有基礎應用上的概念,本節將再就執行緒之其他 執行事項作進一步的分析。
  • 94.
    6-5 執行緒與 CPU(Threadsand CPU) • Java 系統內建 Thread 類別,其功能是將 CPU 分割 成多個工作時段,適當地提供給條件最優的工作 片斷作執行。使用者可藉: (1) 以新類別繼承 Thread 類別,再由該新繼承類別以 new 產生執行 物件, (2) 或以 “ new” 由類別 Thread 直接產生新 執行物件,搶 CPU 時段給予條件最優的工作片斷 先作執行。
  • 95.
    6-6 習題 (Exercises) 1、執行緒 (Thread) 擁有那些基本設定? 2 、同屬一個行程 (Process) 的各執行緒可共享那些 資源? 3 、一個多元性工作的行程 (Process) ,可依其不同 工作內容分割出多個執行緒 (Threads) ,其優點有 為何? 4 、使用者執行緒 (User Threads) 與核心執行緒 (Kernel Threads) 有那些關係模型? 5 、當標的執行緒執行 “終止” 時,視系統的不同, 有那兩種情況伴隨發生? 6 、設置執行緒池的理由為何?
  • 96.
    第七章 CPU 排程 (Scheduling) •7-1 簡介 • 7-2 排程概念 (Scheduling Concepts) • 7-2-1 CPU 與 I/O 週期 (CPU and I/O Cycle) • 7-2-2 CPU 排程器 (Scheduler) • 7-2-3 搶先排程 (Concept of Preemptive Scheduling) 概念 • 7-2-4 分配器 (Dispatcher) • 7-3 排程評量要件 (Scheduling Criteria) • 7-4 排程演算法 (Scheduling Algorithms) • 7-4-1 先到先執行 (FCFS First-Come-First-Served Scheduling) • 7-4-2 最短工作優先 (SJF Shortest-Job-First Scheduling) • 7-4-3 搶先排程 ( Preemptive Scheduling) • 7-4-4 優先權排程 ( Priority Scheduling) • 7-4-5 循環分時 (RR Round-Robin) 排程 • 7-4-6 多層佇列 (Multilevel Queues) 排程 • 7-4-7 多層回授佇列 (Multilevel Feedback-Queue) 排程 • 7-4-8 多處理器 (Multi-Processor) 排程 • 7-5 排程評量 (Algorithm Evaluation) • 7-6 習題 (Exercises) • 7-7 範例系統程式 (Programming) • 7-7-1 優先權排程 ( 模擬 7-4-4 節 )
  • 97.
    7-1 簡介 • CPU排程 (Scheduling) 是多工作業系統 (Multiprogramming Operating System) 的基石之一 ,當多個行程 (Processes) 或執行緒 (Threads) 在 就緒佇列 (Ready Queues) 中等待進入 CPU 時,系 統如何選擇適當的行程優先進入 CPU 即謂 “ CPU 排程”。 • 本章除了對 CPU 排程作概念描述之外,另列出數 種排程演算法 (Algorithms) 及應用分析。
  • 98.
    7-2 排程概念 (SchedulingConcepts) • CPU 一個時間只能允許一個行程 ( 例如 P0) 進入 執行,當行程 P0 執行完畢後,再輪由其他行程 Pi 依序進入 CPU 執行。此其間 P0 可能去執行 I/O , 而 CPU 也因等待 P0 而怠惰 (Idle) ,如此珍貴的 CPU 時間用於等待 (Waiting) 實為可惜。
  • 99.
    7-3 排程評量要件 (SchedulingCriteria) • 如 7-2-2 節所述,至今已發展出許多排程演算法, 至於要選用那一種則無一定的定見,要配合當時 的電腦系統與執行環境、與程式本身之條件而定 。本節介紹 5 類評量要件,以其計量的數據評量 出最佳選擇。
  • 100.
    7-4 排程演算法 (SchedulingAlgorithms) • 當行程置入就緒佇列 (Ready Queue) 後,隨即等 待系統依排程演算法選擇進入 CPU ,行程從進入 CPU 開始至離開 CPU 為止所需的時間是謂 “ CPU 時間 (Burst Time)” ,不同的演算法有其不同的執 行意義,本節將探討目前常用的各類排程演算法 。
  • 101.
    7-4-1 先到先執行 (FCFS First-Come-First-ServedScheduling) • 將就緒佇列 (Ready Queue) 內等待的各行程,依 先到先執行的法則排序進入 CPU 執行,如是法則 是謂 “先到先執行排程 (FCFS)” 。
  • 102.
  • 103.
    7-4-2 最短工作優先 (SJF Shortest-Job-FirstScheduling) • 於前節,我們已觀察到,於就緒佇列 (Ready Queue) 內等待的各行程,將 CPU 時間較小的行程 先選入 CPU 執行,可節省大量的平均等待時間, 如是法則是謂 “最短工作優先排程 (SJF )” 。
  • 104.
  • 105.
    7-4-3 搶先排程 (Preemptive Scheduling) • 如 7-2-3 節所述,同時考量時間 (Time) 與權值 (Weight) 的排程是謂 “搶先排程 (Preemptive Scheduling)” 。例如行程 P1 的權值高於 P2 的權值 ,理應先選 P1 後選 P2 ,但於決選時刻, P1 尚未 抵達,只有 P2 出現,此時系統先選擇權值次高的 P2 ,若 P1 隨後到達,系統再以當時的狀況重新 考量最佳之選擇,其優點是不浪費等待的時間。
  • 106.
  • 107.
    7-4-4 優先權排程 (Priority Scheduling) • 因為工作重要性的需要,可付予行程適當的優先 權值 (Priority) ,優先等級較高的行程,優先被選 擇進入 CPU 。
  • 108.
  • 109.
    7-4-5 循環分時 (RRRound-Robin) 排程 • 設有行程 P1 、 P2 、 P3 依 FCFS 排序,將 CPU 時 間切割成數個時間分量 (Time Quantum) q ,行程 P1 進入 CPU 在時間分量 q 範圍內作執行,如果未 完成執行,跳出 CPU ,讓 P2 進入 CPU 。 P1 等待 下一循環再進入 CPU 繼續執行,直至各行程執行 完畢為止。如是作為是謂 “循環分時排程 (RR)” 。
  • 110.
  • 111.
    7-4-6 多層佇列 (MultilevelQueues) 排程 • 在眾多行程中,為了管理方便,可將功能性相同 的各行程納入同一群組 (Group) ,同一群組內,行 程與行程間執行適當之排程 (Suitable Scheduling) ,群組與群組間亦執行適當之排程。 如此雙線排程是謂 “多層佇列排程 (Multilevel Queues Scheduling)” 如圖 7-4-6 。
  • 112.
  • 113.
    7-4-7 多層回授佇列排程 (Multilevel Feedback-Queue) •於前節,我們已認識多層佇列排程的缺點是:如 果某群組的優先等級過低,則該群組的所有行程 就可能失去進入 CPU 的機會。 • 為了改善上述缺點,我們設計多層回授佇列排程 (Multilevel Feedback-Queue Scheduling) 如圖 7-4- 7 ,如果某群組之 CPU 時間超過規定之時間分量 (Quantum Time) ,系統即強迫將 CPU 使用權交付 予較低層之群組使用,如此每一層群組都有進入 CPU 的機會。
  • 114.
  • 115.
    7-4-8 多處理器 (Multi-Processor)排程 • 到目前為止,我們探討的排程模型均為一個 CPU ,如果系統擁有多個 CPU ,執行效率將大為 提高且精彩,如此環境執行的排程是謂 “多處理器 排程 (Multi-Processor Scheduling) 。
  • 116.
  • 117.
  • 118.
  • 119.
    7-5 排程評量 (AlgorithmEvaluation) • 於前數節中,我們已探討過多種排程方法,每一 種方法都有其獨特的優點與缺點,我們也很難評 量出那一種方法為最佳法則。除了排程方法外, 當時的執行環境亦是重要影響因素之一。事實上 ,觀察實際執行的現象才是較為可靠的評量。
  • 120.
    7-6 習題 (Exercises) 1、何謂 CPU 排程 (Scheduling) ? 2 、何謂 I/O 型行程 (I/O-Bound Process) ? 3 、何謂 CPU 型行程 (CPU-Bound Process) ? 4 、何謂搶先排程 (Preemptive Scheduling) ? 5 、系統需要考量排程的關鍵時機為何? 6 、排程評量要件 (Scheduling Criteria) 有那些? 7 、設有行程與其 CPU 時間如下,試以 FCFS 計算其平均等待 時間? 8 、設有行程與其 CPU 時間如下,試以 SJF 計算其平均等待 時間? 9 、設有行程與其 CPU 時間如下,試以 Preemptive 與 SJF 計 算其平均等待時間? 10 、設有行程與其 CPU 時間如下,試以優先權排程計算其 平均等待時間? 11 、著手執行評量,可類分那 3 個執行階層?
  • 121.
    第八章 行程與同步並行 (Process Synchronization) •8-1 簡介 • 8-2 並行條件 (Concurrency Conditions) • 8-3 臨界區 (Critical Section) • 8-4 兩任務演算法 (Two-Tasks Algorithms) • 8-4-1 演算法 1(Algorithm1) • 8-4-2 演算法 2(Algorithm2) • 8-4-3 演算法 3(Algorithm3) • 8-5 硬體並行指令 (Synchronization Hardware) • 8-5-1 方法程序 getAndset( ) • 8-5-2 方法程序 swap( ) • 8-6 信號 (Semaphores) • 8-6-1 信號 (Semaphores) 與臨界區 (Critical Section) • 8-6-2 信號 (Semaphores) 與並行序列 (Synchronization) • 8-7 應用 (Application) • 8-8 習題 (Exercises) • 8-9 範例系統程式 (Programming) • 8-9-1 臨界區演算法 1( 模擬 8-4-1 節 ) • 8-9-2 臨界區演算法 2( 模擬 8-4-2 節 ) • 8-9-3 臨界區演算法 3( 模擬 8-4-3 節 ) • 8-9-4 臨界區硬體指令 getAndset( ) ( 模擬 8-5-1 節 ) • 8-9-5 臨界區硬體指令 getAndset( ) ( 模擬 8-5-2 節 ) • 8-9-6 號碼機與 synchronized 類別 ( 模擬 8-7 節 )
  • 122.
    8-1 簡介 • 我們曾於5-5 節述及合作行程 (Cooperating Process) ,於執行時,行程之間可相互影響,分享 記憶體 (Memory) ,分享資料 (Data) ,但往往因管 理不周嚴,使得資料失去一致性 (Inconsistency) 。 例如有一個銀行帳戶,哥哥到銀行臨櫃存錢,同 一時間,弟弟以提款卡到提款機取錢,如此同步 並行,如果管理不當,資料失去一致性,帳戶餘 額將會混亂錯誤。 • 因此、在多個行程同步並行時,如何保持資料的 一致性 (Consistency) ,是行程作業的一個重要環 節,本章將深入探討之。
  • 123.
    8-2 並行條件 (ConcurrencyConditions) • 如前述,在多個行程同步並行時,如何保持資料的一致性 (Consistency) ,是行程並行作業的重要一環,設有程式片斷: • S1 : a ← 5 • S2 : b ← a+1 • S3 : c ← a+2 • S4 : d ← b+c 圖 8-2-1
  • 124.
    • S1 :a ← 5 • S2 : b ← a+1 • S3 : c ← a+2 • S4 : a ← b • S5 : a ← c • S6 : print a 圖 8-2-2
  • 125.
    8-3 臨界區 (CriticalSection) • 每一執行緒 (Thread) 之寫入 / 讀取 (W/R) 功能碼 (Code) ,均可視為該執行緒之臨界區 (CS Critical Section) 。於臨界區,執行緒可對共享資源 (Shared Resource) 存取 (Access) 資料,如共用記 憶體或變數 (Common Variables) 、檔案 (Files) 等 。
  • 126.
    8-4 兩任務演算法 (Two-TasksAlgorithms) • 於系統中,有多個執行緒 (T1 、 T2 、…、 Tn) 等 待執行,為了容易解說,將此 n 個執行緒類分為 2 種角色: (1) 使用者關心的執行緒 Ti ; (2) 其他 執行緒 Tj 。例如使用者關心 T3 ,則 Ti = {T3} 、 Tj = { T1 、 T2 、 T4 、…、 Tn} 。
  • 127.
  • 128.
  • 129.
  • 130.
  • 131.
    8-5 硬體並行指令 (Synchronization Hardware) •在形式上或非形式上,可直接控制記憶體的指令 是謂 “硬體控制指令 (Hardware Instructions)” ,本 節關心的是將記憶體鎖住的指令 (lock) ,如果能 將記憶體鎖住,防止不必要的執行緒作資料存取 , 8-4 節所談的各演算法均可輕易迎刃而解。
  • 132.
  • 133.
  • 134.
    8-6 信號 (Semaphores) •於執行緒同步並行設計中,信號方法 (Semaphores) 是一很有意義的一環,其可達成兩 個重要意義: (1) 解決臨界區的問題、 (2) 自動調 配並行序列的連貫性。
  • 135.
    8-6-1 信號 (Semaphores)與 臨界區 (Critical Section) 圖 8-6-1
  • 136.
    8-6-2 信號 (Semaphores)與 並行序列 (Synchronization) 圖 8-6-2-1
  • 137.
  • 139.
    8-7 應用 (Application) •當我們走進高鐡車站,先到售票機按鈕買票,進 入月台再依車票座位號碼找車箱座位。本節就以 售票機為設計範例,如果有多個旅客同時按鈕買 票,亦即同時進入售票系統之臨界區,此時各旅 客可能領到相同座位號碼的車票 ( 讀者是否還記 得,高鐡通車時買票混亂之情形 ) 。請讀者參考 本章 8-9 節範例系統程式,以了解其混亂的原因 與改進之方法。
  • 140.
    8-8 習題 (Exercises) 1、何謂 伯恩斯坦同步並行條件 (Bernstein Condition) ? 2 、何謂臨界區 (CS Critical Section) 。於臨界區? 3 、同步並行須滿足那三個要件? 4 、何謂 2 任務演算法? 5 、使用者關心的執行緒 Ti ,有那三種關鍵機制訊 息? 6 、何謂硬體控制指令 (Hardware Instructions) ? 7 、信號 (Semaphore) 的概念為何?
  • 141.
    第九章 死結 (Deadlocks) •9-1 簡介 • 9-2 死結定義 (Deadlock Definition) • 9-3 死結特性 (Deadlock Characterization) • 9-3-1 必要條件 (Necessary Conditions) • 9-3-2 資源分配圖 (Resource – Allocation Graph) • 9-4 死結預防 (Deadlock Prevention) • 9-5 死結避免 (Deadlock Avoidance) • 9-5-1 銀行家概念 (Conception of Banker) • 9-5-2 安全演算法 (Safety Algorithm) • 9-5-3 資源要求演算法 (Resource Request Algorithm) • 9-5-4 單一裝置 (Single Instance) • 9-6 死結偵測 (Deadlock Detection) • 9-6-1 偵測演算法 • 9-6-2 單一裝置 (Single Instance) • 9-6-3 啟動偵測時機 (Detection Algorithm Usage) • 9-7 死結消弭 (Recovery from Deadlock) • 9-7-1 行程終止法 (Process Termination) • 9-7-2 資源釋放法 (Resource Preemption) • 9-8 習題 (Exercises) • 9-9 範例系統程式 (Programming) • 9-9-1 循環等待之死結 ( 模擬 9-3-2 節 )
  • 142.
    9-1 簡介 • 在多工環境(Multiprogramming Environment) ,隨 時都有多個行程 (Processes) 或執行緒 (Threads) 競爭有限數量的資源 (Resources) ,如果執行緒 Ti 需要的資源 Ri 當時不方便 (not Available) , Ti 即 轉為等待狀態 (Waiting State) 。 • 如上述,執行緒 Ti 需要資源 Ri ,此時若 Ri 被其 他執行緒 Tj 控制佔有,而 Tj 也處於等待狀態,且 不釋放 Ri ,如此現象是謂 “死結 (Deadlock)” 。
  • 143.
    9-2 死結定義 (DeadlockDefinition) • 死結形成的基本原因是資源 (Resource) 的不敷使 用,資源包括實體資源 (Physical Resource) 和程式 中的邏輯資源 (Logical Resource) ,若一味因資源 不足而增加資源,則將付出不菲的代價 (Payment) ,故行程 (Processes) 與資源 (Resource) 的優良管理是避免死結 (Prevent Deadlocks) 的最 佳途徑。
  • 144.
  • 145.
    9-3 死結特性 (DeadlockCharacterization) • 系統陷入死結 (Deadlock) 時,行程 (Process) 無法 完成執行,資源 (Resource) 被工作綁住而無法脫 身。
  • 146.
    9-3-1 必要條件 (NecessaryConditions) • 要避免死結發生,須先了解死結發生的因素特性 (Characters) ,死結發生的必要條件是當下列四個 狀態同時產生時: • 互斥 (Mutual Exclusion) • 佔有與等待 (Hold and Wait) • 無搶先機制 (No Preemption) • 循環等待 (Circular Wait)
  • 147.
    9-3-2 資源分配圖 (Resource –Allocation Graph) • 死結是由一系列行程與資源之阻通而造成,為了 清楚解說,我們設計資源分配圖 (Resource Allocation Graph) 參與說明。
  • 148.
    要求 (Request) : •行程向系統提出某資源之使用要求,如圖 9-3-2- 1 ,行程 P1 對資源 R1 提出要求。其表示式為: • 行程集合 P = {P1} 。 • 資源集合 R = {R1} 。 • 關係邊集合 E = {P1→R1} 。
  • 149.
  • 150.
    2 、佔用 (Use)/ 佔有 (Hold) : • 如圖 9-3-2-2 ,行程 P2 佔用或佔有資源 R1 的一件 裝置 (Instance) 。其中佔用 (Use) 是 P2 正在使用 該項資源 R1 ;佔有 (Hold) 是 P2 除了已抓取 R1 之外,尚等待要求其他資源,亦可能是因此造成 死結之原因。表示式為: • 行程集合 P = {P2} 。 • 資源集合 R = {R1} 。 • 關係邊集合 E = { R1→P2} 。
  • 151.
  • 152.
    3 、佔有 (Hold)與要求 (Request) : • 如圖 9-3-2-3 , P3 除了已抓取 R1 之外,尚等待要 求其他資源 R2 。表示式為: • 行程集合 P = {P3} 。 • 資源集合 R = {R1, R2} 。 • 關係邊集合 E = { R1→P3, P3→R1} 。
  • 153.
  • 154.
    4 、循環等待 (CircularWait) : • 如圖 9-3-2-4 , P1 已佔有 R1 ,且提出要求 R2 , 但 R2 已被 P2 佔有; P2 已佔有 R2 ,且提出要求 R1 ,但 R1 已被 P1 佔有。如此永久等待無法解開 的迴圈是謂 “循環等待 (Circular Wait)” ,亦是造成 死結的元兇原因。表示式為: • 行程集合 P = {P1, P2} 。 • 資源集合 R = {R1, R2} 。 • 關係邊集合 E = { R1→P1→R2→P2→R1 } 。
  • 155.
  • 156.
    5 、迴圈 (CycleGraph) : • 如圖 9-3-2-5 ,雖然與圖 9-3-2-4 有一樣的迴圈, 但在死結的意義上却不相同。於圖 (a) , R1 有兩 件裝置 (Instance) , P2 不會永久等待,故不會產 生死結。於圖 (b) ,當 P3 正在佔用 R1 的一件資源 時, P2 等待;一旦 P3 釋放 R1 , P2 即不需再等 待,故也不會產生死結。
  • 157.
  • 158.
    9-4 死結預防 (DeadlockPrevention) • 為了預防死結發生,我們可從上述之死結必要條 件著手,亦即想盡方法不讓上述四個條件發生。 • 1 、互斥 (Mutual Exclusion) • 2 、佔有與等待 (Hold and Wait) • 3 、無搶先機制 (No Preemption) • 4 、循環等待 (Circular Wait)
  • 159.
    9-5 死結避免 (DeadlockAvoidance) • 本節提出避免死結 (Avoidance) 以取代預防死結 (Prevention) 之觀念。如圖 9-5-1 , (1) 安全區為 絕無發生死結可能之區域,亦即無 9-4 節所述之 死結必要條件。 (2) 非安全區為已觸及死結的必 要條件,但尚未真正產生死結。 (3) 死結區為已 發生死結。
  • 160.
  • 161.
  • 162.
    9-5-2 安全演算法 (SafetyAlgorithm) • 當行程 Pi 需求資源 Needi 時,系統有足夠的可用資源提供使用,即 Needi ≦ Available 。如果如此狀態能滿足每一個行程,系統已處於安全狀態,且安排 出行程安全序列 <Pi, Pj, Pk, …> 。其演算法為: • 1. 宣告 work ← Available; • finish[i] ← false; ( 其中 i = 0, 1, …, n-1) • string ← Ø; • 2. 依序測試 for (i=0; i<n; i++) • if (finish[i] ==false) and (Needi work)≦ then • string ← string + “Pi”; • goto step3; • goto step 4; • 3. work ← work + Allocation; • finish[i] ← true; • goto step 2; • 4. 依序測試 for (i=0; i<n; i++) • if finish[i] == true 表示行程 Pi 順利完成,如果每一行程均順利完成, 系統在安全狀態 ; • 5. print string;
  • 163.
  • 164.
    9-5-3 資源要求演算法 (Resource RequestAlgorithm) • 當行程 Pi 提出資源要求量 Requesti ,要求量不得多於需求量 (Need) ,即 Requesti Needi≦ ,否則有致發生死結的可能;同時要求 量亦不得多於可用量 (Available) ,即 Requesti Available≦ ,否則須等 待系統釋出足夠的資源。其演算法為: • 1. 行程 Pi 提出資源要求 Requesti; • 2. if Requesti Needi≦ then goto step 2; • else 有致生死結的可能 ; • 3. if Requesti Available≦ then goto step 3; • 4. 系統依照安全規則運行: Available ← Available – Requesti; • Allocationi ← Allocationi + Requesti; • Needi ← Needi – Requesti;
  • 165.
    9-6 死結偵測 (DeadlockDetection) • 如前述,如果將系統一直維持在安全區內,雖可 預防死結之發生,但也傷害了系統的效率。我們 可放任系統於非安全區遊走在死結之邊緣外圍, 並於一定時間之間隔,執行一次死結偵測,當發 現有死結發生,立即執行挽救措施,雖然很危險 ,但可將系統效率推升至最高點。我們設計一些 演算法,密切監視系統運行狀況。
  • 166.
    9-6-1 偵測演算法 • 偵測演算法與9-5-2 節之安全演算法是屬同一架構,當行程 Pi 要求資 源時 Requesti ,系統沒有足夠的可用資源提供使用,即 Requesti ≧ Available 。如果如此狀態發生,系統已處於死結狀態。其演算法為: • 1. 宣告 work ← Available; • finish[i] ← false; ( 其中 i = 0, 1, …, n-1) • 2. 依序測試 for (i=0; i<n; i++) • if (finish[i] ==false) and (Requesti work)≦ then • goto step3; • goto step 4; • 3. work ← work + Allocation; • finish[i] ← true; • goto step 2; • 4. 依序測試 for (i=0; i<n; i++) • if finish[i] == false 表示行程 Pi 已處於死結狀態 ;
  • 167.
    圖 9-6-1-1 /圖 9-6-1-2
  • 168.
    9-6-2 單一裝置 (SingleInstance) • 如前述,於資源分配圖,如果各資源類僅有一件 裝置如圖 9-6-2 ,只要有迴圈,就表示死結已發生 。
  • 169.
  • 170.
    9-7 死結消弭 (Recoveryfrom Deadlock) • 當偵測到發生死結時,我們採取兩個對應步驟: 通知系統管理員 (Operator) 採用適當死結消弭措 施;或是以信號告知作業系統起動死結消弭措施 。死結消弭措施可由兩個切入點著手: (1) 從行 程切入, (2) 從資源切入。
  • 171.
    9-8 習題 (Exercises) 1、何謂死結 (Deadlock) ? 2 、當一個行程使用資源時,有那三個過程? 3 、死結發生的必要條件為何? 4 、如何預防死結發生? 5 、如何避免死結發生? 6 、如 9-5-2 節,自行設計系統資源狀況,執行安全演算法。 7 、如 9-6-1 節,自行設計系統資源狀況,執行偵測演算法。 8 、何時啟動偵測演算法? 9 、消弭死結,有那兩種方法?
  • 172.
  • 173.
    第十章 記憶體管理 (Memory Management) •10-1 簡介 • 10-2 記憶體之觀念 (Concept of Memory) • 10-2-1 地址方式 (Address Binding) • 10-2-2 邏輯地址 / 實體地址 (Logical / Physical Address) • 10-2-3 機動載入 / 連接 (Dynamic Loading / Linking) • 10-2-4 重疊 (Overlays) • 10-3 置換 (Swapping) • 10-3-1 回存裝置 (Backing Store) • 10-3-2 置換時間 • 10-3-3 重疊置換 (Overlapped Swapping) • 10-4 連續記憶體配置 (Contiguous Memory Allocation) • 10-4-1 記憶體保護 (Memory Protection) • 10-4-2 記憶體分配 (Memory Allocation) • 10-4-3 碎片 (Fragmentation) • 10-5 分頁 (Paging) • 10-5-1 分頁方法 (Paging Methods) • 10-5-2 硬體支援 (Hardware Support) • 10-5-3 框頁保護 (Frames Protection) • 10-5-4 框頁分享 (Shared Pages) • 10-6 區段 (Segmentation) • 10-7 區段分頁 (Segmentation with Paging) • 10-8 習題 (Exercises) • 10-9 範例系統程式 (Programming) • 10-9-1 區段應用 ( 模擬 10-6 節 )
  • 174.
    10-1 簡介 • 於前數章節,我們談到多個行程(Processes) 競爭 CPU 的使用方法;於本章,我們將另談及多個行 程 (Processes) 競爭記憶體 (Memory) 的應用。為 了安排記憶體作最佳使用,過程中需要良好的管 理,早期僅有單純的記憶體 (Bare Machine) 使用 ,近期發展出置換 (Swapping) 、分頁 (Paging) 、 與區段 (Segmentation) 等方法,增加記憶體使用 之效率。
  • 175.
    10-2 記憶體之觀念 (Conceptof Memory) • 一個行程或執行緒在進入 CPU 前,必須先置入主 記憶體 (Main Memory) , CPU 直接對主記憶體 (Main Memory) 隨機存取 (random access) 資料, 典型的指令執行週期 (Instruction Execution Cycle) 如范紐曼 (Von Neumann) 所提出之執行架構 ( 如 圖 3-5-1) ,由控制單元 (CU Control Unit) 安排從主 記憶體 (Main Memory) 抓取 (fetch) 指令碼 (Instruction) 至邏輯運算單元 (Arithmetic Logic Unit) 內之暫存器 (Register) 作解碼 (decode) ,視 指令碼之需要,再從主記憶體抓取執行所需的資 料 (Data) 。執行完成後將結果 (Result) 傳回主記 憶體。等待執行下一個執行週期。
  • 176.
  • 177.
    10-2-1 地址方式 (AddressBinding) • 當一個程式 (Program) 從開始編輯 (Editing) 到執 行完畢 (Execution) ,其間各程式碼也隨著不同的 過程 (Stages / Time) ,有著不同的記憶體地址方式 (Address Binding) 。
  • 178.
  • 179.
    10-2-2 邏輯地址 /實體地址 (Logical / Physical Address) • 經由 CPU 處理過而產生的一批資料,可自成一組 單元,有其自身之資料置放次序,此時各資料的 次序位置是謂 “邏輯地址 (Logical Address)” 。如此 儲存這些資料的空間是謂 “邏輯地址空間 (Logical Address Space)” 。
  • 180.
  • 181.
    10-2-3 機動載入 /連接 (Dynamic Loading / Linking) • 一個完整的執行程式,除了有主程式 (Main Program) 外, 另有多個等待被呼叫的函數 (Functions) 或副程式 (Subroutine) ,如圖 10-2-3 ,這些程式碼均完整地儲存在 實體記憶體 (Physical Memory) 中。當被執行時,需先將程 式碼載入 (Load) 執行記憶體 (Execution Memory) 或稱邏 輯空間記憶體 (Logical Address Space Memory) 。 • 執行記憶體的容量可能不足以容納全部程式碼,除了主程 式必須載入外,其他函數或副程式則於需要時才被載入, 亦即未獲呼叫 (call) 時不必載入,以節省有限的記憶體空 間,如此之載入是謂 “機動載入 (Dynamic Loading)” 。
  • 182.
  • 183.
    10-2-4 重疊 (Overlays) •當一個程式的程式碼無法同時容納於執行記憶體 時,我們可以重疊方法 (Overlays) 支援執行,先將 經常需要執行的指令 (Instructions) 與資料 (Data) 置入執行記憶體,其他指令與資料則於需要時再 載入,執行完畢後置換出,將記憶體空間留給次 一批指令與資料使用,如此作為是謂 “重疊 (Overlays)” 。
  • 184.
    10-3 置換 (Swapping) •我們已了解,一個行程必須先置入執行記憶體 (Main Memory) ,才可進入 CPU 執行。如圖 10- 3 ,在主記憶體的行程 (Process) 可視需要暫時置 換移出至回存裝置 (Backing Store) ,或在回存裝置 的行程亦可視需要暫時置換移入至主記憶體,如 此移出移入是謂 “置換 (Swapping)” 。其機制是 “置 換器 (Swapper)” 。
  • 185.
  • 186.
    10-3-1 回存裝置 (BackingStore) • 回存裝置是一快速性能的記憶體裝置,一般來言 為一磁碟或磁鼓,當行程從主記憶體被置換出 (Swap out) 時,可在此暫時存駐,並等待時機再 置換入 (Swap in) 主記憶體。 • 回存裝置的容量至少要大於主記憶體的容量,換 言之,需要有足夠容量容納主記憶體上所有的行 程,如此才可勝任回存之任務 (Task) 。
  • 187.
    10-3-2 置換時間 • 行程愈大,置換時間愈長,即置換時間與行程大 小成正比。由圖10-3-2 可知,行程在主記憶體的 置換時間亦將影響 CPU 的工作效率: • Ecpu = (T – (tin + tout)) / T
  • 188.
  • 189.
    10-3-3 重疊置換 (OverlappedSwapping) • 於前節,我們認識,當行程在置換時, CPU 無法 工作以致處於等待狀態。為了解決此問題,我們 可於主記憶體設置兩個以上之緩衝區 (Buffers) , 如圖 10-3-3 ,當置換行程 2 之同時,可將已在緩 衝區之行程 3 調入執行區進入 CPU 執行。如此作 為是謂 “重疊置換 (Overlapped Swapping)” , CPU 將不再浪費在等待上。
  • 190.
  • 191.
  • 192.
    10-4-1 記憶體保護 (MemoryProtection) • 一旦某記憶體區域為某行程使用,此時該區域不 再允許其他資料置入,如此作為是謂 “記憶體保護 (Memory Protection)” 。 • 記憶體保護之方法有: (1) 界限保護 (Bound Protection) , (2) 基底保護 (Base Protection)
  • 193.
  • 194.
    10-4-2 記憶體分配 (MemoryAllocation) • 記憶體 (Main Memory) 隨時有行程 (Processes) 進 出,有些空間被佔用,有些空間未被使用,如圖 10-4-2 ,這些未被使用之空白區域是謂 “未使用坑 (Hole)” 。
  • 195.
  • 196.
    10-4-3 碎片 (Fragmentation) •如圖 10-4-3-1 ,設有記憶體如圖 (a) ,置入行程 Pi 後,剩餘未被佔用的空間是謂 “碎片 (Fragmentation) ,如圖 (b) 。
  • 197.
  • 198.
  • 199.
    10-5 分頁 (Paging) •於前節,為了 “行程 - 記憶體” 作適當配對,我們 飽受連續記憶體 (Contiguous Memory) 與碎片 (Fragmentation) 之苦。本節探討分頁 (Paging) , 其構想來自於: • 1 、指標運用 (Using Pointers) • 2 、框頁運用 (Using Frame)
  • 200.
  • 201.
  • 202.
    10-5-1 分頁方法 (PagingMethods) • 範例如圖 10-5-1-1 ,將行程的程式碼,在邏輯空 間 (Logical Space) 中分三頁置放,經過作業系統 分頁表 (Page Table) 之配置,將行程的 Page0 配置 於實體空間 (Physical Space) 的第 3 頁;行程的 Page1 配置於實體空間的第 6 頁;行程的 Page2 配 置於實體空間的第 1 頁。
  • 203.
  • 204.
  • 205.
    10-5-2 硬體支援 (HardwareSupport) • 如圖 10-5-2-1 , TLB 是以快速存取硬體材質製造 ,框頁數量不多,功能與分頁表 (Page Table) 相 同,但在存取速度上, TLB 較分頁表快速許多。 當 “邏輯 - 實體” 對應地址頁目配對時,除了必須 記錄於分頁表外,另擇常用的頁目抄錄至 TLB 。
  • 206.
  • 207.
    10-5-3 框頁保護 (FramesProtection) • 如圖 10-5-3-1 ,我們可於分頁表 (Page Table) 增設 一個位元 (Bit) ,標註 “可用 (Valid)” 與 “禁用 (Invalid)” 。 • 標註 “可用 (Valid)” 是指當時可對該框頁執行存取 ;標註 “禁用 (Invalid)” 是指當時禁止對該框頁執 行存取,亦即對該框頁實施保護 (Protection) 。如 圖 10-5-3-1 ,實體空間的第 5 頁。
  • 208.
  • 209.
    10-5-4 框頁分享 (SharedPages) • 如圖 10-5-4-1 ,行程 P1 之第 0 頁 Data0 與行程 P2 之第 0 頁 Data0 相同;行程 P1 之第 1 頁 Data1 與 行程 P2 之第 1 頁 Data1 相同,因此 P1 與 P2 可分 享實體記憶體 (Physical Memory) 之 Data0 與 Data1 。其優點為可節省框頁。
  • 210.
  • 211.
    10-6 區段 (Segmentation) •如圖 10-6-1 ,為了管理方便,系統將相近功能的 程式碼以邏輯地址叢聚在一個區段內,亦可如分 頁方法以區段表 (Segment Table) 對映至實體記憶 體。
  • 212.
  • 213.
  • 214.
  • 215.
    10-7 區段分頁 (Segmentationwith Paging) 如圖 10-7 ,我們將區段方法 (Segmentation) 與分頁方法 (Paging) 合併使用,其間對映過程: (1) 於區段表 (Segmentation Table) ,邏輯區段起始位址 (Segmentation Number) 對映實體區段基底地址 (Physical Base Address) ; (2) 區段表 (Segmentation Table) 中該區段之邏輯相對距離 (Logical Offset) 對映至分頁表 (Page Table) 之邏輯分頁目 (Logical Pages) ; (3) 於分頁表 (Page Table) ,邏輯分頁目 (Logical Pages) 對映 實體分頁目 (Physical Pages) ; (4) 綜合項 (1) 之實體區段基底地址 (Physical Base Address) 與項 (3) 之實體分頁目 (Physical Pages) ,可將各區段以區 段分頁方法 (Segmentation with Paging) 完整地對映至實體 記憶體。
  • 216.
  • 217.
    10-8 習題 (Exercises) 1、記憶體之地址 (Address) 有那兩種表示方式? 2 、絕對地址與相對地址之關係為何? 3 、何謂邏輯地址 (Logical Address) ? 4 、何謂機動載入 (Dynamic Loading) ? 5 、何謂重疊 (Overlays) ? 6 、何謂置換 (Swapping) ? 7 、置換時間與 CPU 的工作效率有合關係? 8 、記憶體保護之方法有那些? 9 、行程 - 未使用坑之配對法則有那些? 10 、何謂內部碎片 (Internal Fragmentation) ? 11 、何謂外部碎片 (External Fragmentation) ? 12 、何謂快取分頁緩衝器 (TLB Translation Look-aside Buffer) ?
  • 218.
    第十一章 虛擬記憶體 (Virtual Memory) •11-1 簡介 • 11-2 虛擬記憶體之觀念 (Concept of Virtual Memory) • 11-3 分頁要求 (Demand Paging) • 11-4 框頁替換 (Page Replacement) • 11-5 頁框分配 (Allocation of Frames) • 11-6 輾轉混亂現象 (Thrashing) • 11-7 其他考量 (Other Considerations) • 11-8 習題 (Exercises) • 11-9 範例系統程式 (Programming) • 11-9-1 分頁設計 ( 模擬 11-3-2 節 )
  • 219.
    11-1 簡介 • 於前章,我們很努力地探討記憶體與其管理,目 的無非是要如何配合多工程式(Multiprogramming) 之執行,即記憶體如何同時 (simultaneously) 容納 多個行程 (Processes) 。於本章,我們更關切,無 論行程有多大,在執行前,我們如何將該行程之 全部程式碼先搬置於主記憶體內。 • 事實上,一定有某些行程 (Processes) 大於主記憶 體之實體容量,亦即在執行前,我們無法將該行 程之全部程式碼先搬置於主記憶體內。此時我們 可藉本章提出之虛擬記憶體方法尋求解決。
  • 220.
    11-2 虛擬記憶體之觀念 (Concept ofVirtual Memory) • 我們已非常了解,任何要進入 CPU 執行的行程 (Process) 均需先置入主記憶體,如果行程大於主 記憶體的容量,我們無法將該行程的程式碼同時 完整地置入主記憶體,亦即無法達到執行條件的 要求 (Execution Requirements) 。
  • 221.
  • 222.
    11-3 分頁要求 (DemandPaging) • 於一般作業系統,虛擬記憶體 (Virtual Memory) 之形成,均是因執行 “分頁要求 (Demand Paging)” 而產生的。同理、“區段要求 (Segment Paging)” 亦 可產生虛擬記憶體。
  • 223.
  • 224.
    11-3-1 分頁要求觀念 (Concept ofDemand Paging) • 分頁要求器 (Pager) 僅將需要執行的框頁置換入主 記憶體,如此可節省記憶體之實體容量,及節省 不必要框頁的置換時間。
  • 225.
  • 226.
  • 227.
    11-3-2 分頁要求之執行意義 (Performance ofDemand Paging) • 於前節我們已了解,當系統檢視分頁表 (Page Table) 之檢視位元 (Valid / Invalid) 時,如果是 v 則表示該框頁已置入實體空間,可進入 CPU 執行 ;如果是 i 則表示該框頁尚未置換入實體空間, 此時若被選中,則視為 “選頁錯誤 (Page Fault)” , 系統將執行 “選頁錯誤中斷 (Page Fault Interrupt Trap)” 。
  • 228.
    11-4 框頁替換 (PageReplacement) • 以圖 11-4 為例,當執行行程 (Process) P0 時,有 3 個框頁要求,檢視分頁表知該 3 頁已置入實體記 憶體之 0~2 頁,可立即執行 P0 。
  • 229.
  • 230.
    11-4-1 框頁替換之觀念 (Concept ofPage Replacement) • 繼續上述範例,如圖 11-4-1 ,行程 P1 有 4 個框頁 要求,檢視分頁表,有 2 頁已置入實體記憶體之 3~4 頁,另外 2 頁 P1_Pg2 、 P1_Pg3 却無空間可 置入 ( 實體記憶體之 5~6 頁為 Invalid 不得置入資 料 )
  • 231.
  • 232.
    11-4-2 先入先出框頁替換 (FIFO PageReplacement) • 範例如圖 11-4-2-1 , Position Labels 為時間位置, Demand Page Reference String 為框頁要求序列, 長方形為框頁 ( 本例有 3 頁 ) ,星號 (*) 為撃中 (Hit) 。
  • 233.
  • 234.
  • 235.
    11-4-3 最佳框頁替換 (Optimal PageReplacement) • 依框頁要求序列,依序將每頁資料置入頁框,當 頁框數量不足時,實施框頁替換,系統檢視未來 各資料之使用機會,將機會最低的資料置出。如 圖 11-4-3
  • 236.
  • 237.
    11-4-4 最近最少使用框頁替換 (Least RecentlyUsed Page Replacement) • 前節所述的最佳框頁替換,是預估未來的機會, 要付出極高的代價,甚或不可行。本節之最近最 少使用框頁替換 (LRU Least Recently Used Page Replacement) 是從相反的方向來檢視,預估未來 很困難,檢視過去的歷史記錄則很容易。其著眼 點是如果此時使用過某資料,可能有機會再提出 使用要求。如圖 11-4-4
  • 238.
  • 239.
    11-5 頁框分配 (Allocationof Frames) • 於作業系統,分頁要求是影響工作效率的重要因 素之一,相對的,頁框數量的多寡却是影響此項 因素的重要資源 (Resource) 。框頁分配 (Allocation of Frames) 得到愈多,選頁錯誤 (Page Fault) 愈少 ,撃中率 (Hit Rate) 愈高,以致整體系統的工作效 率 (Efficiency) 也隨之提高。
  • 240.
    11-6 輾轉混亂現象 (Thrashing) •當一個行程 (Process) 分配得到的頁框數量少於其 最低需求數量時,系統應立即終止該行程,並將 其已佔有的頁框分配給予其他行程使用。 • 當任何行程的頁框不足時,如 11-3-1 節所述,很 快即發生 “選頁錯誤 (Page Fault)” ,該行程必須立 刻執行框頁替換,但因頁框不足,所有的框頁均 在使用中,沒有空間可供替換,選頁錯誤 (Page Fault) 立即又再發生,前一個替換尚未解決,次 一個替換又接踵而來,如此惡性分頁替換是謂 “輾 轉混亂現象 (Thrashing)” 。
  • 241.
  • 242.
  • 243.
  • 244.
    11-6-4 選頁錯誤頻率 (Page FaultFrequency) • 我們已了解,當頁框數量不足時,擊中率降低, 選頁錯誤率增加。如圖 11-6-3 ,系統可設一選頁 錯誤頻率上限,當到達上限時,表示頁框數量開 始不足,系統應增遣頁框以供使用。如果選頁錯 誤頻率仍不下降,表示已發生輾轉混亂現象 (Thrashing) ,系統應終止部份行程,減少競爭頁 框的對手,同時釋出頁框。當到達下限時,表示 頁框數量充裕,系統可減少頁框之數量,節省系 統資源。
  • 245.
  • 246.
    11-7 其他考量 (OtherConsiderations) • 由前述各節,我們認識到 “分頁作業 (Page Operation)” 的重點考慮是在: (1) 分頁替換,與 (2) 頁框分配,其意義均是為了增加系統效率。除 了前述各節述及的考量外,本節再探討一些其他 考量。 • 1 、預先分頁 (Prepaging) • 2 、分頁大小 (Page Size) • 3 、快取分頁緩衝器 (TLB Translation Look-aside Buffer) • 4 、程式結構 (Program Structure) • 5 、 I/O 鎖定
  • 247.
  • 248.
  • 249.
    11-8 習題 (Exercises) 1、為了節省使用空間,系統總是先檢視那些不會立刻使用的程式碼? 2 、使用虛擬記憶體方法,可以虛擬記憶體 (Virtual Memory) 補助實體記 憶體 (Physical Memory) 之不足,其利益優勢為何? 3 、何謂 “懶惰置換 (Lazy Swapping)” ? 4 、何謂 “選頁錯誤 (Page Fault)” ? 5 、先進先出框頁替換法 (FIFO Page Replacement) 之優缺點為何? 6 、最佳框頁替換 (Optimal Page Replacement) 的優缺點為何? 7 、頁框數量的多寡如何影響系統的工作效率? 8 、理論上,一個行程至少應分配得到那些頁框? 9 、何謂全域替換 (Global Replacement) ? 10 、何謂局部替換 (Local Replacement) ? 11 、何謂 “輾轉混亂現象 (Thrashing)” ? 12 、挽救輾轉混亂現象 (Thrashing) 的方法為何?
  • 250.
    第十二章 檔案系統介面 (File SystemInterface) • 12-1 簡介 • 12-2 檔案概念 (File Concept) • 12-2-1 檔案屬性特徵 (File Attributes) • 12-2-2 檔案操作 (File Operations) • 12-2-3 開啟 / 關閉檔案 (Open / Close File) • 12-2-4 鎖住 / 釋出檔案 (Lock / Release File) • 12-2-5 檔案類型 (File Types) • 12-3 檔案存取方法 (Access Methods) • 12-4 目錄結構 (Directory Structure) • 12-4-1 單層目錄 (Single Level Directory) • 12-4-2 雙層目錄 (Two Level Directory) • 12-4-3 樹狀目錄 (Tree Structured Directories) • 12-4-4 非迴路圖形目錄 (Acyclic Graph Directories) • 12-4-5 綜合圖形目錄 (General Graph Directories) • 12-5 檔案系統掛載 (File System Mounting) • 12-6 檔案分享 (File Sharing) • 12-7 檔案保護 (File Protection) • 12-8 習題 (Exercises) • 12-9 範例系統程式 (Programming) • 12-9-1 讀取檔案屬性 ( 模擬 12-2-1 節 ) • 12-9-2 檔案之寫入 / 讀取 ( 模擬 12-2-2 節 )
  • 251.
    12-1 簡介 • 對使用者來言,檔案(File) 是能見度相當高的作 業系統應用,無論是作業系統的程式 (Program) 與資料 (Data) 、或是使用者的程式與資料,檔案 都提供了線上 (On Line) 記憶體之存取機制 (Access Mechanism) 。 • 檔案系統可概分為兩類: (1) 檔案系統、與 (2) 目錄系統。檔案系統處理檔案本身的資料存取問 題,目錄系統處理各檔案的歸類問題。也有少數 大型電腦設置叢目錄系統 (Partition) ,處理各目錄 的歸類問題。
  • 252.
    12-2 檔案概念 (FileConcept) • 電腦的實體儲存裝置有光碟、磁碟、與磁帶,檔 案儲存於這些裝置,均不會因停電、關機、與重 新啟動而丟失資料。 • 檔案 (File) 是以一個名稱 (Name) 集合有關係資料 (Related Information) 的組合,亦即一個名稱及一 串位元 (Bits) 、位元組 (Bytes) 、列 (Lines) 、與資 料錄 (Records) ,從邏輯空間 (Logical Space) 由作 業系統對映至實體空間 (Physical Space) 。
  • 253.
    12-2-1 檔案屬性特徵 (FileAttributes) • 隨著電腦系統的不同,檔案突顯的屬性特徵 (Attributes) 項目亦隨之不同,一般來言,檔案屬性特徵項目有: • 1 、檔案名稱 (Name) • 2 、檔案識別碼 (Identifier) • 3 、檔案類型 (Type) • 4 、檔案位置 (Location) • 5 、檔案大小 (Size) • 6 、檔案保護 (Protection) • 7 、時間 (Time)
  • 254.
    12-2-2 檔案操作 (FileOperations) • 檔案操作 (File Operations) 是指系統可直接處理檔 案的模式,經常執行的操作有: (1) 建立檔案 (Creating a File) 、 (2) 寫入檔案 (Writing a File) 、 (3) 讀取檔案 (Reading a File) 、 (4) 刪除檔案 (Deleting a File) 、 (5) 重新命名檔案 (Renaming a File) 、 (6) 合併檔案 (Appending New Information) 、 (7) 截斷檔案 (Truncating a File) 等
  • 255.
    12-2-3 開啟 /關閉檔案 (Open / Close File) • 當寫入檔案或讀出檔案之前,需先藉由系統呼叫 open( ) 、或 read( ) / write( ) 將檔案開啟 (Open) ; 以 close( ) 關閉檔案、或當執行完畢後系統自動將 檔案關閉。 • 如圖 12-2-3-1 ,系統設置 “開啟檔案表 (Open File Table)” ,將當時正被開啟的各檔案納入其中,使 用者 (Users) 與系統 (System) 可於該表查詢已開 啟的檔案,減免在記憶體搜尋所付出的代價。當 檔案被關閉後,亦將於表中刪除該檔案。
  • 256.
  • 257.
  • 258.
  • 259.
    12-2-4 鎖住 /釋出檔案 (Lock / Release File) • 鎖住檔案 (Lock File) 的意義是:除了某些特定行 程 (Specific Processes) 之外,其他行程 (Other Processes) 均不得進出該檔案。 • 讀取鎖住 (Readers Locks) • 分享鎖住 (Shared Lock) • 委託鎖住 (Mandatory Lock)
  • 260.
    12-2-5 檔案類型 (FileTypes) • 通常於檔案名稱上註明檔案類型,將檔案名稱分 為兩部份:主檔名 (File Name) 與副檔名 (File Extension Name) ,之間以句點 (Period Character) 分隔。主檔名為檔案名稱,也即檔案的起始位置 ;副檔名為該檔案的類型 (Type) ,如 testFile.java 。 • 隨著不同的系統,檔案名稱也會受到一些限制, 例如 Dos 系統:主檔名不得大於 8 個字元,副檔 名不得大於 3 個字元。我們常見到的檔案類型如 圖 12-2-5 。
  • 261.
  • 262.
    12-3 檔案存取方法 (AccessMethods) • 使用檔案資料 (Information) ,即是將檔案資料讀 取 (Read File) 至電腦系統記憶體、或是將電腦系 統之資料寫入至檔案 (Write File) ,可統稱謂 “檔案 存取 (Access File)” 。常用的存取方法有 (1) 循序 存取 (Sequential Access) , (2) 直接存取 (Direct Access) , (3) 索引存取 (Index Access) 。 • 1 、循序存取 (Sequential Access) • 2 、直接存取 (Direct Access) • 3 、索引存取 (Index Access)
  • 263.
  • 264.
  • 265.
  • 266.
    12-4 目錄結構 (DirectoryStructure) • 一般電腦系統均擁有數千個檔案 (Files) ,良好的 管理是非常有必要的,檔案儲存在記憶體中,故 檔案管理亦即是記憶體管理的延伸,例如於輔助 記憶體 ( 如磁碟 ) ,我們可分為兩階段處理: • 1 、磁碟分割 (Partitions) • 2 、建立目錄 (Directory)
  • 267.
  • 268.
    12-4-1 單層目錄 (SingleLevel Directory) • 單層目錄 (Single Level Directory) 是最簡單的目錄 應用,如圖 12-4-1 ,所有的檔案都包含在同一目 錄中。
  • 269.
  • 270.
    12-4-2 雙層目錄 (TwoLevel Directory) • 當某使用者註冊後,如圖 12-4-2 ,系統立即將該 使用者名稱建立於主檔目錄 (MFD) 內,並允許該 使用者建立自己的使用者目錄 (UFD) ,指向使用 者檔案的入口 (Entries) 。
  • 271.
  • 272.
    12-4-3 樹狀目錄 (Tree StructuredDirectories) • 如圖 12-4-3 ,樹狀目錄的特徵有: • (1) 連通性 (Connectivity) • (2) 無循環迴圈 (Acyclic Connection)
  • 273.
  • 274.
    12-4-4 非迴路圖形目錄 (Acyclic GraphDirectories) • 首先我們須辨別何謂迴圈 (Cyclic Connection) ?何 謂迴路 (Cyclic Graph) ?由圖 12-4-4 與圖 12-4-5 , 可作非常清楚地說明,於圖 12-4-4 之 rbcda 是迴 圈,但不是迴路;於圖 12-4-5 之 abc 是迴圈,亦 是迴路。
  • 275.
  • 276.
  • 277.
    12-5 檔案系統掛載 (FileSystem Mounting) • 為了更靈活應用檔案系統,有些系統允許將一串 次目錄系統 ( 如圖 12-5-1-(b)) 或檔案 (File) ,移動 穿梭於主目錄系統,如此作為是謂 “檔案系統掛載 (File System Mounting) 。
  • 278.
  • 279.
  • 280.
    12-6 檔案分享 (FileSharing) • 一個檔案的價值,與其被分享的程度是成正比的 ,因此作業系統對檔案分享的管理,亦是影響工 作效率的一環。 • 依區域範圍,檔案分享可概分為本機範圍分享 (Local File Sharing) 與網路範圍分享 (Remote File Sharing) ,前者是由本機系統的多個使用者,依被 允許的權限分享檔案;後者是由網路上的多個使 用者,依被允許的權限分享檔案,有關網路方面 的問題,本書將爾後詳細討論。 • 無論是何種範圍,檔案分享能提昇檔案的價值, 但也是非常危險的作為,系統須非常謹慎地作安 全措施管理。
  • 281.
    12-7 檔案保護 (FileProtection) • 對於儲存於電腦系統中之資料 (Information) ,我們應確保 其無實體損壞 (Physical Damage) 、與確保其適當存取 (Proper Access) 。 • 無實體損壞是指確保可信度 (Reliability) ,目前最完整的方 法是定期複製檔案備存 (Back up) ;適當存取是指檔案保護 (Protection) ,如果是單人單工系統,將無存取保護的問題 ,如果是多人多工系統即需考量檔案保護如下: • 1 、存取類型 (Type of Access) : • 2 、存取控制 (Access Control) : • 3 、其他保護 (Other Protection) :
  • 282.
    12-8 習題 (Exercises) •1 、檔案屬性特徵項目有那些? • 2 、經常執行的操作操作有那些? • 3 、當行程關閉檔案時,系統應執行那些步驟? • 4 、何謂委託鎖住 (Mandatory Lock) ? • 5 、何謂建議鎖住 (Advisory Lock) ? • 6 、檔案存取方法有那些? • 7 、樹狀目錄的特徵有那些? • 8 、綜合圖形目錄 (General Graph Directories) 之缺點為何 ? • 9 、造成綜合圖形目錄的原因為何? • 10 、何謂 “掛載點 (Mount Point)” ? • 11 、掛載可類分為那三種型態? • 12 、檔案存取類型 (Type of Access) 有那些?
  • 283.
    第十三章檔案系統運作 (File System Implementation) •13-1 簡介 • 13-2 檔案系統結構 (File System Structure) • 13-3 檔案系統運作 (File System Implementation) • 13-3-1 檔案系統概念 (Concept of File System) • 13-3-2 分割區與掛載 (Partitions and Mounting) • 13-3-3 虛擬檔案系統 (Virtual File System) • 13-4 目錄運作 (Directory Implementation) • 13-5 空間分配方法 (Allocation Methods) • 13-5-1 連續空間分配 (Contiguous Allocation) • 13-5-2 鏈接空間分配 (Linked Allocation) • 13-5-3 索引空間分配 (Indexed Allocation) • 13-5-4 運作性能 (Performance) • 13-6 空白空間之管理 (Free Space Management) • 13-7 網路檔案系統 (NFS Network File System) • 13-8 習題 (Exercises)
  • 284.
    13-1 簡介 • 於前章我們已了解,檔案系統提供了線上(On Line Storage) 儲存裝置 (Storage) 與檔案存取 (Access Files) 機制。 • 本章將探討磁碟儲存裝置 (Disk) 、與在磁碟上如 何執行檔案存取 (File Access) ,內容含及檔案系統 結構 (File System Structure) 、磁碟空間分配 (Allocate Disk Space) 、標定資料位置 (Track Data Location) 、及提供儲存裝置與作業系統之執行介 面 (Interface) 。
  • 285.
    13-2 檔案系統結構 (FileSystem Structure) • 在輔助記憶體 (Secondary Storage) 種類中,磁碟 (Disk) 是 很重要的儲存裝置 (Device) ,且已為今日大多數電腦系統 所採用,其原因是磁碟具有: (1) 重寫性 (Rewritable) : 寫入磁碟的資料,刪除後,相同的位置可再寫入其他資料 。 (2) 區塊性 (Blocking) :可作區塊性資料之存取,以致 可輕易執行檔案之直接存取 ( 如 12-3 節所述 ) 。 • 檔案系統 (File System) 最重要的兩項工作為: (1) 如何定 義 (Define) 一個檔案及其屬性特徵 (Attributes) ? (2) 如何 將邏輯檔案系統 (Logical File System) 對映至實體檔案系統 (Physical File System) ?檔案系統是為多層設計 (Layer Design) ,如圖 13-2 ,上端為邏輯空間 (Logical Space) ,下 端為實體空間 (Physical Space) 。
  • 286.
  • 287.
    13-3 檔案系統運作 (File SystemImplementation) • 於前章 12-2-2 節,我們曾探討單純的檔案操作 (File Operations) ,於本節,我們將探討整體性的 檔案運作 (File System Implementation) 。 • 檔案系統概念 (Concept of File System) • 分割區與掛載 (Partitions and Mounting)
  • 288.
  • 289.
    13-4 目錄運作 (DirectoryImplementation) • 選擇適當的目錄管理演算法 (Directory Management Algorithms) 與空間分配 (Directory Allocation) ,對檔案的執行效率 (Efficiency) 有其 一定程度的影響。使用者 (Users) 於目錄 (Directory) 搜尋檔案的方法有: • 1 、線性串列 (Linear List) • 2 、雜湊表 (Hash Table)
  • 290.
    13-5 空間分配方法 (Allocation Methods) •無可避免地,總是有多個檔案儲存在一個磁碟內 ,此時如何將磁碟的空間適當地分配給予各檔案 ,將影響磁碟空間之有效使用 (Space Utilizing Efficiency) 、與檔案存取 (Access Files) 的速率。磁 碟空間之主要分配方法有:連續空間分配 (Contiguous Allocation) 、鏈接空間分配 (Linked Allocation) 、索引空間分配 (Indexed Allocation) 。
  • 291.
  • 292.
  • 293.
  • 294.
  • 295.
    13-6 空白空間之管理 (Free SpaceManagement) • 磁碟的空間是有限的 (Limited) ,當新檔案建立時 ,系統要搜尋空白空間 (Free Space) 來安置該新檔 案;當檔案被刪除 (Delete) 時,系統要管理這些 被釋出 (Released) 的空間。今日電腦系統,對空 白空間的管理方法有: • 1 、位元記錄 (Bit Vector) • 2 、連接串列 (Linked List) • 3 、群組串列 (Group List)
  • 296.
    13-7 網路檔案系統 (NFS NetworkFile System) • 於前述 13-3-3 節,我們曾述及,虛擬檔案系統之 組成架構有三層,本節所述的虛擬網路檔案系統 亦是如此,如圖 13-7 :
  • 297.
  • 298.
    13-8 習題 (Exercises) 1、今日大多數電腦系統採用磁碟的原因為何? 2 、檔案系統 (File System) 最重要的兩項工作為何? 3 、檔案系統是為多層設計 (Layer Design) ,可分為那幾習? 4 、虛擬檔案系統有那三層 (Layers) ? 5 、使用者 (Users) 於目錄 (Directory) 搜尋檔案的方法有那 些? 6 、磁碟空間之主要分配方法有那些? 7 、連續空間分配之優缺點為何? 8 、鏈接空間分配的缺點為何? 9 、空白空間的管理方法那些?
  • 299.
  • 300.
    第十四章 輸入輸出系統 (I/O Systems) •14-1 簡介 • 14-2 概念 (Overview) • 14-3 I/O 硬體 (I/O Hardware) • 14-3-1 匯流排 (Bus) • 14-3-2 連接埠 (Port) • 14-3-4 中斷 (Interrupts) • 14-3-5 直接記憶體存取 (Direct Memory Access) • 14-4 I/O 介面應用 (Application I/O Interface) • 14-5 核心 I/O 次系統 (Kernel I/O Subsystem) • 14-6 硬體 I/O 操作 (Transforming I/O to Hardware Operation) • 14-7 串流 (Streams) • 14-8 執行效率 (Performance) • 14-9 習題 (Exercises) • 14-10 範例系統程式 (Programming) • 14-10-1 資料串流 FileInputStream 與 FileOutStream( 模擬 14-7 節 ) • 14-10-2 資料串流 DataInputStream 與 DataOutStream( 模擬 14-7 節 )
  • 301.
    14-1 簡介 • 電腦的兩大主要工作(Jobs) ,一是前數章所探討 的工作處理 (Job Processing) ,另一個即是 I/O 。 因 I/O 的執行速率較慢,比較上系統似用較多的 時間在處理 I/O 事宜。 • 作業系統用於 I/O 的部份,是在管理 (Manage) 與 控制 (Control) 周邊裝置與 I/O 運作,本章將探討 : (1) I/O 硬體操作 (Hardware) 、 (2) I/O 服務 (Service) 、 (3) I/O 介面 (Interface) 、 (4) I/O 運作 (Implement) 、與 (5) 設計改善 (Design) 等內容。
  • 302.
    14-2 概念 (Overview) •作業系統的主要設計考量,是在如何導引控制 (Control) 與電腦連通的各個裝置。各 I/O 裝置無 論是在功能上,或是在速度上都是各不相同,因 此電腦系統也應以廣泛的能力來面對。為了慎重 處理,作業系統於其核心 (Kernel) 另設 I/O 次系 統 (Subsystem) 。 • 在力求改善 I/O 技術的今日,時而出現兩個相互 矛盾的方向: (1) 我們竭盡努力將 I/O 裝置標準化 ,期使 I/O 控制能統一且簡化; (2) 另一方面,我 們又竭盡努力地開發與眾不同的 I/O 方法,以因 應新的裝置與技術。
  • 303.
    14-3 I/O 硬體(I/O Hardware) • 我們常用的周邊裝置 (Devices) 有: (1) 儲存裝置 (Storage Devices) 如磁碟 (Disks) 、磁帶 (Tapes) 等 ; (2) 傳輸裝置 (Transmission Devices) 如網路 (Network) 、數據機 (Modems) 、讀卡機 (Cards) 等 ; (3) 人機介面 (Human Interface) 如螢幕 (Screen) 、鍵盤 (Keyboard) 、滑鼠 (Mouse) 、搖桿 (Joystick) 等。 • 無論電腦周邊設備有多廣,在概念上我們努力解 決 (1) 如何將這些裝置與電腦掛載連接 (Attached) ? (2) 如何以軟體程式 (Software) 來控 制這些硬體裝置 (Hardware) ?
  • 304.
    14-3-1 匯流排 (Bus) •周邊裝置以匯流排 (Bus) 與電腦系統互通訊息 (Signals) 和資料 (Data) ,裝置連線與匯流排之接 點稱為連接埠 (Connection Ports) ,匯流排 (Bus) 架構有三類:
  • 305.
  • 306.
  • 307.
  • 308.
  • 309.
    14-3-2 連接埠 (Port) •裝置與連線的接點之間設置 “連接埠 (Port)” ,通 常是由 4 個暫存器所組成,狀態暫存器 (Status) 、 控制暫存器 (Control) 、資料輸入暫存器 (Data In) 、資料輸出暫存器 (Data Out) 。內容如下: • 狀態暫存器 (Status) • 控制暫存器 (Control) • 資料輸入暫存器 (Data In) • 資料輸出暫存器 (Data Out)
  • 310.
    14-3-3 握手與協定 (Handshakingand Protocol) • 為了容易解說,我們以前述 14-3-1 節之輪詢型 (Pulling) 為例,本機系統 (Host) 與裝置控制器 D1 之間,如何互通訊息?如圖 14-3-3-1 :
  • 311.
  • 312.
    14-3-4 中斷 (Interrupts) •如圖 14-3-4-1 ,在硬體機制上, CPU 與各裝置控 制器之間,設有一中斷需求線 (Interrupt Request Line) 。系統執行中斷之步驟如下:
  • 313.
  • 314.
  • 315.
    14-3-5 直接記憶體存取 (Direct MemoryAccess) • 為了資料傳遞的靈活性與方便性,如果當時: (1) CPU 非常忙碌; (2) 傳送大量資料; (3) 確定無傷 害系統的資料,資料可不經過 CPU 之帶領,直接 從儲存裝置 ( 如磁碟 ) 傳遞至主記憶體 (Main Memory) 之指定位置,如是之資料傳遞是謂 “直 接記憶體存取 (DMA Direct Memory Access)” 。依 圖 14-3-5-1 ,直接記憶體之執行步驟如下:
  • 316.
  • 317.
    14-4 I/O 介面應用 (ApplicationI/O Interface) • I/O 裝置種類繁多,如果要每種均兼顧,系統必將 龐大且不易管理;如果不每種兼顧,則又將無法 有效執行。為了解決如是問題,我們將作業系統 之 I/O 部份,如圖 14-4-1 作分層設計 (Multi−Level Design) 。
  • 318.
  • 319.
  • 320.
    14-5 核心 I/O次系統 (Kernel I/O Subsystem) • I/O 工作範圍廣泛,作業系統於其核心 (Kernel) 另 設置核心 I/O 次系統 (Kernel I/O Subsystem) ,以方 便管理排程 (Scheduling) 、緩衝 (Buffering) 、快取 (Caching) 、串置執行 (Spooling) 等 I/O 事項。
  • 321.
    14-6 硬體 I/O操作 (Transforming I/O to Hardware Operation) • 從應用程式 (Application) 提出 I/O 需求 (I/O Request) ,到從磁碟 (Disk) 讀取檔案,其間過程 如前述圖 14-4-1 ,穿過 I/O 次系統層 (I/O Subsystem Level) 、裝置驅動程式層 (Device Driver Level) 、裝置控制器層 (Device Controller Level) 、 到硬體裝置。如圖 14-6 ,我們可觀查一個 I/O 需 求 (I/O Request) 的執行週期 (Life Cycle) :
  • 322.
  • 323.
    14-7 串流 (Streams) •當使用者行程 (User’s Process) 與裝置 ( 如磁碟 ) 作資料傳遞時,系統將資料安排成串流形態,如 圖 14-7 ,由三部份組成: • (1) 串流頂前端 (Stream Head) • (2) 驅動尾後端 (Driver End) • (3) 串流模型 (Stream Modules)
  • 324.
  • 325.
    14-8 執行效率 (Performance) •系統之執行效率,對 I/O 有其深重的影響, CPU 擔負著執行裝置驅動 程式碼 (Device Driver Codes) 、與 I/O 排程 (Schedule) ;今日新型的電 腦雖然在一秒內可同時執行上千個中斷常式 (Interrupt Routines) ,中 斷仍然是電腦系統的一項重大負擔;網路資料之傳遞是 I/O 項目之一 ,其是否傳遞流暢亦影響執行效率。為了改善 I/O 執行效率,系統應 : • 1 、如 5-3-3 節,減少內文切換次數 (Context Switches) 。 • 2 、減少在記憶體中複製資料的次數。 • 3 、降低中斷執行頻率 (Frequency) ,盡量執行大量資料傳遞 (Large Transfer) 、靈巧控制器 (Controller) 、聰明輪詢 (Polling) 。 • 4 、使用 DMA ,增加同步傳遞資料的機會。 • 5 、盡可能將行程關鍵資訊 (Processing Primitives) 推向硬體,使裝置 控制器 (Device Controller) 更能配合 CPU 與匯流排 (Bus) 之操作。 • 6 、平衡 CPU 、記憶體、匯流排、 I/O 之執行,如果其中有一項特別 熱烈,均將導致其他項目的怠惰 (Idleness) ,亦即降低系統效率。
  • 326.
  • 327.
    14-9 習題 (Exercises) 1、在力求改善 I/O 技術的今日,出現那兩個相互矛盾的方向? 2 、何謂匯流排 (Bus) 之雛菊鏈型 (Daisy Chaining) 架構?其優缺點為何? 3 、何謂匯流排 (Bus) 之輪詢型 (Pulling) 架構?其優缺點為何? 4 、何謂匯流排 (Bus) 之獨立型 (Independent) 架構?其優缺點為何? 5 、連接埠 (Port) 是由那 4 個暫存器所組成? 6 、何謂不可遮罩中斷 (Nonmaskable Interrupt) / 遮罩中斷 (Maskable Interrupt) ? 7 、使用直接記憶體存取 (DMA) 的時機為何? 8 、何謂 I/O 快取 (Caching) ? 9 、試請列出 I/O 需求 (I/O Request) 的執行週期 (Life Cycle) 。 10 、系統如何改善 I/O 執行效率?
  • 328.
    第十五章 大量儲存結構 (MassStorage Structure) • 15-1 簡介 • 15-2 磁碟結構 (Disk Structure) • 15-3 磁碟排程 (Disk Scheduling) • 15-4 磁碟管理 (Disk Management) • 15-5 置換空間管理 (Swap Space Management) • 15-6 磁碟矩陣結構 • 15-7 磁碟掛載應用 (Disk Attachment) • 15-8 穩定儲存應用 (Stable Storage Implementation) • 15-9 習題 (Exercises)
  • 329.
    15-1 簡介 • 就檔案系統(File System) 來言,我們曾於第十二 章探討過使用者與檔案系統間之關係,於十三章 探討過作業系統與檔案間之運作關係,於本章, 我們將討論檔案與儲存裝置的問題,特別是磁碟 (Disk) 之管理。
  • 330.
    15-2 磁碟結構 (DiskStructure) • 新型磁碟機猶如是一個大型的一維資料矩陣 (One Dimensional Array) ,矩陣元素由邏輯區塊 (Logical Block) 組成,亦即最小的傳輸單位 (Unit of Transfer) 。一個邏輯區塊通常有 512 個位元組 (Bytes) ,少數電腦系統採用 1,024 個位元組。 • 在實體 (Physical) 上,如圖 15-2 ,磁碟以磁區 (Sector) 、磁軌 (Track) 、磁柱 (Cylinder) 為儲存位 置單元。磁區 0 在最外圈磁軌之起點,多個磁片 之相對磁軌組成磁柱。
  • 331.
  • 332.
    15-3 磁碟排程 (DiskScheduling) • 作業系統如何安排存取磁碟之資料,將影響系統 之執行效率。如圖 15-3 ,通常存取磁碟資料可分 4 個時間步驟: • (1) 磁軌搜尋時間 (Seek Time) • (2) 旋轉延遲時間 (Rotational Latency) • (3) 資料傳輸時間 (Transfer Time) • (4) 綜合執行時間 (Bandwidth Scheduling)
  • 333.
  • 334.
    15-3-1 先到先執行 (FCFSScheduling) • 設有一範例,磁頭當時位置在 50 ,磁碟等待佇列 (Waiting Queue) 內之資料磁柱 (Cylinder) 次序 (Order) 為 ( 或稱資料點次序 ) : • 95, 155, 30, 120, 10, 125, 65, 70 • 若以先到先執行排程 (FCFS First−Come−First−Serve Scheduling) 執行,磁頭 (Disk Head) 掃過磁碟資料 點的過程將如圖 15-3-1 :
  • 335.
  • 336.
    15-3-2 最短搜尋時間先執行 (SSTF Scheduling) •每當磁頭存取一個磁柱資料點之後,立刻評估下 一個資料點,選擇最近距離之資料點執行之,此 為 “最短搜尋時間先執行排程 (SSTF Shortest−Seek−Time−First Scheduling)” 。圖 15-3-2 為 SSTF 之執行範例:
  • 337.
  • 338.
    15-3-3 掃瞄排程 (ScanScheduling) • 將磁頭從當時位置向磁碟的一端掃瞄,再向另一 端掃瞄,當經過各資料點時,執行資料存取,此 為 “掃瞄排程 (Scan Scheduling)” 。圖 15-3-3 為 Scan 之執行範例:
  • 339.
  • 340.
    15-3-4 C− 掃瞄排程(C−Scan Scheduling) • 將磁頭從當時位置向磁碟的一端掃瞄,再從另一 端開始掃瞄,避開重複資料區,當經過各資料點 時,執行資料存取,此為 “ C− 掃瞄排程 (C−Scan Scheduling)” 。圖 15-3-4 為 C−Scan 之執行範例:
  • 341.
  • 342.
    15-3-5 掃瞄判斷排程 (LookScheduling) 與 C− 掃瞄判斷排程 (C−Look Scheduling) • 為了避免無謂的端點掃瞄,我們將 Scan Scheduling 改善為 Look Scheduling ,將 C−Scan Scheduling 改善為 C−Look Scheduling( 如圖 15- 3-5) :
  • 343.
  • 344.
    15-3-6 磁碟排程分析 (Disk SchedulingSelection) • 任何事均不可能完美無缺,電腦系統的各項措施也是一樣 ,一定有其優點與缺點,我們可選擇適當的時機,盡可能 利用其優點屏棄其缺點。 • 當磁碟資料點之密度與存取頻率均高 (Heavy Load) 時,我 們採用 FCFS ,以避免有餓死 (Starvation) 情況產生。 • 如果存取頻率很低,許久才有一個資料點出現,此時不論 有多少排程方法,其作為均如 FCFS 排程。 • 檔案空間分配 (File Allocation) 也是影響執行效率之一項因 素 ( 如 13-5 節 ) ,如果是連續空間分配 (Contiguous Allocation) ,即多是鄰近資料點,將節省磁頭掃除的時間 ;如果是鏈接空間分配 (Linked Allocation) 或是索引空間 分配 (Index Allocation) ,資料點分散各個角落,將增加磁 頭掃瞄的時間。
  • 345.
    15-4 磁碟管理 (DiskManagement) • 於前數章節,我們已探討許多關於磁碟的問題, 本節將再繼續討論磁碟的管理事項,如磁碟格式 化 (Disk Formatting) 、起動區塊 (Boot Block) 、與 損壞區塊 (Bad Blocks) 等之管理。
  • 346.
    15-4-1 磁碟格式化 (DiskFormatting) • 一個全新的磁碟,除了佈滿磁性物質 (Magnetic Material) 外,尚無法作為儲存記憶體 (Memory) ,必須要劃分出儲存單元磁區 (Sectors) ,才可配合磁碟控制器 (Disk Controller) 讀寫資料,如此劃分之作為是謂 “低階格式化 (Low Level Formatting)” 或稱 “實體格式化 (Physical Formatting)” 。
  • 347.
    15-4-2 起動區塊 (BootBlocks) • 當開啟電源 (Power Up) 啟動電腦、或重新啟動 (Reboot) 電腦時,開機程式 (Bootstrap Program) 亦隨之起動,由開機程式初始 (Initializing) 作業系 統,包括 CPU 的各暫存器 (Registers) 、裝置控制 器 (Device Controllers) 、與主記憶體 (Main Memory) 等。
  • 348.
    15-4-3 損壞區塊 (BadBlocks) • 一個磁碟會因雜質或刮傷而損壞,遭受損壞的區 塊稱為 “損壞區塊 (Bad Block)” 。如果損壞過於嚴 重,整個磁碟應棄換不用;如果是非常輕微的損 壞,則可跳過損壞區塊,繼續使用其他良好區塊 。
  • 349.
    15-5 置換空間管理 (Swap SpaceManagement) • 置換空間可設置於磁碟的檔案系統內 (File System) 、或設置於磁碟的獨立分割內 (Partition) 。 (1) 若設置於檔案系統內,可將置換 資料以檔案形態處理,其優點是簡單且易執行; 缺點是要依檔案方式處理 ( 如目錄、空間分配 等 ) ,將降低執行速率。 (2) 若設置於獨立分割內 ,其優點是因無檔案系統牽拌,執行迅速;缺點 是內部碎片 (Internal Fragmentation) 將漸漸擴大 ,影響執行效率。
  • 350.
    15-6 磁碟矩陣結構 • 今日磁碟之開發,體積愈來愈精巧,價格愈來愈 便宜,電腦系統使用多個磁碟並不會付出特別的 代價。將多個磁碟組織成“磁碟矩陣 (RAID Redundant Arrays of Inexpensive Disks)” ,一則可增 加儲存資料的安全可信度 (Reliability) ,一則可以 並行方式 (Parallelism) 增加執行速率。
  • 351.
    15-6-1 安全可信度 (Reliability) •我們可以多個磁碟執行鏡影 (Mirroring) 操作,同 時將資料寫入兩個磁碟,亦即一個邏輯磁碟 (Logical Disk) 由兩個實體磁碟 (Physical Disk) 組成 。當一個磁碟受損,另一個磁碟可將資料重新補 救。
  • 352.
    15-6-2 並行方式 (Parallelism) •既然電腦系統已經使用多個磁碟,我們可將其安 排成並行處理 (Parallelizing) ,以節省執行時間, 理論上,假設 1 個資料 1 個磁碟的存取時間為 t ;則 1 個資料 n 個磁碟的並行存取時間將為 t / n 。 • 如果資料是以位元組 (Byte) 為單位,每一個位元 組有 8 個位元 (Bits) ,我們可以八個磁碟對應分置 這些資料,第 1 個位元分置於第 1 個磁碟,第 2 個位元分置於第 2 個磁碟,以此類推。當八個磁 碟同時並行存取資料時,其速度將較一個磁碟快 8 倍。以位元 (Bit) 為分置單位者是謂 “位元階層 分置 (Bit Level Striping)” ,以區塊 (Block) 為分置 單位者是謂 “區塊階層分置 (Block Level Striping)” 。
  • 353.
    15-6-3 磁碟矩陣階層 (RAIDLevel) • 於 15-6-1 節,我們談到鏡影 (Mirroring) 操作,將 資料同時寫入兩個磁碟,雖然有極佳的安全可信 度,但也付出了相當的代價。除此之外,還可使 用其他我們熟悉的偵錯方式,如檢查碼 (Parity Check Codes) 、漢明碼 (Hamming Codes) 等,將這 些方式應用在磁碟矩陣 (RAID) ,可類分成數個如 下之使用階層:
  • 354.
  • 355.
  • 356.
    16-6-4 磁碟矩陣階層分析 (Selectinga RAID Level) • RAID 0 將所有的磁碟都用於儲存資料,優點是使用效率最高,又因是分置 (Striping) 儲存,可執行同步存取,增加執行速率;缺點是一旦有磁碟損壞, 即無補救之途徑。 • RAID 1 將資料鏡影 (Mirroring) 兩個磁碟,優點是當有磁碟損壞時,可立刻以 另一個磁碟的資料修補之,安全可靠性最高;缺點是以兩倍數量的磁碟儲存 資料,使用效率最低,又因未安排分置儲存,無法執行同步存取。 • RAID 0+1 將資料先分置於一組磁碟,再鏡影複製於另一組磁碟,優點是因是 分置 (Striping) 儲存,可執行同步存取,且當有磁碟損壞時,可立刻以另一個 磁碟的資料修補之,安全可靠性最高;缺點是以兩倍數量的磁碟儲存資料, 使用效率最低。 • RAID 1+0 將資料鏡影寫入兩組磁碟,再將第一組資料分置 (Striping) ,優點是 以第一組磁碟執行同步存取,以第二組磁碟作原始資料修補;缺點是以兩倍 數量的磁碟儲存資料,使用效率最低。理論上 RAID 1+0 較 RAID 0+1 更安全可 靠。 • RAID 2 使用漢明碼概念,優點是可在能力範圍內自動修補錯誤,安全可靠性 與 RAID 1 相等,且使用數量較少的磁碟執行修補任務。 • RAID 3 使用單一檢查碼概念,優點是僅以一個磁碟執行偵錯任務,節省資源 ;缺點是僅能偵錯,無法修補錯誤。 • RAID 4 與 RAID 3 的意義相同,不同者是以區塊 (Block) 為分置單位,可用於大 量資料的傳遞。 • RAID 5 與 RAID 4 的意義相同,不同者是將資料與檢查碼依序分置 (Striping) 於 各磁碟,以免一個磁碟損壞,所有檢查碼均遺失。 • RAID 6 採用 Reed−Solomon Codes 方法,目前已少有電腦系統採用。
  • 357.
    15-7 磁碟掛載應用 (DiskAttachment) • 電腦系統與磁碟間之掛載用可類分為: (1) 本機 掛載儲存裝置 (Host Attached Storage) 、 (2) 網路 掛載儲存裝置 (Net Work Attacked Storage) 、 (3) 儲區網路 (Storage Area Network) 。
  • 358.
    15-7-1 本機掛載儲存裝置 (Host AttachedStorage) • 系統經過 I/O ,對掛載於本機的裝置執行資料存 取,依 RAID 概念,今日微電腦系列常使用的磁碟 組織有 IDE 與 SCSI ,其結構如圖 15-7-1 。
  • 359.
  • 360.
    15-7-2 網路掛載儲存裝置 (Network AttackedStorage) • 電腦系統可經過網路,對儲存裝置存取資料,如 此作為是謂 “網路掛載儲存裝置 (NAS Network Attached Storage)” ,如圖 15-7-2 , Servers 對 NAS 存取資料, Clients 對 NAS 存取資料。
  • 361.
  • 362.
    15-7-3 儲區網路 (Storage AreaNetwork) • 網域是否暢通,是影響網路操作效率的重要因素 ,網域資源非常珍貴,盡可能要屏除不必要的浪 費,如前節所述之 NAS ,在使用上將與 Server−Client 競爭網域頻寬,影響網路傳輸效率。
  • 363.
  • 364.
    15-8 穩定儲存應用 (Stable StorageImplementation) • 一個良好的電腦系統應具有穩定的儲存裝置,亦 即有一個不會產生錯誤的儲存系統。當一個磁碟 有錯誤發生時,系統立即安排: • (1) 將另一個儲存相同資料的鏡影磁碟取代該受損 磁碟; • (2) 使用除錯碼技術 ( 如漢明碼等 ) 將錯誤修補之 。 • 前述 15-6-3 節所描述之 RAID 即是維護穩定儲存的 良好儲存裝置。
  • 365.
    15-9 習題 (Exercises) 1、於磁碟運用,何謂等角速率 (CAV Constant Angle Velocity) ? 2 、於磁碟運用,何謂等線性速率 (CLV Constant Linear Velocity ? 3 、通常存取磁碟資料有那 4 個時間步驟? 4 、一個 I/O 需求 (I/O Request) 內容應包含那些資訊? 5 、 FCFS 的優缺點為何? 6 、 FCFS 的優缺點為何? 7 、 Scan 的優缺點為何? 8 、 C−Scan 的優缺點為何? 9 、掃瞄判斷排程 (Look Scheduling) 與 C− 掃瞄判斷排程 (C−Look Scheduling) 的優缺點為何? 10 、置換空間設置於磁碟的檔案系統內 (File System) 、或設 置於磁碟的獨立分割內 (Partition) 。兩者有何差別? 11 、試請分析 RAID 各階層。 12 、何謂 IDE ? 13 、何謂 SCSI ?
  • 366.
  • 367.
    第十六章 分散式系統結構 (Distributed SystemStructures) • 16-1 簡介 • 16-2 概念 (Background) • 16-2-1 分散式系統之優點 (Advantages of Distributed Systems) • 16-2-2 分散式作業系統之類型 (Types of Distributed Operating System) • 16-3 節點連接 (Topology) • 16-4 網路通訊 (Communication) • 16-4-1 名稱解析 (Naming Resolution) • 16-4-2 路由策略 (Routing Strategies) • 16-4-3 連接策略 (Connection Strategies) • 16-4-4 衝突避免 (Contention) • 16-5 網路通訊協定 (Communication Protocols) • 16-6 網路故障處理 (Robustness) • 16-7 習題 (Exercises) • 16-8 範例系統程式 (Programming) • 16-8-1 網路節點連接 ( 模擬 16-3 節 ) • 16-8-2 網路節點連接 ( 模擬 16-4-1 節 ) • 16-8-3 網路線路 / 資料交換 ( 模擬 16-4-3 節 )
  • 368.
    16-1 簡介 • 分散式系統(Distributed System) 是多個處理器 (Processors) 的組合,各處理器散置於各不同地區 ,彼此間互不共享記憶體,各有其自己的記憶體 (Memory) ,以地區網路 (LAN Local Area Network) 或廣域網路 (WAN Wide Area Network) 互通訊息。 本章將探討分散式系統之結構、及使用之網路。
  • 369.
    16-2 概念 (Background) •分散式系統 (Distributed System) 是多個處理器 (Processors) 的組合,從小型的手持微電腦、個人 電腦、到大型的工作站,散置於各不同地區 (Sites) ,由網路互相連通。
  • 370.
    16-2-1 分散式系統之優點 (Advantages ofDistributed Systems) • 建置分散式系統至少有四個理由:資源分享 (Resource Sharing) 、計算迅速 (Computation Speedup) 、可靠性佳 (Reliability) 、與便利通訊 (Communication) 。 • 1 、資源分享 (Resource Sharing) • 2 、計算迅速 (Computation Speedup) • 3 、可靠性佳 (Reliability) • 4 、便利通訊 (Communication)
  • 371.
    16-2-2 分散式作業系統之類型 (Types ofDistributed Operating System) • 本節將介紹兩類網路導向作業系統 (Network Oriented Operation System) : (1) 網路作業系統 (Network Operating System) 與 (2) 分散式作業系 統 (Distributed Operation System) 。在網路運用上 ,前者較後者容易操作;在存取儲存裝置上,後 者較前者容易操作。 • 1 、網路作業系統 (Network Operating System) • 2 、分散式作業系統 (Distributed Operation System)
  • 372.
    16-3 節點連接 (Topology) •分散式系統是將散置於各處的處理器 (Processors) 以網路連接,互通訊息。其中有許多連接方式, 各有其優缺點,我們考量的重點有: • (1) 實體安裝代價 (Installation Cost) • (2) 通訊時間代價 (Communication Cost) • (3) 執行方便考量 (Availability)
  • 373.
  • 374.
  • 375.
  • 376.
  • 377.
  • 378.
    16-4 網路通訊 (Communication) •當探討網路通訊,我們須考量: (1) 名稱解析 (Naming Resolution) ,兩個行程 (Processes) 如何 在廣大的網域中互相定址對方? (2) 路由策略 (Routing Strategies) ,如何在網域中選擇傳遞資料 之途徑? (3) 連接策略 (Connection Strategies) , 網路中如何安排多個行程同時傳遞資料? (4) 衝 突避免 (Contention) ,當發生網路上爭議的問題時 ,如何解決?
  • 379.
    16-4-1 名稱解析 (NamingResolution) • 網路上兩個行程 (Processes) 若要互通訊息,首先 須定址對方,知道對方的位置之後,才能將資料 傳遞給對方,或從對方下載資料。網路上電腦節 點之名稱即是該節點的地址,通常有兩種表示方 式:識別地址碼 (Host Identifier) 、與識別名稱 (Host Name) 。
  • 380.
    16-4-2 路由策略 (RoutingStrategies) • 當網路中兩節點相互通訊,其間安排資料傳遞的 途徑是謂 “路由策略 (Routing Strategies)” 。每一個 網路地區均設有路由表 (Routing Table) ,詳載資料 可傳送的各種途徑 (Alternative Paths) 、及傳遞之 時間代價 (Cost) 等資訊 (Information) ,表中內容 隨周遭環境之變化而自動更新。資料傳遞方式可 概分為: (1) 固定路徑 (Fixing Routing) 、 (2) 虛擬 路徑 (Virtual Routing) 、 (3) 機動路徑 (Dynamic Routing) 。
  • 381.
  • 382.
    16-4-3 連接策略 (ConnectionStrategies) • 當網路上兩個行程 (Processes) 相互通訊時,兩行程間建 立起通訊管道 (Communications Sessions) ,在此時段期間 ,該兩行程佔用連通線 (Connection Lines) 以交換資料 (Switching Data) ,資料交換完畢後,再釋出連通線供其他 行程使用。交換資料的方式可類分為:線路交換 (Circuit Switching) 、資料交換 (Message Switching) ,與封包交換 (Packet Switching) 。 • 1 、線路交換 (Circuit Switching) • 2 、資料交換 (Message Switching) • 3 、封包交換 (Packet Switching)
  • 383.
    16-4-4 衝突避免 (Contention) •網路上電腦節點眾多,每條連線總有多個節點同 時使用,因此傳遞的資料時有衝突混亂,如果不 設立防範機制,將無法順利傳遞資料。目前網路 上常用的防範機制有:載體偵測法 (CSMA Carrier Sense with Multiple Access) 、衝突警告法 (CD Collision Detection) 、與輪序傳遞法 (Token Passing) 。 • 1 、衝突偵測法 (CSMA) • 2 、衝突警告法 (CD Collision Detection) • 3 、令牌傳遞法 (Token Passing)
  • 384.
    16-5 網路通訊協定 (Communication Protocols) •網路上電腦節點眾多且資料格式不盡相同,強迫 互相傳遞資料,將無法順利執行。我們必須設定 一個各節點都可接受的協定 (Protocol) ,讓所有節 點都依協定的要求遂行資料傳遞,如此才可順利 執行。 • 網路通訊協定 (Communication Protocols) 是以多 階層 (Multiple Layers) 方式設計,網域網路採用國 際標準組織 (ISO International Standards Organization) 所提出的協定 (Protocol) ,其模型如 圖 16-5-1 :
  • 385.
  • 386.
  • 387.
  • 388.
    16-6 網路故障處理 (Robustness) •網路節點眾多,發生故障的機會更是稀鬆平常,如連線故 障 (Failure of Link) 、電腦節點故障 (Failure of Site) 、資料 遺失 (Loss of Message) 等。 • 為了維護網路隨時保持良好狀態,網路應有能力執行:偵 測故障 (Detect Failure) 、重組系統 (Reconfiguration) 、與 修補故障 (Recovery from Failure) 。 • 1 、偵測故障 (Detect Failure) • 2 、重組系統 (Reconfiguration) • 3 、修複故障 (Recovery from Failure)
  • 389.
    16-7 習題 (Exercises) 1、分散式系統有那些優點? 2 、試請比較網路作業系統 (Network Operating System) 與分散式作業系 統 (Distributed Operation System) 之優缺點? 3 、常用的連線形式有那些? 4 、當某地區電腦節點 A 要定址另一節點 B 時,其作業系統要求網址解 析的執行步驟為何? 5 、於區域網路內,各節點與閘道節點 (Gateway) 之間以何種方式連接 ? 6 、何謂線路交換 (Circuit Switching) ? 7 、何謂資料交換 (Message Switching) ? 8 、何謂封包交換 (Packet Switching) ? 9 、試請敘述國際標準組織 (ISO International Standards Organization) 所 提出的網路協定 (Protocol) 各層之內容。 10 、 UDP 與 TCP 有何差異? 11 、當網路某裝置發生故障時,我們如何偵測故障?
  • 390.
    第十七章 分散式檔案系統 (Distributed FileSystem) • 17-1 簡介 • 17-2 概念 (Background) • 17-3 名稱與通透性 (Naming and Transparency) • 17-3-1 名稱結構 (Naming Structure) • 17-3-2 名稱方案 (Naming Schemes) • 17-4 遠端檔案存取 (Remote File Access) • 17-4-1 快取方案 (Caching Scheme) • 17-4-2 快取位置 (Cache Location) • 17-4-3 更新快取資料 (Cache Update) • 17-4-4 一致性 (Consistency) • 17-4-5 快取與遠端服務之比較 ( • 17-5 檔案複製 (File Replication) • 17-6 習題 (Exercises) • 17-7 範例系統程式 • 17-7-1 遠端檔案儲存 ( 模擬 17-4 節 ) • 17-7-2 遠端檔案複製 ( 模擬 17-5 節 )
  • 391.
    17-1 簡介 • 於前一章我們曾討論網路結構(Distributed System Structure) 與通訊協定 (Communication Protocols) ,於 13 章我們曾討論檔案系統運作 (File System Implement) ,本章我們將結合此兩章 之內容,探討檔案系統如何在網路上運作,亦即 如何執行分散式檔案系統 (DFS Distributed File Systems) ?
  • 392.
    17-2 概念 (Background) •網路上蘊藏著許多服務項目 (Services) ,電腦節點 亦各有其不同之工作地位,伺服端電腦節點 (Server) 提供軟體服務機制 (Software Service) ;客 戶端電腦節點 (Clients) 連通服務機制,以網路作 業系統作為服務介面 (Interface) ,執行有關之服 務項目。
  • 393.
    17-3 名稱與通透性 (Namingand Transparency) • 使用者 (Users) 存取邏輯資料 (Logical Data) 的切入點是檔 案名稱 (File Name) ,在單機應用上,檔案名稱即是儲存檔 案資料的起始地址,如 12-2-1 節曾述,使用者 (Users) 使 用檔案名稱 (File Name) ,例如 testFile.java ;電腦系統使 用檔案識別碼 (File Identifier) ,例如 1234 。在網路應用上 ,檔案儲存於網路某個電腦節點,故檔案名稱應包括電腦 節點名稱、與檔案本身名稱,如 16-4-1 節曾述,使用者 (Users) 使用檔案名稱 (File Name) ,例如 chia.tf.edu.tw / testFile.java ;電腦系統使用檔案識別碼 (File Identifier) , 例如 163.15.40.243 / testFile.java 。 • 讀者有經驗,在單機應用上,當編輯完成一個檔案後,我 們設定檔案名稱再將其存檔,此時我們知道的是一個已建 立的檔案,我們不知道檔案的儲存地址,也沒必要知道, 只要有名稱我們即可對該檔案執行資料存取。以此類推網 路檔案系統,我們不必知道檔案儲存在那一個節點,只要 知道檔案名稱,即可對該檔案執行存取資料,如此作為是 謂 DFS 之 “透通性 (Transparency)” 。
  • 394.
    17-4 遠端檔案存取 (RemoteFile Access) • 假設 DFS 以前節所述之名稱方案 (Naming Scheme) 定名,使用者透過遠端服務機制 (Remote Service Mechanism) 存取遠端檔案,提出之存取需求 (Request) 在 DFS 之導引下抵達伺服端 (Server) , DFS 將需求結果從伺服端傳回至客戶端之使用者 ,如此作為是謂 “遠端檔案存取 (Remote File Access)” 。其中使用的遠端程序呼叫 (RPC Remote Procedure Call) 與 4-4 節存取磁碟資料 (Access Disk) 之系統呼叫 (System Call) 類似,不同者前者 須經過網域節點之定位。
  • 395.
  • 396.
    17-5 檔案複製 (FileReplication) • 檔案複製 (File Replication) 是將網路某節點之檔案資料複 製至其他網路節點,以備該節點損毀時,仍能保存資料。 • 為了方便使用者 (User) 使用,如 17-3-1 節曾述及之名稱 透通性 (Naming Transparency) ,作業系統安排檔案複製透 通性 (Replication Transparency) ,使用者只關心檔案名稱 ,不必知道複製檔案的位置 (Location) ;複製檔案的位置 由系統導引安排。 • 檔案複製的優點是增加可靠性 (Reliability) ,不會因硬體損 壞而遺失資料;其缺點是一旦更新 (Update) 資料時,需 連絡所有的複製檔案同步更新,系統將付出可觀之代價。
  • 397.
    17-6 習題 (Exercises) 1、檔案系統之軟體本質服務項目有那些? 2 、何謂檔案名稱之透通性 (Transparency) ? 3 、何謂位置透通性 (Location Transparency) ? 4 、何謂位置獨立性 (Location Independency) ? 5 、 DFS 設定檔案名稱有那三種定名方案? 6 、快取資料的儲存位置可從那四個觀點來考量? 7 、客戶端將更新資料傳送給伺服端的時機有那三 種? 8 、試述檔案複製的缺點。
  • 398.
    第十八章 分散式系統之整合 (Distributed Coordination) •18-1 簡介 • 18-2 事件序列 (Event Ordering) • 18-3 互斥 (Mutual Exclusion) • 18-4 緊密聚合 (Atomicity) • 18-5 死結處理 (Deadlock Handling) • 18-6 習題 (Exercises) • 18-7 範例程式 • 18-7-1 網路集中 / 協調 ( 模擬 18-3-1 節 )
  • 399.
    18-1 簡介 • 於第八章我們曾討論在單機系統環境(Computer System Environment) 下,一個行程 (Process) 之執行流程,也討 論多個行程之並行流程,其中如並行條件 (Concurrency Conditions) 、臨界區 (Critical Section) 、信號 (Semaphores) 等問題,本章將以同樣的問題觀點,在分散式系統環境 (Distributed System Environment) 下,討論多個行程之並行 流程。 • 於第九章我們曾討論在單機系統環境 (Computer System Environment) 下,死結定義 (Deadlock Definition) 、死結預 防 (Deadlock Prevention) 、死結避免 (Deadlock Avoidance) 、死結偵測 (Deadlock Detection) 、死結消弭 (Recovery from Deadlock) 等問題,本章亦將以同樣的問題 觀點,在分散式系統環境 (Distributed System Environment) 下,討論死結的問題。
  • 400.
    18-2 事件序列 (EventOrdering) • 於 4-2-1 節曾述及,我們在編輯器上寫的程式碼是 謂 “程式 (Program)” ;當程式上的指令被 CPU 讀 取執行時是謂 “行程 (Process)” ;行程流程中執行 的事項是謂 “事件 (Event)” 。如圖 18-2 ,行程 P 依序執行 p1 、 p2 、…、 pn 等事件 (Events) 。
  • 401.
  • 402.
    18-2-1 先後關係式 (Happened−Before Relation) •一個執行於集合 (Sets) S 之關式元 (Relation) R 被 稱為 “偏序 (Partial Order)” ,如果該 R 滿足: • • (1) 反身律 (Reflexive) :即 aRa ,其中 a 是 S 之任 一元素 (Element) ; • (2) 反對稱律 (Anti-Symmetric) :即 當有 aRb 且 bRa 時,則有 a = b ; • (3) 遞移律 (Transitive) :即 當有 aRb 且 bRc 時 ,則有 aRc 。
  • 403.
  • 404.
  • 405.
    18-2-2 應用 (Implementation) •在電腦系統操作中,有許多執行項目需要事件之 序列資料,如資料更新與複製、資源佔用與釋放 、資料輸出與接收等。於單機系統可以輕易地辨 識先後次序,但於網路多機系統却不易辨識。 • 於前節我們己粗略探討事件序列,本節將作更進 一步的實用探討。我們記錄每一事件的發生時間 ,如圖 18-2-2-(a) , p1 為 100 、 q1 為 100 、 q2 為 200 ,此為 “時間戳記 (TS Timestamp) 。
  • 406.
  • 407.
    18-3 互斥 (MutualExclusion) • 我們曾於第八章探討單機之互斥操作,本節將探 討在分散式系統環境 (Distributed System Environment) 下,多個行程之互斥操作。 • 在分散式系統環境 (Distributed System Environment) 下,互斥 (Mutual Exclusion) 之定義 (Definition) 是不允許有兩個行程 (Processes) 同時 在臨界區 (Critical Section) 操作。在執行上,可類 分為集中式執行 (Centralized Approach) 、與分散 式執行 (Distributed Approach) 。
  • 408.
  • 409.
  • 410.
  • 411.
    18-4 緊密聚合 (Atomicity) •有些工作必須緊密聚合 (Atomicity) 連續地執行, 在單機系統 (Computer System) 上並不困難,例如 執行批次工作 (Batch) 。但在分散式系統 (Distributed System) 上,却不易整合執行。假設 有一個工作 (Transaction) T ,具有兩個特性: (1) 龐大複雜,必須由多個電腦分擔處理; (2) 因內 容需要,必須緊密聚合連續地執行。此時我們必 須安排分散式之緊密聚合執行 (Distributed Atomicity) 。
  • 412.
  • 413.
    18-5 死結處理 (DeadlockHandling) • 我們曾於第九章詳細探討單機系統 (Computer System) 之死結處理,其中之死結預防 (Deadlock Prevention) 、死結避免 (Deadlock Avoidance) 、死 結偵測 (Deadlock Detection) 、死結消弭 (Recovery from Deadlock) 等之觀點仍可用於分散式系統 (Distributed System) 。
  • 414.
  • 415.
  • 416.
  • 417.
  • 418.
  • 419.
  • 420.
  • 421.
    18-6 習題 (Exercises) 1、何謂偏序 (Partial Order) 關係? 2 、試述 “先後關係式” 之特性。 3 、在分散式臨界區互斥之操作流程中,其執行困擾處為何 ? 4 、在執行互斥流程中,何謂令牌傳遞執行 (Token Passing Approach) ? 5 、令牌傳遞法 (Token Passing Approach) 須注意那些事項? 6 、何謂兩階段協定 (2PC Two−Phase Commit Protocol) ? 7 、 2PC 故障處理之方式為何? 8 、於時間戳記優先演算法 (Timestamp Priority Algorithm) 中 ,何謂消極方式 (Wait−die Scheme) ? 9 、死結處理之時間戳記優先演算法中,何謂積極方式 (Wound Wait Scheme) ? 10 、死結處理之集中式執行 (Centralized Approach) 有那三種 檢視時間點?
  • 422.
  • 423.
    第十九章 保護 (Protection) • 19-1簡介 • 19-2 保護的目的 (Goal of Protection) • 19-3 保護之定義域 (Protection Domain) • 19-3-1 定義域結構 (Domain Structure) • 19-3-2 定義域代表 (Domain Representations) • 19-4 矩陣執行 (Access Matrix) • 19-4-1 複製功能 (Copy) • 19-4-2 擁有者功能 (Owner) • 19-4-3 控制功能 (Control) • 19-5 矩陣應用 (Implementation Matrix) • 19-5-1 全域表格 (Global Table) • 19-5-2 物件權限串列 (Access Lists for Objects) • 19-5-3 定義域能力串列 (Capability Lists for Objects) • 19-6 習題 (Exercises) • 19-7 範例系統程式 (Programming) • 19-7-1 矩陣應用 ( 模擬 19-5 節 )
  • 424.
    19-1 簡介 • 系統中、通常都有多個行程(Processes) 正在執行 ,為了讓這些行程得以在不受干擾的環境下執行 工作,系統應有一些保護措施 (Protections) 。只 有系統允許 (Proper Authorization) 的行程,才能 使用特定的檔案 (File) 、記憶體 (Memory) 、 CPU 、或系統資源 (Resource) 。 • 系統保護機制控制 (Controlling) 程式 (Programs) 、行程 (Processes) 、或使用者 (Users) 等對資源的使用,其中可類分為保護 (Protection) 與安全 (Security) 。保護是維護行程不受干擾地使 用特定資源;安全是維護資料或資源不被外力侵 入而改變原有之意義。
  • 425.
    19-2 保護的目的 (Goalof Protection) • 隨著電腦的精進發展,系統保護的需求也隨之更為重要, 如同前數章曾述及之多程式作業系統 (Multiprogramming Operating System) ,其中最重要的管理是: “只有系統認 可的權限使用者 (Users) ,才可依該權限使用特定的系統 資源 (Resources) ” 。 • 電腦系統之保護策略 (Protection Policy) 是提供保護機制 (Protection Mechanism) 以管理 (Governing) 系統各項資源 (Resources) 之使用。此項保護策略有三個時機建立保護機 制: (1) 硬體固定保護機制,系統出廠時已建立, (2) 作 業系統因應執行環境,建立管理機制, (3) 使用者因應執 行要求,建立管理機制。
  • 426.
    19-3 保護之定義域 (ProtectionDomain) • 電腦系統 (Computer System) 是行程 (Processes) 與物件 (Objects) 的組合,物件包括硬體物件 (Hardware Objects) 與軟體物件 (Software Objects) ,前者如 CPU 、記憶體、磁碟、印表機 等,後者如檔案、程式等。 • 不同的物件對應不同型態 (Types) 的操作 (Operation) ,記憶體引導存取操作; CPU 引導執 行操作;檔案引導存取、建立、刪除等操作。
  • 427.
  • 428.
  • 429.
  • 430.
    19-4 矩陣執行 (AccessMatrix) • 為了方便設計程式 (Programming) ,我們可將前述 之集合 (Sets) 型式改以矩陣 (Matrix) 表示,如圖 19-3-1-3 ,當行程 (Process) P 代表定義域 (Domain) D2 時, P 有讀取 (Read) 物件 (Object) O2 的權限 ,以 “ read = access(D2, O2)” 表示。
  • 431.
  • 432.
  • 433.
  • 434.
  • 435.
  • 436.
    19-5 矩陣應用 (ImplementationMatrix) • 如圖 19-5 ,我們發現圖中有許多空白入口 (Entries) ,如果將矩陣圖儲存於記憶體,這些空白 入口所佔有的空間 (Space) 將是一種嚴重的記憶 體浪費,我們可以表格 (Table) 或串列 (Lists) 作適 當的取代。
  • 437.
  • 438.
    19-6 習題 (Exercises) 1、保護 (Protection) 與安全 (Security) 有何區別? 2 、保護策略有那三個時機建立保護機制? 3 、於離散數學中曾定義 (Define) 之序對關係 (Ordered Pair) 為何? 4 、如何表示 “保護定義域 (Protection Domain)” ? 5 、定義域 (Domain) 之具體代表為何? 6 、複製 (Copy) 有那幾種? 7 、全域表格 (Global Table) 之優缺點為何? 8 、物件權限串列 (Access Lists for Objects) 之優缺點為何? 9 、定義域能力串列 (Capability Lists for Objects) 之優缺點為 何?
  • 439.
    第二十章 安全 (Security) • 20-1簡介 • 20-2 安全問題 (Security Problem) • 20-3 使用者確認 (User Authentication) • 20-4 程式安全之威脅 (Program Threats) • 20-5 系統安全之威脅 (System Threats) • 20-6 加解密 (Cryptography) • 20-6-1 傳統加密法 • 20-6-2 近代公開金匙加密法 • 20-6-2-1 公開金匙原理 • 20-6-2-2 金匙設計方法 • 20-6-2-3 金匙設計執行法則 • 20-6-2-4 金匙設計實例 (Java 範例程式設計 ) • 20-7 習題 (Exercises) • 20-8 範例系統程式 (Programming) • 20-8-1 傳統加解密法 ( 模擬 20-6-1 節 ) • 20-8-2 近代加解密法 ( 模擬 20-6-2 節 )
  • 440.
    20-1 簡介 • 於前章我們述及系統之保護(Protection) ,本章將 再進一步探討系統之安全 (Security) 。保護是維護 行程不受干擾地使用特定資源;安全是維護資料 或資源不被外力侵入而改變原有之意義。 • 具體來言,保護是處理系統內部環境 (Internal Environment) 之問題,如檔案權限 (File Authority) 等;安全是處理系統外部環境 (External Environment) 之侵入問題,如病毒、資料攔截等 。
  • 441.
    20-2 安全問題 (SecurityProblem) • 軟體資料 (Data) 或硬體資源 (Resource) 遭到不當 之使用是謂 “安全問題 (Security Problem)” 。所謂 “ 不當使用 (Violations 或 Misuse)” 是指意外 (Accidental) 不當使用、或蓄意 (Intentional 或 Malicious) 不當使用兩種。 • 電腦之安全問題可由四個觀點來處理:實體觀點 (Physical) 、使用者觀點 (Users) 、網路觀點 (Network) 、作業系統觀點 (Operating System) 。
  • 442.
    20-3 使用者確認 (UserAuthentication) • 當使用者 (User) 要存取某檔案資料、或使用某資 源裝置之前,必須先經過使用者確認 (User Authentication) ,確認的項目通常有三類: • (1) 使用者物件 (User Possession) ,如使用者之卡 片 (Card) 、使用者之鎖匙 (key) 等; • (2) 使用者資料 (User Knowledge) ,如使用者帳號 (ID) 、使用者名稱 (Name) 、使用者密碼 (Password) 等; • (3) 使用者特性 (User Attributes) ,如指紋 (Fingerprint) 、視網膜 (Retina) 、簽名 (Signature) 等。
  • 443.
    20-4 程式安全之威脅 (ProgramThreats) • 當使用者 (User) 設計完成一個程式 (Program) , 除了設計者外,也提供其他使用者使用,程式安 全之威脅因而由此產生,如木馬程式 (Trojan Horses) 、陷阱口 (Trap Doors) 等。
  • 444.
    20-5 系統安全之威脅 (SystemThreats) • 作業系統 (Operating System) 提供行程可產生另一 行程的機制,當一個行程有瑕疵時,即可能產生 有瑕疵的其他行程,而將瑕疵擴散出去。如分裂 程式 (Worms) 與病毒 (Viruses) 等。
  • 445.
    20-6 加解密 (Cryptography) •當兩個工作站台傳遞資料時,資料也隨即暴露在 人人可攔截的空曠網路上,資料的安全性面對極 大的挑戰。我們無法避免資料不被攔截,但我們 可將資料加密,使被攔截的資料無意義。本節將 探討: (1) 傳統加密法 與 (2) 近代公開金匙加密 法。
  • 446.
    20-6-1 傳統加密法 • 所謂“傳統加解密” 即是發射端 (Client 端 ) 與接收 端 (Server 端 ) 均有相同對應之密碼匙,發射端依 密碼匙將資料加密,接收端再依對應的密碼匙將 資料解密,如此方法行之自古至今,其優點是簡 易方便;缺點是不週嚴,有極大洩密之缺口,問 題在發射端與接收端於交換對應密碼匙時,無法 百分之百保密。
  • 447.
  • 448.
    20-6-2-1 公開金匙原理 • 接收工作程序於設定加解密金匙後,自己保留解 密金匙,另將加密金匙不僅不須隱密通知對方, 甚至將加密金匙公告大眾,其中神妙之處令人驚 嘆。 •1 、暗門單向函數 • 2 、單向函數常例 • 3 、餘數同餘觀念 • 4 、縮剩餘系 (Reduced Set of Residues) • 5 、尤拉商數 (Euler’s Totient Function) • 6 、尤拉定理 (Euler’s Theorem) • 7 、費瑪定理 (Fermat’s Theorem)
  • 449.
    20-6-2-2 金匙設計方法 • 在初步了解上述觀念與理論後,即可著手設計 RSA之公開加密金匙及私密解密金匙如下: • 1 、首先考量金匙之可逆性 • 2 、由尤拉—費瑪 定理可得 • 3 、若設定公開加密金匙 (ex, N) 、如何求得私 密解密金匙 dx ?
  • 450.
    20-6-2-3 金匙設計執行法則 • 我們己清礎了解近代加密法RSA ,如何設定其公開加密金匙、及又如 何求取私密解密金匙。現在,我們將其執行過程整理詳述如下: • (1) 受文者 ( 接收端工作程序 ) 為乙方,任意選取兩個大質數 p 與 q ,其積 N=pq 。 • (2) 乙方任意選擇一整數 ex ,且 ex 與 N 互質。將 (ex, N) 設定為公開 加密金匙,並公佈之。 • (3) 乙方以 20-6-2-2 之 3 -(3) dx = (kT + 1) / ex , 求得其中之整數 dx 。 T 如 20-6-2-2 之 2 , T = Φ(N) = (p-1)(q-1) ; k 如 20-6-2-2 之 3 - (2) k 為常數 (0, 1, 2, …) 。以 dx 為乙方之私密解密金匙,妥善保管, 不得洩漏。 • (4) 發文者 ( 發射工作程序 ) 為甲方、要秘密傳送明文 m 給乙方。甲 方首先由公開檔案找到乙方公佈的公開加密金匙 (ex, N) 。然後以該公 開金匙將明文 m 加密成密文 n 。 如 33-2-( 一 )(1) : mex = n mod N • (5) 受文者 ( 接收工作程序 ) 乙方收到密文 n 後,以其私密解密金匙 dx 解密。將密文 n 還原成 m 。 如 20-6-2-2 之 3 -(1) : ndx = m mod N
  • 451.
  • 452.
    20-7 習題 (Exercises) 1、電腦之安全問題可由那四個觀點來處理? 2 、使用者確認 (User Authentication) 通常有那三類? 3 、何謂木馬程式 (Trojan Horses) ? 4 、何論陷阱口 (Trap Doors) ? 5 、何謂病毒 (Viruses) ? 6 、何謂謂 “傳統加解密”? 7 、“傳統加解密” 之優缺點為何? 8 、“近代公開金匙加密法” 與 “傳統密碼加密法” 有何不同? 9 、試設計一組 “傳統密碼加密法” 網路程式實例。 10 、試設計一組 “近代公開金匙加密法” 網路程式實例。