內容提要
本書全面、系統地闡述了現代作業系統的基本原理、主要功能及實現技術。重點論述多用戶、多任務作業系統的運行機制;系統資源管理的策略和方法;作業系統提供的用戶界面。討論了現代作業系統採用的並行處理技術和虛擬技術。本書以Linux系統為實例,剖析了其特點和具體的實現技術。本書既可作為高等院校計算機和信息類本科、專科各專業和其他相關專業教材,亦可供從事計算機科學、工程、套用等方面工作的科技人員參考使用。
目錄
第1章 緒論 11.1 作業系統在計算機系統中的地位 1
1.1.1 存儲程式式計算機的結構和特點 1
1.1.2 作業系統與計算機系統各層次的關係 3
1.1.3 作業系統與計算機體系結構的關係 4
1.2 作業系統的形成和發展 6
1.2.1 作業系統發展的初級階段 7
1.2.2 作業系統的形成 9
1.2.3 作業系統的進一步發展 11
1.3 作業系統的基本概念 12
1.3.1 作業系統的定義和特性 12
1.3.2 作業系統的資源管理功能 14
1.3.3 作業系統應解決的基本問題 16
1.4 作業系統的基本類型 17
1.4.1 批量作業系統 17
1.4.2 分時作業系統 18
1.4.3 實時作業系統 18
1.4.4 個人計算機作業系統 19
1.4.5 網路作業系統 20
1.4.6 分散式系統 21
1.5 作業系統採用的關鍵技術 23
1.5.1 作業系統採用的並行處理技術 24
1.5.2 作業系統採用的虛擬技術 24
1.6 Linux系統概述 25
1.6.1 UNIX系統及其特點 25
1.6.2 Linux系統形成和發展的基礎 27
1.6.3 Linux系統及其特點 29
習題1 31
第2章 作業系統的結構和硬體支持 33
2.1 作業系統虛擬機 33
2.2 作業系統的組織結構 34
2.2.1 作業系統的結構 34
2.2.2 運行時的組織結構 37
2.2.3 作業系統與計算機系統各層次的接口 38
2.3 處理機的特權級 38
2.3.1 處理機的狀態及分類 38
2.3.2 特權指令 39
2.4 中斷及其處理 39
2.4.1 中斷的概念及類型 39
2.4.2 向量中斷和探詢中斷 41
2.4.3 中斷進入 42
2.4.4 軟體中斷的處理過程 44
2.5 Linux系統的核心結構 46
2.6 Linux系統的特權級與中斷處理 46
2.6.1 Linux系統的特權級 46
2.6.2 中斷處理的上半部和下半部 47
2.6.3 中斷處理下半部的實現機制 48
習題2 49
第3章 作業系統的用戶接口 50
3.1 用戶工作環境 50
3.1.1 作業系統提供的環境 50
3.1.2 作業系統的生成和系統初啟 51
3.1.3 應用程式的處理 54
3.2 用戶接口 55
3.2.1 用戶接口的定義 55
3.2.2 作業系統提供的用戶接口 56
3.3 系統功能調用 58
3.3.1 系統功能調用的定義 58
3.3.2 系統功能調用的實現 59
3.3.3 應用程式的編程接口 60
3.4 Linux系統功能調用 60
3.4.1 Linux系統功能調用的過程 60
3.4.2 Linux系統功能調用的實現機制 62
3.4.3 增加一個新的系統調用的方法 63
3.4.4 從用戶空間訪問新的系統調用 64
習題3 65
第4章 進程及進程管理 66
4.1 進程的引入 66
4.1.1 順序程式及特點 66
4.1.2 並發程式及特點 67
4.1.3 與時間有關的錯誤 70
4.2 進程的概念 71
4.2.1 進程的定義 71
4.2.2 進程的狀態 72
4.2.3 進程控制塊 74
4.3 進程控制 75
4.3.1 進程控制的概念 75
4.3.2 進程創建與撤銷 76
4.3.3 進程阻塞與喚醒 77
4.4 進程之間的約束關係 79
4.4.1 進程競爭與合作 79
4.4.2 進程互斥的概念 79
4.4.3 進程同步的概念 81
4.5 同步機構 83
4.5.1 鎖和上鎖、開鎖操作 83
4.5.2 信號燈和P、V操作 84
4.6 進程互斥與同步的實現 86
4.6.1 上鎖原語和開鎖原語實現進程互斥 86
4.6.2 信號燈實現進程互斥 87
4.6.3 進程同步的實現 88
4.6.4 生產者-消費者問題 91
4.7 進程通信 92
4.7.1 進程通信的概念 92
4.7.2 進程通信方式 92
4.8 執行緒概念及特點 94
4.8.1 執行緒的概念 94
4.8.2 執行緒的特點與狀態 95
4.9 Linux系統的進程管理 97
4.9.1 Linux系統的進程與執行緒 97
4.9.2 進程描述符及其主要內容 97
4.9.3 進程描述符的獲得 99
4.9.4 Linux系統進程狀態的變遷 100
4.9.5 Linux系統的進程創建和終止 101
4.9.6 Linux系統的進程等待與喚醒 102
4.9.7 Linux系統中執行緒的實現 103
習題4 104
第5章 資源分配與調度 107
5.1 資源管理概述 107
5.1.1 資源管理的目的和任務 107
5.1.2 虛擬資源 108
5.2 資源管理的機制和策略 109
5.2.1 資源分配機制 109
5.2.2 資源分配策略 110
5.3 死鎖 115
5.3.1 死鎖的定義與例子 115
5.3.2 產生死鎖的原因和必要條件 116
5.3.3 系統模型和死鎖的處理 118
5.3.4 解決死鎖問題的策略 121
5.3.5 死鎖的預防 122
5.3.6 死鎖的避免 123
5.3.7 死鎖的檢測與忽略 125
習題5 125
第6章 處理機調度 127
6.1 處理機的多級調度 127
6.2 針對作業的調度 128
6.2.1 作業的狀態 128
6.2.2 作業調度的功能與作業控制塊 128
6.2.3 作業調度算法性能的衡量 130
6.2.4 作業調度算法 131
6.3 進程調度 132
6.3.1 調度/分派結構 132
6.3.2 進程調度的功能 133
6.3.3 調度方式 134
6.3.4 進程優先數調度算法 135
6.3.5 循環輪轉調度 136
6.3.6 多級反饋佇列調度 137
6.3.7 調度用的進程狀態變遷圖 138
6.4 執行緒調度 139
6.5 Linux系統的進程調度 140
6.5.1 進程調度程式的設計目標和特點 141
6.5.2 可變優先權 141
6.5.3 可變時間片 143
6.5.4 進程調度用的數據結構 144
6.5.5 Linux系統的進程調度算法 145
習題6 146
第7章 主存管理 148
7.1 主存管理概述 148
7.1.1 主存分片共享 148
7.1.2 程式的邏輯組織 149
7.2 主存管理的功能 149
7.2.1 虛擬存儲器 149
7.2.2 地址映射 150
7.2.3 主存分配 153
7.2.4 存儲保護 153
7.3 分區存儲管理及其存在的問題 154
7.3.1 動態分區存儲管理技術 155
7.3.2 分區分配機構 156
7.3.3 分區的分配與放置策略 156
7.3.4 碎片問題及拼接技術 159
7.4 頁式存儲管理 160
7.4.1 頁式系統應解決的問題 160
7.4.2 頁式地址變換 161
7.4.3 請調頁面的機制 164
7.4.4 淘汰機制與策略 166
7.4.5 幾種置換算法 167
7.5 段式系統和段頁式系統 171
7.5.1 段式地址結構 171
7.5.2 段式地址變換 171
7.5.3 擴充段表功能 172
7.5.4 段頁式存儲管理 172
7.6 Linux系統的存儲管理 174
7.6.1 主存定址 174
7.6.2 Linux系統段頁式地址變換 176
7.6.3 Linux系統動態核心管理 178
7.6.4 Linux系統的進程地址空間 181
習題7 183
第8章 設備管理 186
8.1 設備管理概述 186
8.1.1 設備管理的功能 186
8.1.2 設備獨立性 187
8.1.3 設備控制塊 189
8.2 緩衝技術 190
8.2.1 緩衝概述 190
8.2.2 常用的緩衝技術 191
8.2.3 UNIX系統的緩衝區管理 192
8.3 設備分配 199
8.3.1 設備分配概述 199
8.3.2 獨享分配 200
8.3.3 共享分配 200
8.3.4 虛擬分配 200
8.4 輸入/輸出控制 202
8.4.1 輸入/輸出硬體 202
8.4.2 輸入/輸出控制方式 204
8.4.3 輸入/輸出子系統 206
8.4.4 輸入/輸出控制的例子 208
8.5 Linux系統的設備驅動 210
8.5.1 Linux系統設備的分類 211
8.5.2 設備檔案及其標識 211
8.5.3 Linux塊設備的處理 213
8.5.4 用於塊設備處理的數據結構 215
8.5.5 輸入/輸出調度程式 217
8.5.6 策略例程 218
習題8 219
第9章 檔案系統 221
9.1 檔案系統概述 221
9.1.1 檔案 221
9.1.2 檔案系統 223
9.1.3 檔案的組織 224
9.2 檔案的邏輯結構和存取方法 225
9.2.1 檔案的邏輯結構 225
9.2.2 檔案的存取方法 226
9.3 檔案的物理結構 226
9.3.1 連續檔案 227
9.3.2 串聯檔案 228
9.3.3 索引檔案 229
9.3.4 檔案物理結構比較 232
9.3.5 UNIX系統的索引檔案結構 232
9.4 檔案目錄 237
9.4.1 檔案目錄及其內容 237
9.4.2 一級檔案目錄及缺點 237
9.4.3 多級檔案目錄 238
9.5 共享與安全 239
9.5.1 檔案共享與安全性的關係 239
9.5.2 檔案共享的實現方法 240
9.5.3 存取許可權的類型及其驗證 240
9.6 檔案操作與檔案備份 243
9.6.1 檔案操作 243
9.6.2 檔案備份 244
9.7 Linux檔案系統 246
9.7.1 虛擬檔案系統(virtualfilesystem,VFS)概述 246
9.7.2 VFS通用檔案系統模型與VFS對象 246
9.7.3 與進程相關的數據結構 250
9.7.4 VFS系統調用的實現 251
9.7.5 Ext2檔案系統概述 253
9.7.6 Ext2磁碟數據結構 255
9.7.7 Ext2磁碟空間的管理 257
9.7.8 Ext2主存數據結構 260
習題9 260
模擬試題1 263
模擬試題2 265
模擬試題1答案 267
模擬試題2答案 271
參考文獻 275