內容簡介
本教材第3版修訂中刪減了第2版中一些過時的UNIX技術和描述,增加了針對Linux系統設計技術和使用技術的闡述,增加了對UNIX環境編程實用技術的描述。其中第1章是有關UNIX技術的概述,第2~4章描述UNIX套用技術,第5~6章重點說明UNIX環境的編程技術,第7~11章闡述UNIX核心實現技術,第12~14章描述UNIX擴展知識。本書講解細緻,由淺入深,全面論述了UNIX系統的核心技術與作業系統的基本原理。 新版教材更加實用,非常適合作為高等院校計算機及相關專業的作業系統等課程的教材,同時也適合對UNIX系統技術感興趣的廣大讀者自學。
圖書目錄
目 錄
第3版前言
第1章 緒論 1
1.1 作業系統概述 1
1.1.1 建立作業系統的目標 1
1.1.2 作業系統是用戶與計算機的接口 1
1.1.3 作業系統是資源管理器 2
1.2 UNIX系統的主要特性 3
1.3 UNIX系統的發展史 4
1.4 開源軟體與UNIX的推廣發展 6
1.4.1 開源軟體 6
1.4.2 促進UNIX發展的重要組織機構 7
1.4.3 各種UNIX系統分支 7
習題 9
第2章 UNIX基本概念及入門技術 10
2.1 UNIX系統基本常識 10
2.1.1 兩種前端機 10
2.1.2 用戶的註冊與註銷 11
2.1.3 賬戶的管理 12
2.1.4 用戶口令的管理 12
2.1.5 用戶組信息 13
2.2 初識UNIX的shell 13
2.2.1 什麼是shell程式 13
2.2.2 shell的內部命令和外部命令 14
2.3 UNIX系統啟動及用戶登錄過程 14
2.3.1 UNIX系統的啟動方式 14
2.3.2 UNIX系統的啟動過程 14
2.3.3 Linux引導過程實例 15
2.3.4 用戶的登錄過程 17
2.4 UNIX常用命令介紹 18
2.4.1 UNIX命令使用方法 18
2.4.2 多命令行及多行命令 19
2.4.3 一般常用命令 19
2.4.4 用於目錄操作的命令 23
2.4.5 用於檔案操作的命令 24
2.4.6 有關狀態及信息查詢的命令 28
2.4.7 用於網路和通信的命令 31
2.5 UNIX系統體系結構 34
2.5.1 傳統UNIX系統體系結構 34
2.5.2 現代UNIX系統體系結構 35
2.6 UNIX系統使用注意事項 36
2.6.1 正確選擇用戶訪問許可權 36
2.6.2 移動存儲設備的使用 36
2.6.3 UNIX對多種檔案系統類型的支持 37
2.7 本章小結 40
習題 40
第3章 編輯UNIX的文本檔案 42
3.1 標準編輯器ed 42
3.1.1 使用ed 的基本常識 43
3.1.2 元字元和正則表達式 43
3.1.3 如何進入ed、退出ed及保存文本
檔案 44
3.1.4 ed中的常用命令 44
3.2 全螢幕幕編輯器vi 46
3.2.1 如何進入vi、退出vi及保存一個
檔案 46
3.2.2 命令行方式下的常用命令 46
3.2.3 末行命令方式下的常用命令 47
3.2.4 進入插入編輯方式的常用命令 48
3.2.5 使用vi的注意事項 48
3.2.6 vi環境的設定 49
3.3 Emacs編輯器 50
3.3.1 Emacs的使用方法 51
3.3.2 Emacs主選單功能簡介 52
3.3.3 Emacs中的功能鍵 53
3.4 本章小結 53
習題 54
第4章 UNIX系統的shell 55
4.1 shell概述 55
4.1.1 shell的基本功能 55
4.1.2 多種UNIX的shell 55
4.2 shell的內部特性 57
4.2.1 shell的命令解釋過程 57
4.2.2 UNIX系統定義的標準流 57
4.2.3 shell語法管理 58
4.2.4 標準流重定向與管道線控制 58
4.2.5 錯誤流重定向 60
4.2.6 命令執行控制及濾波功能 60
4.3 shell的環境設定 62
4.3.1 shell環境變數 62
4.3.2 Linux系統的shell環境配置 63
4.3.3 Korn shell環境設定 63
4.3.4 C shell環境設定 64
4.4 本章小結 66
習題 67
第5章 shell程式設計 68
5.1 shell編程的基本知識 68
5.1.1 shell程式可完成的工作 68
5.1.2 shell程式編寫格式 68
5.1.3 shell程式的運行方式 69
5.2 shell變數的使用 69
5.2.1 shell變數及變數賦值 69
5.2.2 變數的訪問及變數參數替換 70
5.2.3 變數的作用域 71
5.2.4 shell的預定義變數和環境變數 71
5.2.5 shell中命令的位置變數 72
5.2.6 變數替換 73
5.2.7 用命令做變數替換 73
5.3 test命令的使用 74
5.3.1 對檔案特性的測試 74
5.3.2 對字元串內容的測試 74
5.3.3 對整數n的測試 75
5.4 shell程式的控制流 75
5.4.1 命令的返回狀態 75
5.4.2 程式的控制結構 76
5.5 條件控制語句 77
5.6 循環語句 81
5.7 shell編程中常用的其他語句 84
5.8 shell程式的輸出 85
5.9 shell程式的調試方法 86
5.10 本章小結 87
習題 88
第6章 UNIX系統編程基礎 89
6.1 程式設計環境 89
6.1.1 理想中的程式設計環境 89
6.1.2 多任務環境下的程式執行 90
6.2 基於作業系統支持的程式設計 91
6.2.1 建立系統編程思想 91
6.2.2 UNIX提供的系統支持 92
6.2.3 關於UNIX的系統調用 94
6.2.4 系統調用與庫函式的關係 95
6.3 在UNIX環境中完成C編程 96
6.3.1 編程需要掌握的工具 96
6.3.2 makefile檔案編寫 96
6.3.3 C程式的編譯與調試 100
6.3.4 連結特殊庫函式 101
6.4 常用函式館glib的使用 102
6.4.1 glib基本類型定義 102
6.4.2 glib的宏 103
6.4.3 記憶體管理函式 103
6.4.4 字元串處理函式 104
6.4.5 glib可支持的數據結構 105
6.4.6 GString 107
6.4.7 計時器函式 108
6.4.8 錯誤處理函式 108
6.5 其他有關函式館 108
6.5.1 libxml庫 109
6.5.2 readline庫 109
6.5.3 curses庫 110
6.6 本章小結 112
習題 113
第7章 UNIX檔案管理系統 114
7.1 UNIX檔案的概念 114
7.2 UNIX檔案分類 114
7.2.1 普通檔案 114
7.2.2 目錄檔案 116
7.2.3 特殊檔案 117
7.2.4 管道檔案 117
7.2.5 連結檔案 118
7.3 UNIX檔案系統 118
7.3.1 檔案的組織及命名 118
7.3.2 檔案的許可機制 119
7.3.3 檔案系統功能及結構 120
7.3.4 系統中的特殊目錄 121
7.3.5 檔案系統的安裝與卸載 121
7.4 UNIX檔案系統內部存儲方式 123
7.4.1 邏輯卷與物理卷 123
7.4.2 檔案系統的存儲結構 125
7.4.3 索引節點和目錄檔案的作用 129
7.4.4 多重索引存儲結構 130
7.5 UNIX檔案系統的動態管理技術 132
7.5.1 支持多種檔案系統的機制 132
7.5.2 檔案信息的動態管理 133
7.5.3 檔案的檢索過程 135
7.5.4 檔案共享方式 135
7.6 用於檔案管理的系統調用 138
7.6.1 檔案描述符 138
7.6.2 用於檔案創建和檔案連結的
系統調用 138
7.6.3 檔案打開與關閉的系統調用 140
7.6.4 檔案的讀、寫系統調用 140
7.7 檔案隨機存取技術 141
7.7.1 改變檔案指針位置 141
7.7.2 捕獲當前檔案指針位置 143
7.8 檔案記錄管理技術 145
7.8.1 記錄鎖定技術描述 145
7.8.2 記錄鎖定技術舉例 145
7.9 常用檔案系統備份與恢復技術 147
7.10 本章小結 147
習題 148
第8章 UNIX的進程管理 150
8.1 進程的基本概念 150
8.1.1 程式的並發執行 150
8.1.2 進程的定義和描述 151
8.1.3 進程的狀態 152
8.1.4 進程控制基本概念 154
8.2 UNIX進程管理機制 155
8.2.1 進程創建 155
8.2.2 進程描述 157
8.2.3 進程管理數據結構 157
8.3 UNIX命令執行及進程屬性 163
8.3.1 命令執行與進程相關 163
8.3.2 進程屬性說明 164
8.4 UNIX進程調度與管理 165
8.4.1 UNIX進程狀態及其轉換 165
8.4.2 UNIX進程調度程式 166
8.4.3 UNIX進程調度策略及其實現 167
8.5 UNIX進程管理的系統調用 169
8.5.1 進程管理系統調用的作用 169
8.5.2 進程的創建 170
8.5.3 控制進程執行特定任務 171
8.5.4 控制進程的終止 173
8.5.5 進程的同步 173
8.5.6 庫函式system 174
8.6 本章小結 175
習題 176
第9章 UNIX存儲管理 178
9.1 存儲管理基本概念 178
9.1.1 存儲器配置原則 178
9.1.2 存儲管理基本任務 178
9.2 地址重定位 179
9.2.1 邏輯地址空間 179
9.2.2 物理地址空間 179
9.2.3 地址重定位 180
9.3 常用存儲管理技術 181
9.3.1 連續記憶體分配方式 181
9.3.2 覆蓋和交換技術 181
9.3.3 分頁管理技術 182
9.3.4 段式管理技術 184
9.4 虛擬存儲技術 185
9.4.1 局部性原理 185
9.4.2 虛擬存儲思想 185
9.4.3 虛擬存儲實現方法 186
9.4.4 虛擬存儲頁面置換算法 188
9.5 UNIX存儲管理策略 191
9.5.1 交換策略 191
9.5.2 請求調頁策略 191
9.6 Linux記憶體管理實現技術 192
9.6.1 Linux存儲地址識別 192
9.6.2 Linux進程存儲空間 193
9.6.3 Linux的分段模型 193
9.6.4 Linux的分頁模型 194
9.6.5 Linux進程虛地址空間描述 195
9.6.6 Linux物理記憶體空間管理 196
9.6.7 基於Slab的快取管理 197
9.7 本章小結 197
習題 198
第10章 UNIX系統的進程通信 200
10.1 進程通信的基本概念 200
10.1.1 進程通信的分類 200
10.1.2 進程間通信 200
10.1.3 進程通信實現方式 200
10.2 UNIX的基本通信技術 202
10.2.1 鎖檔案通信 202
10.2.2 記錄鎖定檔案通信 202
10.2.3 信號 204
10.2.4 用信號完成通信 204
10.3 管道通信 207
10.3.1 管道的讀寫控制 208
10.3.2 無名管道通信 208
10.3.3 有名管道通信 210
10.4 共享存儲區通信技術 213
10.4.1 共享存儲區的概念 213
10.4.2 共享存儲區的建立與操作 214
10.4.3 共享存儲區通信實例 215
10.5 UNIX的IPC 216
10.5.1 UNIX System V IPC基本機制 217
10.5.2 訊息佇列 217
10.5.3 Linux系統的IPC機制 222
10.6 本章小結 222
習題 223
第11章 UNIX的設備管理 224
11.1 設備管理的基本概念 224
11.1.1 設備管理模組的功能 224
11.1.2 設備分類管理 225
11.1.3 I/O傳輸控制技術 225
11.1.4 虛擬設備管理技術 227
11.2 UNIX的設備管理結構 227
11.2.1 設備管理體系結構 227
11.2.2 UNIX的設備分類標識 228
11.2.3 UNIX的設備特殊檔案 228
11.2.4 邏輯設備描述及訪問 229
11.3 設備狀態及設備控制 230
11.3.1 設備狀態及其轉換 230
11.3.2 設備控制策略 230
11.4 設備驅動與系統核心間的關聯 232
11.4.1 設備驅動程式 232
11.4.2 驅動程式與核心間的關聯 233
11.4.3 設備驅動程式與檔案系統的關係 233
11.5 塊設備的數據高速快取機制 235
11.5.1 緩衝控制塊的設定 235
11.5.2 緩衝池的結構 236
11.5.3 緩衝區的分配與釋放 237
11.6 對設備做讀寫操作 238
11.6.1 塊設備的讀寫 238
11.6.2 字元設備的讀寫 239
11.7 Linux系統設備管理問題 241
11.7.1 Linux設備驅動程式的特點 241
11.7.2 驅動程式與外界的接口 242
11.7.3 驅動程式的基本結構 242
11.7.4 常用設備接口 242
11.7.5 外設連線自動檢測技術 244
11.8 本章小結 246
習題 247
第12章 UNIX的多執行緒環境 248
12.1 執行緒的基本概念 248
12.1.1 多執行緒基礎 248
12.1.2 包含執行緒的進程模型 250
12.2 多執行緒平台特性 251
12.2.1 設計中可利用執行緒改進程式的
回響能力 251
12.2.2 處理器結構改善直接影響程式
執行效率 251
12.2.3 執行緒的執行狀態及運行特性 251
12.3 多執行緒管理模式 252
12.3.1 純用戶級執行緒管理模式 252
12.3.2 純核心級執行緒管理模式 253
12.3.3 組合型的執行緒管理模式 253
12.4 UNIX的多執行緒管理結構 254
12.5 多執行緒編程 255
12.5.1 多執行緒程式結構的改變 255
12.5.2 多執行緒標準庫 256
12.5.3 多執行緒編程規則 257
12.6 多執行緒程式設計技術 259
12.6.1 創建和使用簡單執行緒 259
12.6.2 對執行緒的常用操作 261
12.6.3 執行緒中使用的數據 263
12.7 多執行緒程式設計綜合舉例 264
12.8 本章小結 267
習題 269
第13章 UNIX網路特性及支撐環境 270
13.1 計算機網路基本知識 270
13.1.1 通信子網 270
13.1.2 資源子網 271
13.1.3 計算機網路的主要功能 271
13.1.4 計算機網路分類 272
13.1.5 計算機網路體系結構 272
13.1.6 網路中的傳輸介質和連線 274
13.1.7 網路作業系統 274
13.2 UNIX網路結構及支持協定 274
13.2.1 UNIX網路分層結構 274
13.2.2 UNIX中的TCP/IP協定 275
13.2.3 UNIX系統支持的UUCP協定 277
13.2.4 基於協定的Internet套用 278
13.3 網路間進程通信 278
13.3.1 套接字解決的問題 279
13.3.2 套接字通信的基本知識 279
13.3.3 套接字和套接字地址 280
13.3.4 套接字在虛電路服務中的套用 281
13.3.5 套接字在數據報服務中的套用 281
13.3.6 套接字協定族 282
13.3.7 套接字類型 282
13.3.8 套接字函式 282
13.4 用UNIX平台構建Internet網路環境 284
13.4.1 用戶域名和IP位址 284
13.4.2 TCP/IP配置信息 285
13.4.3 電子郵件服務 286
13.4.4 遠程檔案傳輸服務 287
13.4.5 遠程登錄telnet服務 288
13.4.6 網路檔案系統 290
13.5 本章小結 290
習題 291
第14章 X-Window及其他實用程式 292
14.1 X-Window 292
14.1.1 X-Window的特徵 292
14.1.2 X-Window的工作方式 293
14.1.3 X-Window的組成部件 294
14.1.4 X-Window編程環境介紹 295
14.2 數據檢索加工工具awk 296
14.2.1 awk基本描述 296
14.2.2 awk中的記錄和欄位 297
14.2.3 awk中使用的模式 298
14.2.4 awk中的操作語句 300
14.3 程式管理器 300
14.3.1 原始碼控制系統SCCS 300
14.3.2 並行開發程式管理器 300
14.4 詞法分析和語法分析生成工具 302
14.5 本章小結 303
習題 303
附錄A UNIX系統中的常用系統調用 304
附錄B Linux系統中的C環境 308
附錄C UNIX/Linux常用命令 314
參考文獻 343