本書從原理性和實用性出發(fā),從初學者的角度全面而詳細介紹了Linux操作系統(tǒng)的基本概念和常用命令的使用。闡述的內(nèi)容都是針對初學者完成日常工作所必需的各個方面,包括Linux的基本概念、常用命令、文件系統(tǒng)、屏幕編輯器、進程管理、shell程序設計、數(shù)據(jù)管理工具、集成編譯工具、系統(tǒng)調(diào)用接口與應用程序開發(fā)、進程間通信和線程控制等,最后給出了一組綜合設計實驗。本書各章都有大量的實例講述,各章末尾也有練習題,可幫助讀者由淺入深、循序漸進地學習Linux操作系統(tǒng),理論聯(lián)系實際,快速上手實踐,逐步達到熟練掌握Linux操作系統(tǒng)的使用技巧以及提高應用開發(fā)能力的目的。
1.作者為電子科技大學資深教授,選用真實教學素材。
2.注重教材的立體化配套資源,以方便教學。
3.注重實戰(zhàn),通過大量的實例引導學生快速上手。
4.配套綜合設計實驗,提高學生的動手實踐能力。
本書編寫組成員現(xiàn)為電子科技大學信息與軟件工程學院操作系統(tǒng)課程組教師,長期從事與操作系統(tǒng)密切相關的教學、科研、應用開發(fā)和社會服務等方面的工作,主要研究領域包括操作系統(tǒng)、大型機系統(tǒng)、數(shù)據(jù)處理、云計算、嵌入式系統(tǒng)等。
編寫組成員曾先后參加完成了國家“六五”“七五”和“八五”科技攻關項目,對UNIX操作系統(tǒng)的內(nèi)核有深入的了解,屬于國內(nèi)最早一批從事該領域研究的人員。此后又參加完成多項涉及金融、航空、通信、鐵路、地質(zhì)和生產(chǎn)制造等領域的應用開發(fā)工作,在UNIX/Linux操作系統(tǒng)應用方面積累了豐富的經(jīng)驗。
編寫組成員長期講授“操作系統(tǒng)基礎”“UNIX/Linux操作系統(tǒng)內(nèi)核結構”“UNIX/Linux操作系統(tǒng)基礎”“基于UNIX/Linux操作系統(tǒng)的編程技術”和“嵌入式系統(tǒng)”等課程,具有豐富的操作系統(tǒng)類課程的教學經(jīng)驗。
2004年編寫組成員參與的“計算機操作系統(tǒng)系列課程改革與建設”獲電子科技大學優(yōu)秀教學成果獎;2005年“計算機操作系統(tǒng)”課程被評為四川省精品課程;2006年“計算機操作系統(tǒng)”課程被評為國家級精品課程。多人次獲得電子科技大學優(yōu)秀主講教師、專業(yè)核心課程骨干教師等稱號。
編寫組成員參與完成了國家級教改項目“大型主機應用型創(chuàng)新人才培養(yǎng)模式的研究與實踐”,參與組建了國內(nèi)高校第一個大型主機系,率先系統(tǒng)地開設了“大型機操作系統(tǒng)”“z/Linux操作系統(tǒng)”“AIX操作系統(tǒng)”“大型機系統(tǒng)”和“大型機應用基礎”等課程,并承擔完成了多門“教育部-IBM精品課程”建設任務。
第1章 Linux操作系統(tǒng)基礎 1
1.1 引言 1
1.1.1 什么是Linux 1
1.1.2 Linux的發(fā)展歷程 1
1.1.3 Linux操作系統(tǒng)的組成 2
1.1.4 Linux操作系統(tǒng)的版本 4
1.2 Linux操作系統(tǒng)的運行模式與功能特征 5
1.2.1 Linux操作系統(tǒng)的運行模式 5
1.2.2 Linux操作系統(tǒng)的功能特征 5
1.3 用戶與登錄 6
1.3.1 Linux用戶管理 6
1.3.2 登錄系統(tǒng) 7
1.4 Linux命令基礎 7
1.4.1 簡單命令 7
1.4.2 通用命令格式 8
1.4.3 命令行更正和程序終止 8
1.4.4 聯(lián)機手冊 8
1.5 文件與進程 8
1.6 練習 9
第2章 Linux文件系統(tǒng) 11
2.1 文件系統(tǒng)的結構 11
2.1.1 組織結構 11
2.1.2 起始目錄與當前工作目錄 11
2.1.3 路徑名 12
2.1.4 標準目錄與文件 12
2.2 文件的定義與分類 13
2.2.1 文件的定義 13
2.2.2 文件的分類 13
2.3 目錄操作命令 14
2.3.1 創(chuàng)建目錄 14
2.3.2 刪除目錄 15
2.3.3 修改當前目錄 15
2.3.4 查看當前目錄 15
2.3.5 列出指定目錄 15
2.4 文件操作命令 17
2.4.1 顯示文件內(nèi)容 17
2.4.2 復制文件 17
2.4.3 移動文件 18
2.4.4 刪除文件 18
2.4.5 打印文件 18
2.4.6 格式化輸出文件 18
2.4.7 鏈接文件 18
2.4.8 基本實用程序 19
2.5 文件的權限管理 20
2.5.1 文件的權限種類 20
2.5.2 文件權限的檢測與修改 21
2.5.3 文件所有權的修改 21
2.6 文件名置換 21
2.7 練習 22
第3章 vi編輯器 23
3.1 vi編輯器概述 23
3.1.1 vi編輯器的基本工作流程 23
3.1.2 vi編輯器的工作模式 23
3.2 vi編輯器的屏編工作模式 24
3.2.1 命令模式 24
3.2.2 文本輸入模式 24
3.3 屏編vi的使用方法 24
3.3.1 vi的啟動與退出 24
3.3.2 vi的常用命令 25
3.4 行編edit的使用方法 26
3.4.1 進入行編 26
3.4.2 退出行編 27
3.4.3 行編的常用命令 27
3.5 vi命令的選項 28
3.6 練習 28
第4章 Shell的交互功能和進程管理 30
4.1 Shell的功能與分類 30
4.1.1 Shell的功能簡介 30
4.1.2 Shell的分類 30
4.1.3 Shell的啟動和執(zhí)行過程 31
4.1.4 Shell可識別的命令類型 32
4.2 Shell的內(nèi)部命令 34
4.3 標準輸入/輸出重定向 36
4.3.1 標準輸入/輸出 36
4.3.2 標準輸入重定向 37
4.3.3 標準輸出重定向 38
4.3.4 標準錯誤輸出重定向 39
4.3.5 管道 40
4.4 Shell的變量 40
4.4.1 Shell的環(huán)境變量 40
4.4.2 Shell的系統(tǒng)變量 43
4.4.3 Shell的用戶自定義變量 45
4.4.4 清除變量 45
4.5 Shell的引用符 45
4.5.1 雙引號的使用 46
4.5.2 單引號的使用 46
4.5.3 反撇號的使用 47
4.5.4 花括號的使用 47
4.6 進程的狀態(tài)和監(jiān)控 47
4.6.1 進程的狀態(tài)及其轉換 48
4.6.2 獲取進程狀態(tài)信息命令ps 49
4.6.3 暫停進程運行命令sleep 50
4.6.4 作業(yè)控制命令fg和jobs 50
4.6.5 終止進程運行命令kill 52
4.7 練習 54
第5章 Shell程序設計 55
5.1 Shell編程語言簡介 55
5.1.1 編寫Shell腳本的基本過程 55
5.1.2 執(zhí)行Shell腳本 56
5.2 Shell語句的分類 57
5.2.1 說明性語句 58
5.2.2 功能性語句 58
5.2.3 結構性語句 61
5.3 Shell的結構性語句 61
5.3.1 測試語句test 61
5.3.2 條件語句if…then…fi 62
5.3.3 條件語句if…then…else…fi 63
5.3.4 多路分支語句case…esac 64
5.3.5 循環(huán)語句for…do…done 65
5.3.6 循環(huán)語句while…do…done 66
5.3.7 循環(huán)語句until…do…done 67
5.3.8 循環(huán)控制語句continue和break 68
5.4 Shell函數(shù) 69
5.5 命令組的應用規(guī)則與限制 71
5.5.1 Shell命令組的標準輸出重定向 71
5.5.2 Shell命令組的標準輸入重定向 72
5.5.3 while命令組的循環(huán)條件 74
5.6 練習 74
第6章 數(shù)據(jù)查找和篩選工具 76
6.1 正則表達式 76
6.1.1 正則表達式的定義 76
6.1.2 正則表達式中的元字符 77
6.1.3 正則表達式應用示例 77
6.2 流編輯器sed簡介 78
6.2.1 什么是流編輯器 78
6.2.2 sed命令的基本格式 79
6.2.3 sed命令中的行編命令基本格式 79
6.2.4 sed命令的出錯信息和退出狀態(tài) 80
6.2.5 sed命令應用示例 81
6.3 數(shù)據(jù)處理器awk簡介 82
6.3.1 數(shù)據(jù)記錄和數(shù)據(jù)域 82
6.3.2 awk命令的基本格式 83
6.3.3 格式化輸出 84
6.3.4 awk的命令文件 85
6.4 練習 85
第7章 多模塊鏈接與集成編譯工具GNU make 87
7.1 多模塊程序設計 87
7.1.1 多模塊程序的常見自動構建系統(tǒng) 91
7.1.2 基于GNU make的構建系統(tǒng) 93
7.2 make程序的基本功能和運行流程 95
7.2.1 GNU make是如何工作的 95
7.2.2 指定Makefile 95
7.2.3 Makefile概述 95
7.2.4 指定目標 96
7.2.5 控制make執(zhí)行的函數(shù) 96
7.2.6 make支持的選項及退出碼 97
7.3 Makefile規(guī)則 98
7.3.1 規(guī)則的格式 99
7.3.2 在規(guī)則中使用通配符 100
7.3.3 文件搜尋 100
7.3.4 偽目標 101
7.3.5 自動生成依賴性 102
7.4 在Makefile中執(zhí)行命令 104
7.4.1 顯示命令 104
7.4.2 命令執(zhí)行順序 104
7.4.3 命令出錯 105
7.4.4 嵌套執(zhí)行make 105
7.5 變量定義和使用 106
7.5.1 變量的基礎 107
7.5.2 變量中的變量 107
7.5.3 使用條件判斷 109
7.6 練習 110
第8章 文件管理與輸入/輸出調(diào)用 112
8.1 虛擬文件系統(tǒng) 112
8.1.1 基本概念 112
8.1.2 文件系統(tǒng)在存儲設備上的表現(xiàn)形式 113
8.1.3 虛擬文件系統(tǒng)涉及的內(nèi)核對象 114
8.1.4 內(nèi)核對象間的聯(lián)系 118
8.1.5 虛擬文件系統(tǒng)的典型系統(tǒng)調(diào)用 119
8.2 文件I/O 123
8.2.1 打開文件 124
8.2.2 創(chuàng)建文件 125
8.2.3 關閉文件 125
8.2.4 文件讀寫位置 125
8.2.5 讀文件 126
8.2.6 寫文件 127
8.3 文件和目錄的屬性與權限 127
8.3.1 獲取當前工作目錄路徑 128
8.3.2 讀取目錄文件 128
8.3.3 獲取與解析文件屬性 130
8.3.4 文件和目錄訪問權限 133
8.3.5 創(chuàng)建與刪除目錄 133
8.4 練習 134
第9章 進程控制 136
9.1 運行環(huán)境和進程的標識 136
9.1.1 進程基本概念 136
9.1.2 進程描述符 136
9.2 進程的創(chuàng)建和退出 140
9.2.1 進程的創(chuàng)建 140
9.2.2 進程的退出 145
9.3 進程的等待與睡眠 147
9.3.1 wait函數(shù) 147
9.3.2 waitpid函數(shù) 148
9.4 進程的執(zhí)行 150
9.4.1 exec函數(shù)簇 150
9.4.2 進程的執(zhí)行與文件共享 153
9.5 進程的屬性修改 156
9.5.1 進程USERID的修改 156
9.5.2 進程GROUPID的修改 158
9.6 進程的調(diào)度 158
9.6.1 基本概念 158
9.6.2 進程調(diào)度的時機與方式 160
9.6.3 常用的進程調(diào)度算法 161
9.6.4 進程調(diào)度策略 165
9.6.5 主要函數(shù) 167
9.7 練習 175
第10章 進程間通信 177
10.1 管道 177
10.1.1 基本概念 177
10.1.2 使用管道 178
10.1.3 創(chuàng)建和關閉管道 182
10.1.4 從管道中讀取數(shù)據(jù)和向管道中寫入數(shù)據(jù) 183
10.2 信號燈 187
10.2.1 信號燈概述 187
10.2.2 信號燈與內(nèi)核 187
10.2.3 操作信號燈 188
10.2.4 信號燈限制 190
10.2.5 競爭問題 191
10.3 消息隊列 191
10.3.1 什么是消息隊列 191
10.3.2 消息隊列類型 192
10.3.3 消息隊列相關函數(shù) 194
10.3.4 如何利用消息隊列進行客戶端和服務器的通信 196
10.4 共享存儲 199
10.4.1 什么是共享存儲 199
10.4.2 獲得共享存儲函數(shù) 200
10.4.3 刪除共享存儲段 203
10.4.4 如何將進程掛接到共享存儲上 203
10.4.5 如何查看系統(tǒng)的共享存儲資源 204
10.4.6 信號量 205
10.5 練習 209
第11章 線程及線程控制 211
11.1 什么是線程 211
11.2 線程的創(chuàng)建和終止 212
11.2.1 線程的創(chuàng)建 212
11.2.2 線程的終止 213
11.3 線程的同步與互斥 214
11.3.1 基本概念 214
11.3.2 死鎖 214
11.3.3 互斥量 216
11.4 線程的屬性與限制 218
11.4.1 線程的屬性 218
11.4.2 線程的限制 219
11.5 Linux操作系統(tǒng)下的多線程編程 220
11.5.1 概念介紹 220
11.5.2 多線程的實現(xiàn) 220
11.5.3 線程之間的數(shù)據(jù)處理 222
11.6 練習 229
第12章 綜合實驗 230
12.1 設備驅動程序與設備文件 230
12.2 Linux操作系統(tǒng)設備類型 231
12.3 Linux操作系統(tǒng)設備驅動的特性 233
12.4 Linux操作系統(tǒng)設備驅動程序的組成部分 233
12.5 Linux內(nèi)核模塊與設備驅動程序開發(fā)實驗 234
12.5.1 實驗目的 234
12.5.2 實驗原理 234
12.5.3 實驗步驟 236
12.6 Linux操作系統(tǒng)字符設備驅動程序開發(fā)實驗 237
12.6.1 實驗目的 237
12.6.2 實驗原理 237
12.6.3 實驗步驟 242
12.7 Linux操作系統(tǒng)塊設備驅動程序開發(fā)實驗 243
12.7.1 實驗目的 243
12.7.2 實驗原理 243
12.7.3 實驗步驟 250
參考文獻 251