本書從概念、原理和技術(shù)的角度介紹操作系統(tǒng)的基礎(chǔ)知識(shí),包括進(jìn)程管理、中斷與處理機(jī)調(diào)度、死鎖、存儲(chǔ)管理、設(shè)備管理、文件系統(tǒng)。不僅講述基本原理,而且以當(dāng)今較為成熟和流行的操作系統(tǒng)如以Windows、UNIX、Linux為例,在相關(guān)章節(jié)介紹具體的實(shí)現(xiàn)技術(shù)和方法。此外,還介紹了近年來新出現(xiàn)的云操作系統(tǒng),蘋果MacOS、安卓Android等移動(dòng)操作系統(tǒng)。針對(duì)云計(jì)算技術(shù),增加篇幅介紹其實(shí)現(xiàn)的基礎(chǔ):分布式文件系統(tǒng)。
本書有3個(gè)特色:理論和實(shí)際系統(tǒng)的實(shí)現(xiàn)相結(jié)合;收錄了近年來操作系統(tǒng)新的技術(shù)和發(fā)展;每章后面附一篇描述對(duì)應(yīng)章節(jié)技術(shù)的英語(yǔ)小短文,既可拓展視野,又可以提高讀者的科技英語(yǔ)閱讀水平。
本書可作為普通高等院校計(jì)算機(jī)專業(yè)及相關(guān)專業(yè)的操作系統(tǒng)課程教材,也可供廣大計(jì)算機(jī)科學(xué)工作者和從事相關(guān)領(lǐng)域工程技術(shù)人員參考。
針對(duì)本科和考研,首先講解操作系統(tǒng)帶有共性的基本原理:進(jìn)程管理、中斷與調(diào)度、死鎖、存儲(chǔ)管理、設(shè)備管理、文件系統(tǒng)等,然后以UNIX、Linux、Windows為例闡述具體實(shí)現(xiàn)。相對(duì)于封閉源代碼的Windows,開放源代碼的Linux描述得更為詳細(xì)。
操作系統(tǒng)近年一直在不斷地發(fā)展和創(chuàng)新,針對(duì)于此,本書還介紹了近年來新出現(xiàn)的云操作系統(tǒng)、蘋果MacOS和安卓Android等移動(dòng)操作系統(tǒng)。針對(duì)云計(jì)算技術(shù),在第10章增加篇幅介紹其實(shí)現(xiàn)的基礎(chǔ):分布式文件系統(tǒng)。為了跟蹤國(guó)外的新技術(shù),常常需要閱讀原版英文資料,本書亦為每章附上一篇描述該章技術(shù)的英語(yǔ)短文,以期能提高有需要的讀者的英語(yǔ)閱讀水平。
本書在原范策老師主編、清華大學(xué)出版社出版的《操作系統(tǒng)教程》的基礎(chǔ)上,做了內(nèi)容的替換和更新。課程組所做的配套PPT,內(nèi)容生動(dòng)詳實(shí)、配套大量的動(dòng)畫描述各種原理,方便讀者自學(xué)及用于教學(xué)。該課件榮獲第五屆全國(guó)高等學(xué)校計(jì)算機(jī)課件評(píng)比三等獎(jiǎng)。此外,章后習(xí)題充分,附有答案,便于讀者理解和鞏固相關(guān)知識(shí)點(diǎn)。
第1章操作系統(tǒng)概述
1.1什么是操作系統(tǒng)
1.2操作系統(tǒng)的目標(biāo)和功能
1.2.1操作系統(tǒng)的目標(biāo)
1.2.2操作系統(tǒng)的功能
1.3操作系統(tǒng)的發(fā)展歷程
1.3.1操作系統(tǒng)的形成
1.3.2操作系統(tǒng)的完善
1.4操作系統(tǒng)的分類
1.4.1多道批處理操作系統(tǒng)
1.4.2分時(shí)操作系統(tǒng)
1.4.3實(shí)時(shí)操作系統(tǒng)
1.4.4通用操作系統(tǒng)
1.4.5網(wǎng)絡(luò)操作系統(tǒng)
1.4.6分布式操作系統(tǒng)
1.4.7微機(jī)操作系統(tǒng)
1.4.8嵌入式操作系統(tǒng)
1.4.9多處理機(jī)操作系統(tǒng)
1.4.10服務(wù)器操作系統(tǒng)
1.4.11大型機(jī)操作系統(tǒng)
1.4.12云操作系統(tǒng)
1.4.13移動(dòng)操作系統(tǒng)
1.5支持操作系統(tǒng)的硬件環(huán)境
1.6操作系統(tǒng)的特征
1.6.1并發(fā)性
1.6.2資源共享性
1.6.3異步性
1.7現(xiàn)代操作系統(tǒng)
1.7.1Windows
1.7.2Mac OS
1.7.3UNIX
1.7.4Linux
1.7.5Android
1.8有關(guān)操作系統(tǒng)的研究
習(xí)題1
閱讀材料
第2章用戶接口與作業(yè)管理
2.1操作系統(tǒng)提供的用戶接口
2.1.1程序接口與系統(tǒng)調(diào)用
2.1.2操作接口與系統(tǒng)程序
2.2作業(yè)的基本概念
2.2.1作業(yè)的定義
2.2.2作業(yè)的分類
2.3批處理作業(yè)控制
2.3.1作業(yè)狀態(tài)
2.3.2作業(yè)控制塊
2.4調(diào)度算法
2.4.1作業(yè)調(diào)度算法的目標(biāo)與設(shè)計(jì)因素
2.4.2單道批處理作業(yè)調(diào)度算法
2.4.3多道批處理作業(yè)調(diào)度算法
習(xí)題2
閱讀材料
第3章進(jìn)程管理
3.1多道程序設(shè)計(jì)
3.2進(jìn)程的概念
3.2.1前驅(qū)圖和程序執(zhí)行
3.2.2進(jìn)程的描述
3.3進(jìn)程控制塊和狀態(tài)轉(zhuǎn)換
3.3.1進(jìn)程控制塊PCB
3.3.2進(jìn)程狀態(tài)及其轉(zhuǎn)換
3.4進(jìn)程控制
3.4.1操作系統(tǒng)控制結(jié)構(gòu)
3.4.2進(jìn)程創(chuàng)建與終止
3.4.3進(jìn)程的阻塞與喚醒
3.4.4進(jìn)程的掛起與激活
3.4.5進(jìn)程間的相互關(guān)系
3.5線程
3.5.1線程的引入
3.5.2線程的結(jié)構(gòu)與線程控制塊TCB
3.5.3線程與進(jìn)程
3.5.4線程的實(shí)現(xiàn)
3.5.5線程的調(diào)度
3.5.6線程的應(yīng)用
3.6Linux進(jìn)程管理
3.6.1Linux進(jìn)程結(jié)構(gòu)
3.6.2Linux進(jìn)程狀態(tài)及運(yùn)行模式
3.6.3Linux進(jìn)程控制
習(xí)題3
閱讀材料
第4章中斷和處理機(jī)調(diào)度
4.1中斷
4.1.1中斷和指令周期
4.1.2中斷處理
4.1.3多個(gè)中斷
4.1.4多道程序設(shè)計(jì)
4.1.5調(diào)度機(jī)制
4.1.6高級(jí)、中級(jí)和低級(jí)調(diào)度
4.2處理機(jī)調(diào)度
4.2.1進(jìn)程調(diào)度方式
4.2.2調(diào)度算法
4.2.3調(diào)度時(shí)機(jī)
4.3實(shí)時(shí)調(diào)度
4.3.1實(shí)現(xiàn)實(shí)時(shí)調(diào)度的基本條件
4.3.2實(shí)時(shí)調(diào)度算法的分類
4.3.3實(shí)時(shí)調(diào)度算法
4.4多處理機(jī)調(diào)度
4.4.1多處理機(jī)系統(tǒng)的類型
4.4.2自調(diào)度
4.4.3組調(diào)度
4.5Linux系統(tǒng)進(jìn)程調(diào)度
4.5.1Linux時(shí)鐘運(yùn)作機(jī)制(時(shí)間基準(zhǔn))
4.5.2UNIX/Linux中的系統(tǒng)調(diào)用
4.5.3Linux調(diào)度程序
習(xí)題4
閱讀材料
第5章并發(fā)性——互斥、同步和通信
5.1并發(fā)的原理
5.1.1與時(shí)間有關(guān)的錯(cuò)誤
5.1.2互斥與同步的概念
5.1.3臨界區(qū)與進(jìn)程互斥
5.1.4硬件支持互斥的方法
5.2信號(hào)量機(jī)制
5.2.1信號(hào)量的概念
5.2.2信號(hào)量的應(yīng)用
5.2.3生產(chǎn)者消費(fèi)者問題信號(hào)量機(jī)制解法
5.2.4哲學(xué)家進(jìn)餐問題信號(hào)量機(jī)制解法
5.2.5讀者寫者問題解法
5.3管程機(jī)制
5.3.1管程的概念
5.3.2生產(chǎn)者消費(fèi)者問題管程機(jī)制解法
5.3.3哲學(xué)家進(jìn)餐問題管程機(jī)制解法
5.4進(jìn)程通信
5.4.1進(jìn)程通信的方式
5.4.2消息緩沖通信
5.4.3信箱通信
5.4.4共享文件通信
5.4.5消息傳遞系統(tǒng)的若干問題
習(xí)題5
閱讀材料
第6章并發(fā)性——死鎖
6.1死鎖的概念
6.2產(chǎn)生死鎖的條件和處理
6.2.1必要條件
6.2.2處理死鎖的基本方法
6.3死鎖的預(yù)防
6.3.1預(yù)先分配策略
6.3.2有序分配策略
6.4死鎖的避免
6.4.1系統(tǒng)安全狀態(tài)
6.4.2銀行家算法
6.5死鎖的檢測(cè)與解除
6.5.1死鎖的檢測(cè)
6.5.2死鎖的解除
6.6死鎖的綜合處理策略
習(xí)題6
閱讀材料
第7章內(nèi)存管理
7.1內(nèi)存管理的功能
7.1.1內(nèi)存分配
7.1.2地址變換
7.1.3存儲(chǔ)保護(hù)
7.1.4存儲(chǔ)共享
7.1.5存儲(chǔ)擴(kuò)充
7.2程序的鏈接和加載
7.2.1程序的鏈接
7.2.2程序的加載
7.3連續(xù)分配方式
7.3.1單一連續(xù)分配
7.3.2固定分區(qū)分配
7.3.3動(dòng)態(tài)分區(qū)分配
7.3.4可重定位分區(qū)分配
7.3.5交換和覆蓋
7.4基本分頁(yè)分配方式
7.4.1頁(yè)面與頁(yè)表
7.4.2地址變換機(jī)構(gòu)
7.4.3頁(yè)面大小
7.5基本分段分配方式
7.5.1段表
7.5.2地址變換機(jī)構(gòu)
7.5.3共享與保護(hù)
習(xí)題7
閱讀材料
第8章虛擬存儲(chǔ)管理
8.1虛擬存儲(chǔ)器
8.1.1虛擬存儲(chǔ)器的定義
8.1.2虛擬存儲(chǔ)器的特點(diǎn)
8.1.3虛擬存儲(chǔ)器技術(shù)需要解決的問題
8.2請(qǐng)求頁(yè)式分配
8.2.1請(qǐng)求分頁(yè)硬件支持
8.2.2內(nèi)存分配策略
8.2.3內(nèi)存分配方法
8.2.4缺頁(yè)處理
8.3頁(yè)面置換算法
8.3.1最優(yōu)頁(yè)面置換算法
8.3.2先進(jìn)先出置換算法
8.3.3最近最少使用置換算法
8.3.4用軟件模擬LRU算法
8.3.5時(shí)鐘算法
8.3.6改進(jìn)Clock算法
8.3.7工作集模型
8.4虛擬段式分配
8.4.1請(qǐng)求分段中的硬件支持
8.4.2地址變換機(jī)構(gòu)
8.4.3缺段中斷
8.5段頁(yè)式分配方式
8.5.1段頁(yè)式分配的原理
8.5.2段頁(yè)式分配的地址變換
8.5.3分段和分頁(yè)的結(jié)合: Intel Pentium
8.6Linux系統(tǒng)的存儲(chǔ)管理
8.6.1Linux的虛擬存儲(chǔ)空間
8.6.2Linux管理內(nèi)存空間的數(shù)據(jù)結(jié)構(gòu)
8.6.3Linux內(nèi)存區(qū)的分配、釋放和淘汰
習(xí)題8
閱讀材料
第9章設(shè)備管理
9.1I/O系統(tǒng)
9.1.1設(shè)備的類別
9.1.2設(shè)備標(biāo)識(shí)
9.1.3I/O系統(tǒng)的結(jié)構(gòu)
9.2I/O設(shè)備數(shù)據(jù)傳輸控制方式
9.2.1程序直接控制方式
9.2.2中斷控制方式
9.2.3DMA控制方式
9.2.4通道控制方式
9.3設(shè)備管理與功能
9.4設(shè)備分配
9.4.1設(shè)備分配中的數(shù)據(jù)結(jié)構(gòu)
9.4.2設(shè)備分配應(yīng)考慮的因素和分配技術(shù)
9.4.3設(shè)備分配算法
9.4.4SPOOLING系統(tǒng)
9.5緩沖技術(shù)
9.5.1緩沖的引入
9.5.2單緩沖
9.5.3雙緩沖
9.5.4循環(huán)緩沖
9.5.5緩沖池
9.6I/O軟件設(shè)計(jì)
9.6.1I/O軟件的設(shè)計(jì)目標(biāo)和原則
9.6.2I/O中斷處理程序
9.6.3設(shè)備驅(qū)動(dòng)程序
9.6.4與硬件無(wú)關(guān)的操作系統(tǒng)I/O軟件
9.6.5用戶空間的I/O軟件
9.7磁盤存儲(chǔ)器管理
9.7.1磁盤I/O
9.7.2磁盤調(diào)度算法
9.8RAID技術(shù)
9.8.1RAID技術(shù)的引入
9.8.2RAID分級(jí)
9.9Linux的設(shè)備管理
9.9.1Linux設(shè)備管理概述
9.9.2設(shè)備驅(qū)動(dòng)程序和內(nèi)核之間的接口
9.9.3字符設(shè)備
9.9.4塊設(shè)備
9.9.5網(wǎng)絡(luò)設(shè)備
習(xí)題9
閱讀材料
第10章文件管理
10.1文件系統(tǒng)的概念
10.1.1文件和文件系統(tǒng)
10.1.2文件分類
10.1.3文件操作
10.2文件的邏輯結(jié)構(gòu)
10.2.1文件邏輯結(jié)構(gòu)的類型
10.2.2順序文件
10.2.3索引文件
10.2.4索引順序文件
10.2.5直接文件和散列文件
10.3文件的物理結(jié)構(gòu)
10.3.1順序結(jié)構(gòu)
10.3.2鏈接結(jié)構(gòu)
10.3.3索引結(jié)構(gòu)
10.4文件的存取方法
10.4.1順序存取
10.4.2直接存取
10.4.3按鍵存取
10.5文件目錄
10.5.1文件控制塊與索引結(jié)點(diǎn)
10.5.2文件目錄與目錄文件
10.5.3目錄結(jié)構(gòu)
10.5.4目錄查詢技術(shù)
10.6文件存儲(chǔ)空間管理
10.6.1空閑表和空閑鏈表
10.6.2位示圖
10.6.3UNIX成組鏈接
10.7文件共享和保護(hù)
10.7.1文件共享的模式
10.7.2文件的保護(hù)
10.8Windows文件系統(tǒng)
10.8.1Windows磁盤管理和文件系統(tǒng)驅(qū)動(dòng)
10.8.2Windows文件系統(tǒng)格式
10.8.3NTFS文件系統(tǒng)的結(jié)構(gòu)
10.9Linux的文件系統(tǒng)
10.9.1ext2的文件系統(tǒng)
10.9.2虛擬文件系統(tǒng)
10.10分布式文件系統(tǒng)
10.10.1分布式文件系統(tǒng)的發(fā)展階段
10.10.2HDFS系統(tǒng)構(gòu)成
10.10.3HDFS文件的讀寫操作
10.10.4HDFS數(shù)據(jù)維護(hù)機(jī)制
習(xí)題10
閱讀材料
參考文獻(xiàn)