操作系統(tǒng)作為核心的系統(tǒng)軟件,負(fù)責(zé)控制和管理整個系統(tǒng)的資源并組織用戶高效協(xié)調(diào)地使用這些資源。本書是在《操作系統(tǒng)基礎(chǔ)(第3版)》的基礎(chǔ)上修訂而成的。與第3版相比,第4版在結(jié)構(gòu)、內(nèi)容上都做了調(diào)整、修改和增刪。
本書闡述了操作系統(tǒng)的基本工作原理以及設(shè)計方法,力求將現(xiàn)代操作系統(tǒng)的典型特征,即多線程、微內(nèi)核、分布式系統(tǒng)、客戶/服務(wù)器模型與經(jīng)典的操作系統(tǒng)原理緊密結(jié)合。
全書共13章,主要介紹了操作系統(tǒng)的基本概念和運行環(huán)境、進(jìn)程和線程、處理器調(diào)度與死鎖、存儲管理、設(shè)備管理、文件管理、分布式系統(tǒng),最后介紹了Windows和Linux操作系統(tǒng)的結(jié)構(gòu)和實現(xiàn)。每章后面都有本章小結(jié)及難度適宜的習(xí)題,便于讀者自學(xué)或鞏固所學(xué)的知識。
本書內(nèi)容豐富,結(jié)構(gòu)清晰,突出基礎(chǔ),注重應(yīng)用,強調(diào)理論與實踐的結(jié)合,適合作為高等院校計算機(jī)
首先要衷心感謝廣大讀者的厚愛和支持,本書出版二十幾年來,已印刷二十多次,發(fā)行數(shù)十萬冊。廣大讀者把他們積累的經(jīng)驗和體會無私地貢獻(xiàn)給我們,為本書的改進(jìn)和提高做出了貢獻(xiàn),在此向廣大讀者表示深深的敬意和感謝。
此次修訂出版的第4版以經(jīng)典操作系統(tǒng)基本原理和概念為框架和基線,以密切反映現(xiàn)代操作系統(tǒng)技術(shù)的新發(fā)展和新特征為重點。因為幾十年來,操作系統(tǒng)經(jīng)歷著日新月異的變化,盡管現(xiàn)代操作系統(tǒng)以多線程、微內(nèi)核、SMP多處理器系統(tǒng)、客戶/服務(wù)器模式和分布式、網(wǎng)絡(luò)系統(tǒng)為特征,但操作系統(tǒng)的基本原理和概念不但沒有什么變化,而且更趨成熟,它依然是操作系統(tǒng)的基本骨架。在此基礎(chǔ)上,多線程機(jī)制、微內(nèi)核與客戶/服務(wù)器模式、分布式系統(tǒng)等仍是當(dāng)前發(fā)展的熱點,本書通過在專門章節(jié)中加以研討,或者將其融合在全書之中加以介紹。
本書目錄中畫有*號部分,授課教師可以根據(jù)教學(xué)計劃進(jìn)行變動,并鼓勵讀者通過自學(xué)(課內(nèi)學(xué)時有限)來掌握它。本書內(nèi)容闡述深入淺出,適合自學(xué)。
本書以現(xiàn)代操作系統(tǒng)的典型系統(tǒng)Windows NT、UNIX和Linux系統(tǒng)作為全書的范例,并將近代UNIX系統(tǒng)(如Solaris等)的先進(jìn)技術(shù)和機(jī)制分散到各章中作為該章的典型范例來使用,以收到與全書內(nèi)容緊密結(jié)合的效果,便于讀者領(lǐng)會和理解該章所述的內(nèi)容。Windows NT和Linux作為一個系統(tǒng)范例自成一章,便于讀者從系統(tǒng)整體角度來認(rèn)識和理解一個操作系統(tǒng)。建議讀者在閱讀各章時也參考Windows NT和Linux的相關(guān)內(nèi)容。
本書第9章、第10章、第12章由屠立德老師編寫,第5章、第7章、第8章、第11章由金雪云老師編寫,其他部分由王丹老師編寫。屠立德教授負(fù)責(zé)全書的審閱、校核和定稿。由于時間倉促以及作者水平所限,錯誤和不妥之處在所難免,懇請讀者批評指正。
作者2014年6月
第1章引論
1.1計算機(jī)系統(tǒng)概述
1.1.1計算機(jī)的硬件組織
1.1.2軟件的層次與虛擬機(jī)的概念
1.2操作系統(tǒng)的形成和發(fā)展
1.2.1什么是操作系統(tǒng)
1.2.2操作系統(tǒng)的形成和發(fā)展
1.3多道程序設(shè)計的概念
1.3.1多道程序設(shè)計的引入
1.3.2多道程序設(shè)計的概念
1.4操作系統(tǒng)的功能和特性
1.4.1操作系統(tǒng)的功能
1.4.2操作系統(tǒng)的特性
1.5操作系統(tǒng)的類型
1.5.1多道批處理操作系統(tǒng)
1.5.2分時操作系統(tǒng)
1.5.3實時系統(tǒng)
1.5.4網(wǎng)絡(luò)操作系統(tǒng)
1.5.5多處理操作系統(tǒng)
1.5.6分布式操作系統(tǒng)
1.5.7嵌入式操作系統(tǒng)
1.5.8多核系統(tǒng)
1.6操作系統(tǒng)的設(shè)計
1.6.1設(shè)計的目標(biāo)和原則
1.6.2操作系統(tǒng)設(shè)計
1.7操作系統(tǒng)的結(jié)構(gòu)
1.7.1模塊接口法
1.7.2層次結(jié)構(gòu)設(shè)計法
1.7.3微內(nèi)核結(jié)構(gòu)
1.7.4微內(nèi)核的實現(xiàn)
本章小結(jié)
習(xí)題
第2章操作系統(tǒng)的運行環(huán)境
2.1硬件環(huán)境
2.1.1中央處理器
2.1.2主存儲器
2.1.3緩沖技術(shù)
2.1.4中斷技術(shù)
2.1.5時鐘、時鐘隊列
2.2操作系統(tǒng)與其他系統(tǒng)軟件的關(guān)系
2.2.1作業(yè)、作業(yè)步、進(jìn)程的關(guān)系
2.2.2重定位的概念
2.2.3絕對裝入程序與相對裝入程序
2.3操作系統(tǒng)與用戶的接口
2.3.1作業(yè)控制語言
2.3.2聯(lián)機(jī)作業(yè)控制
2.4固件——微程序設(shè)計概念*
2.4.1微程序設(shè)計的概念
2.4.2微程序設(shè)計與操作系統(tǒng)
本章小結(jié)
習(xí)題
第3章進(jìn)程管理
3.1進(jìn)程的概念
3.1.1進(jìn)程的引入
3.1.2進(jìn)程的定義
3.2進(jìn)程的狀態(tài)
3.2.1進(jìn)程的狀態(tài)及其變化
3.2.2進(jìn)程的掛起和解除掛起的狀態(tài)
3.3進(jìn)程的描述和管理
3.3.1進(jìn)程的描述
3.3.2進(jìn)程管理
3.4進(jìn)程控制
3.4.1進(jìn)程的控制原語
3.4.2操作系統(tǒng)與進(jìn)程控制的執(zhí)行
3.5UNIX SVR4的進(jìn)程管理*
本章小結(jié)
習(xí)題
第4章多線程
4.1線程的概念
4.1.1線程的引入
4.1.2線程的概念
4.2線程的狀態(tài)和線程管理
4.2.1線程的狀態(tài)
4.2.2線程的描述
4.2.3線程的管理
4.3多線程的實現(xiàn)
4.3.1概述
4.3.2用戶級線程
4.3.3內(nèi)核級線程
4.3.4KLT和ULT結(jié)合的方法
4.3.5線程庫
4.4Solaris操作系統(tǒng)的線程機(jī)制*
4.4.1Solaris的多線程結(jié)構(gòu)
4.4.2輕質(zhì)進(jìn)程
4.4.3內(nèi)核線程
4.4.4用戶線程
4.4.5線程的執(zhí)行
4.4.6內(nèi)核中斷線程
本章小結(jié)
習(xí)題
第5章互斥與同步
5.1概述
5.2臨界區(qū)
5.2.1臨界區(qū)的提出
5.2.2臨界區(qū)的互斥要求
5.3互斥
5.3.1互斥的軟件解決方法
5.3.2互斥的硬件解決方法
5.4信號量
5.4.1信號量
5.4.2信號量及同步原語
5.4.3同步原語的不可分割性
5.4.4用信號量實現(xiàn)進(jìn)程間互斥
5.4.5生產(chǎn)者和消費者問題
5.4.6讀者和寫者問題
5.5管程
5.5.1管程的定義
5.5.2用管程實現(xiàn)同步
5.6進(jìn)程間的通信
5.6.1消息通信
5.6.2間接通信模式
5.6.3其他消息通信模式
5.7UNIX的進(jìn)程同步和通信
5.7.1管道
5.7.2消息
5.7.3共享主存
5.7.4信號量
5.7.5信號或軟中斷
本章小結(jié)
習(xí)題
第6章死鎖
6.1死鎖問題的提出
6.2死鎖的必要條件
6.2.1資源的概念
6.2.2死鎖的必要條件
6.3死鎖的預(yù)防
6.3.1預(yù)先靜態(tài)分配法
6.3.2有序資源使用法
6.4死鎖的避免和銀行家算法
6.4.1單資源的銀行家算法
6.4.2多資源的銀行家算法
6.5死鎖檢測與恢復(fù)
6.5.1死鎖的檢測
6.5.2死鎖的恢復(fù)
6.6資源分配圖
6.6.1資源分配圖
6.6.2利用資源分配圖進(jìn)行死鎖分析
6.6.3資源分配圖化簡法
本章小結(jié)
習(xí)題
第7章實存儲器管理技術(shù)
7.1引言
7.1.1主存儲器的物理組織
7.1.2主存儲器的管理功能
7.2固定分區(qū)
7.3可變分區(qū)多道管理技術(shù)
7.3.1可變分區(qū)存儲管理的概念
7.3.2存儲分配算法
7.3.3存儲器的壓縮和程序浮動
7.3.4可變分區(qū)多道管理的地址變換
7.4簡單分頁
7.5簡單分段
7.6內(nèi)核主存管理
7.6.1內(nèi)核主存管理概述
7.6.2二次冪空閑表分配器
7.6.3伙伴系統(tǒng)
本章小結(jié)
習(xí)題
第8章虛擬存儲管理
8.1虛擬存儲系統(tǒng)的基本概念
8.2請求頁式存儲管理
8.2.1地址轉(zhuǎn)換
8.2.2硬件支持
8.3請求分段存儲管理
8.3.1請求分段概述
8.3.2分段的實現(xiàn)
8.4段頁式存儲管理
8.4.1請求段頁式存儲管理的基本概念
8.4.2請求段頁式存儲管理的地址轉(zhuǎn)換
8.4.3段頁式存儲管理算法
8.4.4請求段頁式存儲管理的優(yōu)缺點
8.5頁面置換算法
8.5.1頁面訪問失效及處理
8.5.2頁面置換算法
8.5.3交換區(qū)
8.6頁框分配策略
8.6.1物理主存
8.6.2空閑頁面鏈表
8.6.3頁架分配中的有關(guān)策略
8.6.4分頁環(huán)境中程序的行為特性
8.7UNIX SVR4的存儲管理
本章小結(jié)
習(xí)題
第9章設(shè)備管理
9.1概述
9.2I/O子系統(tǒng)的層次模型
9.2.1I/O子系統(tǒng)的設(shè)計目標(biāo)
9.2.2I/O子系統(tǒng)的層次模型
9.3I/O硬件組成
9.3.1設(shè)備和設(shè)備控制器
9.3.2直接存儲器訪問
9.3.3通道方式與輸入輸出處理器
9.4設(shè)備驅(qū)動程序
9.4.1設(shè)備和驅(qū)動程序分類
9.4.2設(shè)備開關(guān)表
9.4.3設(shè)備驅(qū)動程序框架
9.5I/O子系統(tǒng)
9.5.1設(shè)備命名
9.5.2輸入輸出緩沖區(qū)
9.5.3I/O子系統(tǒng)獨立于設(shè)備的工作
9.6流*
9.6.1流的概念
9.6.2消息和隊列
9.6.3流I/O
9.7磁盤調(diào)度
9.7.1磁盤的硬件特性
9.7.2磁盤調(diào)度算法
9.8虛擬設(shè)備和SPOOLing系統(tǒng)
9.9RAID技術(shù)*
本章小結(jié)
習(xí)題
第10章文件系統(tǒng)
10.1文件
10.1.1文件的命名
10.1.2文件的結(jié)構(gòu)
10.1.3文件的類型
10.1.4文件的屬性
10.1.5文件的操作
10.2目錄
10.2.1目錄內(nèi)容
10.2.2文件目錄的結(jié)構(gòu)
10.2.3路徑名
10.2.4符號鏈接
10.2.5目錄操作
10.3文件系統(tǒng)的實現(xiàn)
10.3.1文件空間的分配和管理
10.3.2UNIX系統(tǒng)的目錄實現(xiàn)
10.3.3磁盤空間管理
10.3.4文件系統(tǒng)在主存的數(shù)據(jù)結(jié)構(gòu)和打開操作
10.3.5文件系統(tǒng)掛載
10.4安全性和保護(hù)
10.4.1用戶確認(rèn)技術(shù)
10.4.2保護(hù)機(jī)制——數(shù)據(jù)安全性
10.4.3其他
10.4.4文件的轉(zhuǎn)儲和恢復(fù)
本章小結(jié)
習(xí)題
第11章分布式系統(tǒng)*
11.1概述
11.1.1什么是分布式系統(tǒng)
11.1.2分布式系統(tǒng)的優(yōu)點
11.2進(jìn)程通信
11.2.1進(jìn)程通信的概念
11.2.2TCP/IP通信協(xié)議
11.2.3分布式環(huán)境的客戶/服務(wù)器模式
11.2.4分布式進(jìn)程通信
11.3分布式文件系統(tǒng)
11.3.1分布式文件系統(tǒng)概述
11.3.2分布式文件系統(tǒng)的組成
11.3.3分布式文件系統(tǒng)的體系結(jié)構(gòu)
11.3.4客戶機(jī)高速緩存和一致性
11.4分布式系統(tǒng)中的互斥與死鎖
11.4.1邏輯鐘和邏輯時
11.4.2時間戳算法(Lamport算法)
11.4.3令牌傳送算法
11.5進(jìn)程遷移
11.5.1進(jìn)程遷移的原因
11.5.2進(jìn)程遷移機(jī)制
本章小結(jié)
習(xí)題
第12章Windows NT操作系統(tǒng)*
12.1Windows NT操作系統(tǒng)概述
12.2Windows NT的系統(tǒng)模型
12.3Windows NT的基元成分
12.3.1對象
12.3.2進(jìn)程
12.3.3線程
12.3.4進(jìn)程管理程序
12.4Windows NT的線程狀態(tài)及調(diào)度
12.4.1線程狀態(tài)轉(zhuǎn)換
12.4.2內(nèi)核調(diào)度程序
12.4.3進(jìn)程和線程的優(yōu)先級
12.5Windows NT的同步對象
12.5.1線程同步概述
12.5.2用Windows NT對象同步
12.6虛擬存儲管理
12.6.1進(jìn)程的虛擬地址空間
12.6.2虛擬分頁
12.6.3頁面調(diào)度策略和工作集
12.6.4頁架狀態(tài)和頁架數(shù)據(jù)結(jié)構(gòu)
12.6.5主存映射文件和視圖
12.7輸入輸出系統(tǒng)
12.7.1輸入輸出系統(tǒng)的結(jié)構(gòu)
12.7.2統(tǒng)一的驅(qū)動程序模型
12.7.3異步I/O操作和I/O請求處理過程
12.7.4映像文件I/O
12.8Windows NT的內(nèi)裝網(wǎng)絡(luò)
12.8.1Windows NT內(nèi)裝網(wǎng)絡(luò)的特色
12.8.2Windows NT內(nèi)裝網(wǎng)絡(luò)的體系結(jié)構(gòu)
12.9對象管理程序
12.10本地過程調(diào)用
12.11Windows NT的安全性
12.11.1Windows NT的安全性
12.11.2存取令牌和安全描述體
本章小結(jié)
習(xí)題
第13章Linux操作系統(tǒng)*
13.1Linux操作系統(tǒng)概述
13.1.1Linux的誕生和發(fā)展
13.1.2Linux的版本
13.1.3Linux內(nèi)核的組成
13.1.4Linux的特點
13.2Linux進(jìn)程管理
13.2.1Linux進(jìn)程概述
13.2.2Linux進(jìn)程的狀態(tài)
13.2.3Linux進(jìn)程的標(biāo)識
13.2.4Linux進(jìn)程的調(diào)度
13.2.5Linux進(jìn)程的創(chuàng)建和撤銷
13.3Linux的存儲管理
13.3.1Linux的虛擬存儲空間
13.3.2Linux的地址映射
13.3.3Linux物理內(nèi)存的管理
13.3.4頁面分配算法
13.3.5缺頁中斷
13.3.6緩存和刷新機(jī)制
13.4Linux文件管理
13.4.1Linux虛擬文件系統(tǒng)概述
13.4.2VFS超級塊
13.4.3VFS索引節(jié)點對象
13.4.4目錄項對象
13.4.5文件對象
13.5EXT文件系統(tǒng)
13.5.1EXT2/EXT3/EXT4文件系統(tǒng)的特點
13.5.2EXT2文件系統(tǒng)的磁盤結(jié)構(gòu)
13.5.3EXT2超級塊
13.5.4組描述符
13.5.5塊位圖
13.5.6EXT2文件系統(tǒng)inode結(jié)構(gòu)
13.5.7Linux文件系統(tǒng)的控制
13.6Linux設(shè)備管理
13.6.1Linux設(shè)備管理概述
13.6.2Linux I/O子系統(tǒng)的設(shè)計
13.6.3Linux的字符設(shè)備管理
13.6.4Linux的塊設(shè)備管理
13.6.5緩沖區(qū)與buffer結(jié)構(gòu)
本章小結(jié)
習(xí)題
參考文獻(xiàn)