圖書簡介
作業系統是現代計算機系統中必不可少的基本系統軟體,也是計算機專業的必修課程和從事計算機套用人員必不可少的知識。
本書是編著者在清華大學計算機系多年教學和科研的基礎上對第3版改編而成的,全書共12章,主要內容包括作業系統用戶界面、進程與執行緒管理、處理機管理、記憶體管理、檔案系統與設備管理等基本原理及Linux和Windows兩個主流作業系統的核心介紹。
與第3版相比,本書進一步深入淺出地對作業系統的基本原理進行了描述,而且,本書更進一步強調了學生對當前主流作業系統的應有了解。因此,本書在第3版Linux 2.4和Windows NT作業系統實例的基礎上,補充了有關Linux 2.6、Windows NT 6.0以及嵌入式作業系統的相關知識。
本書可作為高等院校計算機專業或相關專業作業系統課程的教材,也可供有關科技人員自學或參考。
目錄
第1章緒論1
1.1作業系統概念1
1.2作業系統的歷史2
1.2.1手工操作階段2
1.2.2早期批處理3
1.2.3多道程式系統5
1.2.4分時作業系統6
1.2.5實時作業系統6
1.2.6通用作業系統7
1.2.7作業系統的進一步發展7
1.3作業系統的基本類型8
1.3.1批處理作業系統8
1.3.2分時系統9
1.3.3實時系統9
1.3.4通用作業系統10
1.3.5個人計算機上的作業系統10
1.3.6網路作業系統10
1.3.7分散式作業系統11
1.4作業系統功能11
1.4.1處理機管理12
1.4.2存儲管理12
1.4.3設備管理12
1.4.4信息管理(檔案系統管理)12
1.4.5用戶接口13
1.5計算機硬體簡介13
1.5.1計算機的基本硬體元素13
1.5.2與作業系統相關的幾種主要暫存器14
1.5.3存儲器的訪問速度15
1.5.4指令的執行與中斷15
1.5.5作業系統的啟動16
1.6算法的描述16
1.7研究作業系統的幾種觀點17
1.7.1計算機資源管理者的觀點18
1.7.2用戶界面的觀點18
1.7.3進程管理的觀點18
本章小結18
習題19
第2章作業系統用戶界面20
2.1簡介20
2.2一般用戶的輸入輸出界面21
2.2.1作業的定義21
2.2.2作業組織21
2.2.3一般用戶的輸入輸出方式22
2.3命令控制界面24
2.4Linux與Windows的命令控制界面25
2.4.1Linux的命令控制界面25
2.4.2Windows的命令控制界面27
2.5系統調用29
2.6Linux和Windows的系統調用31
2.6.1Linux系統調用31
2.6.2Windows系統調用32
本章小結33
習題34
第3章進程管理35
3.1進程的概念35
3.1.1程式的並發執行35
3.1.2進程的定義39
3.2進程的描述39
3.2.1進程控制塊40
3.2.2進程上下文41
3.2.3進程上下文切換43
3.2.4進程空間與大小43
3.3進程狀態及其轉換44
3.3.1進程狀態44
3.3.2進程狀態轉換44
3.4進程控制45
3.4.1進程創建與撤銷45
3.4.2進程的阻塞與喚醒47
3.5進程互斥47
3.5.1資源共享所引起的制約47
3.5.2互斥的加鎖實現50
3.5.3信號量和P、V原語51
3.5.4用P、V原語實現進程互斥54
3.6進程同步55
3.6.1同步的概念55
3.6.2私用信號量56
3.6.3用P、V原語操作實現同步57
3.6.4生產者消費者問題58
3.7進程通信59
3.7.1進程的通信方式59
3.7.2訊息緩衝機制60
3.7.3信箱通信61
3.7.4進程通信的實例——和控制台的通信62
3.7.5進程通信的實例——管道66
3.8死鎖問題69
3.8.1死鎖的概念69
3.8.2死鎖的消除方法70
3.9執行緒的概念71
3.9.1為什麼要引入執行緒71
3.9.2執行緒的基本概念72
3.9.3執行緒與進程的區別72
3.9.4執行緒的適用範圍73
3.10執行緒分類與執行74
3.10.1執行緒的分類74
3.10.2執行緒的執行特性76
本章小結77
習題77
第4章處理機調度79
4.1分級調度79
4.1.1作業的狀態及其轉換79
4.1.2調度的層次80
4.1.3作業與進程的關係81
4.2作業調度81
4.2.1作業調度功能81
4.2.2作業調度目標與性能衡量82
4.3進程調度84
4.3.1進程調度的功能84
4.3.2進程調度的時機85
4.3.3進程調度性能評價86
4.4調度算法86
4.5算法評價90
4.5.1FCFS方式的調度性能分析90
4.5.2輪轉法調度性能評價93
4.5.3線性優先權法的調度性能94
4.6實時系統調度方法95
4.6.1實時系統的特點95
4.6.2實時調度算法的分類97
4.6.3時限調度算法與頻率單調調度算法97
本章小結99
習題99
第5章存儲管理101
5.1存儲管理的功能101
5.1.1虛擬存儲器101
5.1.2地址變換102
5.1.3內外存數據傳輸的控制104
5.1.4記憶體的分配與回收104
5.1.5記憶體信息的共享與保護105
5.2分區存儲管理106
5.2.1分區管理基本原理106
5.2.2分區的分配與回收108
5.2.3有關分區管理其他問題的討論111
5.3覆蓋與交換技術112
5.3.1覆蓋技術112
5.3.2交換技術113
5.4頁式管理115
5.4.1頁式管理的基本原理115
5.4.2靜態頁面管理115
5.4.3動態頁式管理118
5.4.4請求頁式管理中的置換算法120
5.4.5存儲保護123
5.4.6頁式管理的優缺點123
5.5段式與段頁式管理124
5.5.1段式管理的基本思想124
5.5.2段式管理的實現原理124
5.5.3段式管理的優缺點128
5.5.4段頁式管理的基本思想129
5.5.5段頁式管理的實現原理129
5.6局部性原理和抖動問題131
本章小結134
習題134第6章進程與存儲管理示例136
6.1Linux進程和存儲管理簡介136
6.2Linux進程結構139
6.2.1進程的概念139
6.2.2進程的虛擬地址結構140
6.2.3進程上下文141
6.2.4進程的狀態和狀態轉換143
6.2.5小結145
6.3Linux進程控制145
6.3.1Linux啟動及進程樹的形成145
6.3.2進程控制146
6.4Linux進程調度149
6.5Linux進程通信152
6.5.1Linux的低級通信152
6.5.2進程間通信153
6.6Linux存儲管理161
6.6.1虛存空間和管理161
6.6.2請求調頁技術163
本章小結165
習題166
第7章Windows的進程與記憶體管理167
7.1WindowsNT的特點及相關的概念167
7.1.1WindowsNT體系結構的特點167
7.1.2Windows的管理機制168
7.2Windows進程和執行緒169
7.2.1Windows的進程和執行緒的定義170
7.2.2進程和執行緒的關聯170
7.2.3Windows進程的結構170
7.2.4Windows執行緒的結構171
7.2.5Windows進程和執行緒的創建172
7.3Windows處理器調度機制173
7.3.1調度優先權174
7.3.2執行緒狀態174
7.3.3執行緒調度機制175
7.4Windows的記憶體管理176
7.4.1記憶體管理器177
7.4.2記憶體管理的機制177
7.5虛擬地址空間178
7.5.1虛擬地址空間布局178
7.5.2虛擬地址轉換179
7.6頁面調度181
7.6.1缺頁處理181
7.6.2工作集及頁面調度策略182
7.6.3頁框號和物理記憶體管理182
本章小結183
習題184
第8章檔案系統185
8.1檔案系統的概念185
8.2檔案的邏輯結構與存取方法187
8.2.1邏輯結構187
8.2.2存取方法189
8.3檔案的物理結構與存儲設備191
8.3.1檔案的物理結構192
8.3.2檔案存儲設備194
8.4檔案存儲空間管理195
8.5檔案目錄管理197
8.5.1檔案的組成198
8.5.2檔案目錄198
8.5.3便於共享的檔案目錄200
8.5.4目錄管理201
8.6檔案存取控制203
8.7檔案的使用205
8.8檔案系統的層次模型205
本章小結207
習題208
第9章設備管理210
9.1引言210
9.1.1設備的類別210
9.1.2設備管理的功能和任務211
9.2數據傳送控制方式212
9.2.1程式直接控制方式212
9.2.2中斷方式213
9.2.3DMA方式215
9.2.4通道控制方式217
9.3中斷技術219
9.3.1中斷的基本概念219
9.3.2中斷的分類與優先權219
9.3.3軟中斷220
9.3.4中斷處理過程220
9.4緩衝技術222
9.4.1緩衝的引入222
9.4.2緩衝的種類222
9.4.3緩衝池的管理223
9.5設備分配225
9.5.1設備分配用數據結構225
9.5.2設備分配的原則227
9.5.3設備分配算法228
9.6I/O進程控制228
9.6.1I/O控制的引入228
9.6.2I/O控制的功能228
9.6.3I/O控制的實現229
9.7設備驅動程式230
本章小結230
習題231
第10章Linux檔案系統233
10.1Linux檔案系統的特點與檔案類別233
10.1.1特點233
10.1.2檔案類型234
10.2Linux的虛擬檔案系統235
10.2.1虛擬檔案系統框架235
10.2.2Linux虛擬檔案系統的數據結構235
10.2.3VFS的系統調用241
10.3檔案系統的註冊和掛裝242
10.3.1檔案系統註冊242
10.3.2已掛裝檔案系統描述符鍊表243
10.3.3掛裝根檔案系統244
10.3.4掛裝一般檔案系統245
10.3.5卸載檔案系統246
10.4進程與檔案系統的聯繫246
10.4.1系統打開檔案表246
10.4.2用戶打開檔案表246
10.4.3進程的當前目錄和根目錄247
10.5ext2檔案系統247
10.5.1ext2檔案系統的存儲結構247
10.5.2ext2檔案系統主要的磁碟數據結構248
10.5.3ext2檔案系統的記憶體數據結構251
10.5.4數據塊定址252
10.6塊設備驅動253
10.6.1設備配置253
10.6.2設備驅動程式的接口254
10.7字元設備驅動255
本章小結256
習題257
第11章Windows的設備管理和檔案系統258
11.1WindowsI/O系統的結構258
11.1.1設計目標258
11.1.2設備管理服務258
11.2設備驅動程式和I/O處理259
11.2.1設備驅動類型和結構260
11.2.2Windows的I/O處理260
11.3Windows的檔案系統262
11.3.1Windows磁碟管理263
11.3.2Windows檔案系統格式263
11.3.3Windows檔案系統驅動264
11.4NTFS檔案系統264
11.4.1NTFS的特點264
11.4.2NTFS的磁碟結構265
11.4.3NTFS的檔案系統恢復266
本章小結267
習題268
第12章嵌入式作業系統簡介269
12.1嵌入式作業系統的總體架構269
12.1.1嵌入式作業系統特點及分類269
12.1.2嵌入式作業系統的總體架構270
12.2嵌入式作業系統的任務管理273
12.2.1多任務機制273
12.2.2任務狀態和任務狀態遷移274
12.2.3任務調度275
12.2.4任務間通信276
12.2.5VxWorks任務管理278
12.3記憶體管理281
12.3.1動態記憶體管理機制282
12.3.2VxWorks動態記憶體管理函式282
12.3.3虛擬記憶體管理機制283
12.3.4VxWorks虛擬記憶體管理284
12.4設備管理與檔案系統285
12.4.1I/O系統內部結構285
12.4.2實時核心的中斷管理286
12.4.3基本I/O操作流程287
12.4.4VxWorks的I/O接口287
12.4.5檔案系統架構及操作288
12.4.6VxWorks檔案系統289
12.5嵌入式作業系統的開發290
12.5.1集成開發環境Tornado291
12.5.2VxWorks的交叉編譯開發環境294
12.5.3實例開發的設計與實現過程296
本章小結297
習題298
參考文獻299