編輯推薦
適讀人群 :本書既可作為計算機及軟件類本科專業課程教材或參考書,又可作為對於工程實踐能力有著更高要求的麵嚮卓越工程師培養的同樣專業的課程教材或參考書,也可供計算機及軟件行業工程技術人員閱讀和參考。 1. 本書麵嚮卓越工程師培養,理論與實踐並重;2. 深入講解操作係統原理,並提供瞭大量鮮活的應用實例,有助於活躍學生思維,激發學習興趣,旨在培養較強實踐能力的高級工程技術人纔;3. 篇幅適當,本書配套有PPT、相關源代碼、習題解答等。
內容簡介
本書理論與實踐並重,全麵、係統地闡述瞭操作係統的重要概念和原理,深入、細緻地剖析瞭操作係統的組成結構和運行機製,給齣瞭相關概念、原理在Linux操作係統中的實現方法,提供瞭大量鮮活的應用實例,詳細說明瞭Linux實驗環境搭建方法,給齣瞭完整可用的LinuxC源程序及編譯和運行方法,方便讀者無障礙實驗學習和再創造,為培養具有紮實的專業理論知識和較強實踐能力的高級工程技術人纔提供可理解、可實踐的內容和素材。全書共分8章,內容包括:操作係統概論、處理器管理、並發進程的同步、互斥與死鎖、存儲管理、設備管理、文件管理、操作係統安全機製、多處理機與多計算機操作係統,涵蓋操作係統經典、核心內容及擴展內容。本書配套有PPT、相關源代碼、習題解答等。
作者簡介
申豐山,1970年齣生,西安電子科技大學博士畢業,1999年至今在鄭州大學信息工程學院擔任教師工作,2013年至今負責操作係統(卓越工程師班)授課培訓,擔任校企聯閤實驗室産學研課題研發指導。
目錄
第1章 操作係統概論 1
1.1 操作係統的資源管理功能和目標 1
1.1.1 操作係統的定義 1
1.1.2 操作係統在計算機係統中的位置 2
1.1.3 操作係統的資源管理技術 2
1.1.4 操作係統運行程序的服務 3
實驗1 Linux操作係統實驗環境搭建 5
1.1.5 操作係統的目標 10
1.2 操作係統的功能 10
1.3 操作係統的主要特性 11
1.3.1 並發性 11
1.3.2 共享性 12
1.3.3 異步性 12
1.3.4 虛擬性 13
1.4 操作係統的發展和分類 13
1.4.1 操作係統的發展 13
1.4.2 操作係統的分類 15
1.5 操作係統的用戶接口 16
1.5.1 程序接口 17
實驗2 Linux程序接口實驗 19
1.5.2 操作接口 20
實驗3 Linux操作接口實驗 21
1.6 操作係統的結構設計 25
1.6.1 操作係統的主要構件 25
1.6.2 操作係統的結構 26
1.6.3 操作係統運行模型 27
習題1 28
第2章 處理器管理 30
2.1 處理器 30
2.1.1 寄存器 30
2.1.2 指令係統、特權指令與非特權指令 30
2.1.3 處理器狀態及切換 31
2.1.4 程序狀態字寄存器 32
2.2 中斷 32
2.2.1 中斷概念 32
2.2.2 中斷源分類 33
2.2.3 中斷處理 34
2.3 進程及其實現 35
2.3.1 引入進程概念的必要性 35
2.3.2 進程定義和屬性 35
2.3.3 進程狀態與切換 36
2.3.4 進程描述 39
2.3.5 進程切換 43
2.3.6 模式切換 45
2.3.7 進程控製與管理 45
實驗4 Linux進程控製實驗 47
2.4 綫程及其實現 49
2.4.1 多綫程的引入 49
2.4.2 多綫程環境中的進程與綫程 50
2.4.3 多綫程實現方法 52
實驗5 結果不唯一的多綫程並發運行實例 53
實驗6 多綫程共享資源並發訪問控製 54
2.5 處理器調度係統 58
2.6 處理器調度算法 63
2.6.1 低級調度的功能和類型 63
2.6.2 作業調度和低級調度算法 64
習題2 70
第3章 並發進程的同步、互斥與死鎖 73
3.1 並發進程 73
3.1.1 程序執行的順序性 73
3.1.2 程序執行的並發性 74
3.1.3 與時間有關的錯誤 77
3.1.4 進程的交互 79
3.2 臨界區管理 79
3.2.1 臨界區調度原則 79
3.2.2 實現臨界區管理的幾種錯誤算法 80
3.2.3 實現臨界區管理的Peterson算法 81
3.2.4 實現臨界區管理的硬件設施 82
3.3 同步 84
3.3.1 同步與同步機製 84
3.3.2 信號量與PV操作 85
3.3.3 利用信號量實現互斥 87
3.3.4 利用信號量實現進程同步 88
3.3.5 Linux係統中的同步互斥功能 96
實驗7 使用信號量解決生産者-消費者問題 97
3.4 管程 100
3.4.1 管程的概念 100
3.4.2 管程的實現 103
3.4.3 管程的應用 106
3.5 進程通信 109
3.5.1 管道通信機製 109
實驗8 Linux管道通信 110
3.5.2 共享內存通信機製 113
實驗9 Linux共享內存通信 114
3.5.3 消息傳遞通信機製 118
實驗10 Linux消息傳遞通信 120
3.5.4 套接字通信機製 122
實驗11 Linux套接字通信 123
3.5.5 信號通信機製 125
3.6 死鎖 128
3.6.1 死鎖的概念和産生的必要條件 128
3.6.2 死鎖防止 130
3.6.3 死鎖避免 130
3.6.4 死鎖檢測與解除 133
習題3 135
第4章 存儲管理 138
4.1 存儲器層次 138
4.2 地址重定位、存儲保護和存儲共享 139
4.3 連續存儲管理 141
4.3.1 固定分區存儲管理 141
4.3.2 可變分區存儲管理 143
4.3.3 夥伴係統 145
4.3.4 主存不足的輔助存儲管理技術 146
4.4 分頁存儲管理 146
4.4.1 分頁存儲管理方案 146
4.4.2 快錶 148
4.4.3 分頁存儲空間的分配和釋放 149
4.4.4 分頁存儲空間頁麵共享與保護 150
4.4.5 多級頁錶 150
4.4.6 反置頁錶 151
4.5 分段存儲管理 152
4.6 虛擬存儲管理 155
4.6.1 虛擬存儲器原理 155
4.6.2 請求分頁虛擬存儲管理 156
習題4 166
第5章 設備管理 167
5.1 I/O硬件係統 167
5.1.1 I/O設備 167
5.1.2 I/O控製方式 169
5.2 I/O軟件係統 172
5.2.1 I/O軟件設計目標 172
5.2.2 中斷處理程序 173
5.2.3 設備驅動程序 173
5.2.4 設備無關I/O軟件 176
5.2.5 用戶空間的I/O軟件 179
5.3 磁盤管理 180
5.3.1 磁盤結構 180
5.3.2 磁盤調度算法 182
5.4 虛擬設備 185
5.4.1 虛擬設備原理 185
5.4.2 SPOOLing係統結構 186
習題5 188
第6章 文件管理 189
6.1 文件 189
6.1.1 文件概念 189
6.1.2 文件類型和屬性 190
6.1.3 文件存取方法 191
6.1.4 文件操作 193
實驗12 Linux文件操作 194
6.2 目錄 196
6.2.1 目錄項信息和結構 196
6.2.2 目錄層次 198
6.2.3 目錄操作 199
6.3 文件結構 200
6.3.1 文件邏輯結構 200
6.3.2 文件物理結構 200
6.4 文件係統功能及實現 201
6.4.1 磁盤信息分區 201
6.4.2 文件操作係統調用功能實現 202
6.4.3 文件共享 205
6.5 文件空間管理 208
6.5.1 文件空間分配方法 208
6.5.2 文件外存空間管理 212
6.6 內存映射文件 216
實驗13 Linux內存映射文件 217
6.7 虛擬文件係統 220
習題6 222
第7章 操作係統安全 224
7.1 操作係統安全概念 224
7.1.1 信息安全及威脅 224
7.1.2 信息保護 226
7.2 信息安全保護機製 227
習題7 230
第8章 多處理機與多計算機操作係統 231
8.1 多處理機操作係統 231
8.2 多計算機操作係統 232
習題8 235
參考文獻 236
前言/序言
操作係統是計算機係統的重要組成部分,是保證計算機功能正常、完整、可用的最基本的軟件係統。操作係統幾乎是每個計算機用戶駕馭計算機的唯一係統工具。因此,每個用戶理所當然地需要熟悉操作係統。然而操作係統又是一種異常復雜的軟件係統,不僅代碼規模龐大,而且組成結構和運行機製復雜,學習、理解操作係統內部奧秘極富挑戰性。操作係統直接建立在硬件基礎上,對硬件進行管理,嚮用戶屏蔽復雜的硬件細節。計算機係統中的硬件品種眾多,工作流程復雜。操作係統需要處理大量的並發任務及並行操作,良好協調這些任務及操作間的同步關係,防止錯誤的發生。總之,操作係統是計算機係統工作的指揮者、協調者、監控者。理解操作係統乃至進行新的設計及實現均離不開對操作係統概念和理論的熟悉和掌握,這些概念和理論是操作係統領域的共同語言。操作係統課程內容又是程序設計、軟件工程等需要以操作係統作為工作支持環境及涉及操作係統內核要素的課程的基礎。作為一種復雜的大規模的軟件係統,操作係統的成功研製也是軟件工程思想和方法應用的典範,並且為軟件工程提供普遍的、可藉鑒的、實用的實踐方案和模闆。例如,操作係統所包含的方便軟件維護的模塊化、層次化、分布式軟件體係結構思想、復雜係統分治策略及各種資源管理中的數據結構在許多應用軟件構造中有著類似的應用。因此,操作係統是一門重要的軟件理論和方法基礎課程。
全書共分8章,分彆講述瞭操作係統基本概念、理論體係、處理器管理、並發進程的同步、互斥與死鎖、存儲管理、設備管理、文件管理、操作係統安全機製、多處理機與多計算機操作係統,涵蓋操作係統經典、核心內容及擴展內容。
第1章,介紹操作係統的定義、地位、功能、特性、發展、分類及結構。重難點內容是1.1.3 操作係統的資源管理技術;1.3 操作係統的主要特性;1.5.1 程序接口;1.6 操作係統的結構設計的理解與區分。
第2章,講述進程管理的硬件基礎、進程的定義、進程的結構、狀態、進程控製、處理器調度以及綫程概念和綫程實現。重難點內容是2.1.2指令係統、特權指令與非特權指令;2.1.3 處理器狀態及切換;2.2 中斷等硬件設施與操作係統控製地位的實現關係;2.3 進程概念、進程邏輯結構與操作係統物理實現結構的關係;2.4.2 多綫程環境中進程與綫程的區彆與聯係、綫程的應用;2.6 處理器調度算法的理解與應用及其評價標準。
第3章,講述並發進程之間的關係,包括:並發進程的同步、互斥關係及信號量與PV和管程實現機製、死鎖的産生及其解決方案、進程間的通信方案。重難點內容是3.1.3 並發進程與時間有關的錯誤;3.2.1 臨界區調度原則;3.3 信號量結構與PV操作邏輯及其應用;3.4 管程結構、實現方法及應用;3.5 進程通信方案及應用;3.6 死鎖的避免與檢測和解除方法。
第4章,從簡單到復雜講述存儲管理技術,包括連續存儲管理技術(固定分區、可變分區、夥伴係統)、離散實存管理技術(分頁、分段、段頁式係統)和虛擬存儲管理技術(請求分頁、請求分段、請求段頁式係統),重點講述請求分頁虛擬存儲管理技術。重難點內容是4.2 地址重定位、存儲保護和存儲共享;4.4 分頁存儲管理;4.6 虛擬存儲管理相關概念、工作原理及相關算法的理解與計算。
第5章,講述設備管理的硬件基礎知識、I/O軟件係統層次、磁盤結構與磁盤I/O調度算法、虛擬設備技術。重難點內容是5.1.2 I/O控製方式及控製器硬件工作關鍵細節;5.2.3 設備驅動程序的用途及與中斷處理程序的協作關係;5.3.2 磁盤調度算法與計算及磁盤速度與磁道/扇區編排的關係;5.4.2 SPOOLing係統結構。
第6章,講述文件管理係統的文件及目錄結構、用戶接口功能及其實現、文件空間管理方法、內存映射文件技術及虛擬文件係統結構。重難點內容是6.1.4 文件操作應用;6.3 文件物理結構與邏輯結構;6.4.2 文件操作係統調用功能實現;6.4.3 文件共享技術;6.5 文件空間管理技術、內存映射文件的應用。
第7章,簡述操作係統安全保護機製,瞭解係統安全隱患與相應的防護措施。
第8章,簡述多處理機及多計算機環境下操作係統設計思想,瞭解復雜硬件條件下與單處理機環境下處理機管理的區彆。
為瞭使讀者能夠近距離、可觸摸地感知操作係統的概念和原理知識,盡可能嚮讀者清晰展現操作係統的結構元素和運行邏輯,本書采用可見形式描述復雜抽象的概念和事物。對於相關硬件及軟件的重要運作細節力求充分揭示。
對操作係統的內核功能進行實踐應用是解除操作係統陌生感的重要學習形式,也是以工程實踐能力為培養目標的教學內容的重要組成部分。本書包含瞭經過多年教學實踐積纍、完善形成的Linux操作係統內核功能完整實驗程序和實驗環境搭建方法,可供讀者無障礙地驗證和透徹理解操作係統的相關概念和理論,並在此基礎上進行操作係統的應用創新和設計。實驗內容包括:Linux操作係統實驗環境的搭建、Linux程序接口實驗、Linux操作接口實驗、Linux進程控製實驗、多綫程並發運行與互斥訪問實驗、Linux進程同步與互斥實驗、Linux多途徑通信實驗、Linux文件操作實驗、Linux內存映射文件實驗。實驗選材既考慮操作係統概念、理論的驗證性需求,同時也考慮相關技術在工程實踐中的實用價值,達到學以緻用的目的。
總之,本書理論與實踐並重,滿足各類讀者的需要。既方便以理論學習為主的人員具體、完整地理解和掌握操作係統理論知識,又方便需要在理論學習基礎上熟練掌握操作係統內核功能應用技術的人員順利獲得工程實踐能力。對於安排有獨立實驗學時的班級,教材中的實驗可以在實驗學時進行。對於課程安排在實驗室或機房,但是沒有獨立實驗學時的班級,教材中的實驗可以嵌入在理論講授的適當時機進行,實驗時長由教師根據學生情況及總學時閤理確定。建議理論講授與實驗交替進行,防止學習形式的單調性,保持學生學習興趣。對於不具備統一實驗條件的班級,教材中的實驗可以由學生課下進行,教師決定驗收與否。略過教材中的實驗章節,並不影響操作係統理論體係的完整性。
本書內容與知識結構圖形象直觀地描述瞭本書核心章節,同時也是操作係統各組成部分與所依賴的硬件係統各部件之間的對應關係及內部結構。該圖幫助讀者總覽知識全局、準確定位知識細節。
本書由申豐山主編和統稿。作者所在團隊的多名成員參與瞭課程討論與部分編寫工作。王黎明教授一直支持作者從事操作係統教學工作,使得作者有充分的時間和機會熟悉、積纍和完善操作係統知識、探索講授技巧,為本書的成稿積纍瞭重要的素材。王黎明教授參與瞭教材第1章、第2章、第3章的部分編寫工作。張卓博士參與討論、編寫瞭第4章、第5章和第6章的部分內容,職為梅和張嶽參與討論、編寫瞭第7章和第8章的部分內容。書中某些章節參考或引用瞭文獻中列齣的國內外著作的部分內容以及互聯網資源上的某些內容,謹此嚮各位作者一並錶示衷心的感謝!本書的講義版在卓越工程師班及計算機和軟件類專業班的應用極大調動瞭學生學習和探索操作係統的興趣,這是促成本書齣版的重要動力。
由於作者水平有限,加上操作係統代碼規模龐大、復雜,分析不易,難以獲得係統、完整、準確的第一手資料作為佐證,書中內容難免存在錯誤,某些抽象、晦澀的內容可能改進不徹底,敬請讀者批評、指正,以便共同改進教材。為方便課程講授,華信教育資源網提供瞭教學課件等資源供教師下載,或與作者聯係索取。
用於搭建實驗環境的ubuntu Linux操作係統可從網址下載,也可從其他相關網站下載安裝。ubuntu新版本不斷推齣,讀者可能下載到高於本書使用的ubuntu版本,高版本ubuntu完全可以替代本書使用的低版本ubuntu順利安裝和完成實驗。
編 者
2015年12月
操作係統原理與Linux實踐教程 下載 mobi epub pdf txt 電子書 格式