操作系統(tǒng)作為核心的系統(tǒng)軟件,負(fù)責(zé)控制和管理整個(gè)系統(tǒng)的資源并組織用戶高效協(xié)調(diào)地使用這些資源。本書是在《操作系統(tǒng)基礎(chǔ)(第3版)》的基礎(chǔ)上修訂而成的。與第3版相比,第4版在結(jié)構(gòu)、內(nèi)容上都做了調(diào)整、修改和增刪。
本書闡述了操作系統(tǒng)的基本工作原理以及設(shè)計(jì)方法,力求將現(xiàn)代操作系統(tǒng)的典型特征,即多線程、微內(nèi)核、分布式系統(tǒng)、客戶/服務(wù)器模型與經(jīng)典的操作系統(tǒng)原理緊密結(jié)合。
全書共13章,主要介紹了操作系統(tǒng)的基本概念和運(yùn)行環(huán)境、進(jìn)程和線程、處理器調(diào)度與死鎖、存儲(chǔ)管理、設(shè)備管理、文件管理、分布式系統(tǒng),最后介紹了Windows和Linux操作系統(tǒng)的結(jié)構(gòu)和實(shí)現(xiàn)。每章后面都有本章小結(jié)及難度適宜的習(xí)題,便于讀者自學(xué)或鞏固所學(xué)的知識(shí)。
本書內(nèi)容豐富,結(jié)構(gòu)清晰,突出基礎(chǔ),注重應(yīng)用,強(qiáng)調(diào)理論與實(shí)踐的結(jié)合,適合作為高等院校計(jì)算機(jī)
首先要衷心感謝廣大讀者的厚愛和支持,本書出版二十幾年來,已印刷二十多次,發(fā)行數(shù)十萬冊(cè)。廣大讀者把他們積累的經(jīng)驗(yàn)和體會(huì)無私地貢獻(xiàn)給我們,為本書的改進(jìn)和提高做出了貢獻(xiàn),在此向廣大讀者表示深深的敬意和感謝。
此次修訂出版的第4版以經(jīng)典操作系統(tǒng)基本原理和概念為框架和基線,以密切反映現(xiàn)代操作系統(tǒng)技術(shù)的新發(fā)展和新特征為重點(diǎn)。因?yàn)閹资陙,操作系統(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ā)展的熱點(diǎn),本書通過在專門章節(jié)中加以研討,或者將其融合在全書之中加以介紹。
本書目錄中畫有*號(hào)部分,授課教師可以根據(jù)教學(xué)計(jì)劃進(jìn)行變動(dòng),并鼓勵(lì)讀者通過自學(xué)(課內(nèi)學(xué)時(shí)有限)來掌握它。本書內(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)會(huì)和理解該章所述的內(nèi)容。Windows NT和Linux作為一個(gè)系統(tǒng)范例自成一章,便于讀者從系統(tǒng)整體角度來認(rèn)識(shí)和理解一個(gè)操作系統(tǒng)。建議讀者在閱讀各章時(shí)也參考Windows NT和Linux的相關(guān)內(nèi)容。
本書第9章、第10章、第12章由屠立德老師編寫,第5章、第7章、第8章、第11章由金雪云老師編寫,其他部分由王丹老師編寫。屠立德教授負(fù)責(zé)全書的審閱、校核和定稿。由于時(shí)間倉促以及作者水平所限,錯(cuò)誤和不妥之處在所難免,懇請(qǐng)讀者批評(píng)指正。
作者2014年6月
第1章引論
1.1計(jì)算機(jī)系統(tǒng)概述
1.1.1計(jì)算機(jī)的硬件組織
1.1.2軟件的層次與虛擬機(jī)的概念
1.2操作系統(tǒng)的形成和發(fā)展
1.2.1什么是操作系統(tǒng)
1.2.2操作系統(tǒng)的形成和發(fā)展
1.3多道程序設(shè)計(jì)的概念
1.3.1多道程序設(shè)計(jì)的引入
1.3.2多道程序設(shè)計(jì)的概念
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分時(shí)操作系統(tǒng)
1.5.3實(shí)時(shí)系統(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è)計(jì)
1.6.1設(shè)計(jì)的目標(biāo)和原則
1.6.2操作系統(tǒng)設(shè)計(jì)
1.7操作系統(tǒng)的結(jié)構(gòu)
1.7.1模塊接口法
1.7.2層次結(jié)構(gòu)設(shè)計(jì)法
1.7.3微內(nèi)核結(jié)構(gòu)
1.7.4微內(nèi)核的實(shí)現(xiàn)
本章小結(jié)
習(xí)題
第2章操作系統(tǒng)的運(yùn)行環(huán)境
2.1硬件環(huán)境
2.1.1中央處理器
2.1.2主存儲(chǔ)器
2.1.3緩沖技術(shù)
2.1.4中斷技術(shù)
2.1.5時(shí)鐘、時(shí)鐘隊(duì)列
2.2操作系統(tǒng)與其他系統(tǒng)軟件的關(guān)系
2.2.1作業(yè)、作業(yè)步、進(jìn)程的關(guān)系
2.2.2重定位的概念
2.2.3絕對(duì)裝入程序與相對(duì)裝入程序
2.3操作系統(tǒng)與用戶的接口
2.3.1作業(yè)控制語言
2.3.2聯(lián)機(jī)作業(yè)控制
2.4固件——微程序設(shè)計(jì)概念*
2.4.1微程序設(shè)計(jì)的概念
2.4.2微程序設(shè)計(jì)與操作系統(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多線程的實(shí)現(xiàn)
4.3.1概述
4.3.2用戶級(jí)線程
4.3.3內(nèi)核級(jí)線程
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信號(hào)量
5.4.1信號(hào)量
5.4.2信號(hào)量及同步原語
5.4.3同步原語的不可分割性
5.4.4用信號(hào)量實(shí)現(xiàn)進(jìn)程間互斥
5.4.5生產(chǎn)者和消費(fèi)者問題
5.4.6讀者和寫者問題
5.5管程
5.5.1管程的定義
5.5.2用管程實(shí)現(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信號(hào)量
5.7.5信號(hào)或軟中斷
本章小結(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死鎖檢測(cè)與恢復(fù)
6.5.1死鎖的檢測(cè)
6.5.2死鎖的恢復(fù)
6.6資源分配圖
6.6.1資源分配圖
6.6.2利用資源分配圖進(jìn)行死鎖分析
6.6.3資源分配圖化簡(jiǎn)法
本章小結(jié)
習(xí)題
第7章實(shí)存儲(chǔ)器管理技術(shù)
7.1引言
7.1.1主存儲(chǔ)器的物理組織
7.1.2主存儲(chǔ)器的管理功能
7.2固定分區(qū)
7.3可變分區(qū)多道管理技術(shù)
7.3.1可變分區(qū)存儲(chǔ)管理的概念
7.3.2存儲(chǔ)分配算法
7.3.3存儲(chǔ)器的壓縮和程序浮動(dòng)
7.3.4可變分區(qū)多道管理的地址變換
7.4簡(jiǎn)單分頁
7.5簡(jiǎn)單分段
7.6內(nèi)核主存管理
7.6.1內(nèi)核主存管理概述
7.6.2二次冪空閑表分配器
7.6.3伙伴系統(tǒng)
本章小結(jié)
習(xí)題
第8章虛擬存儲(chǔ)管理
8.1虛擬存儲(chǔ)系統(tǒng)的基本概念
8.2請(qǐng)求頁式存儲(chǔ)管理
8.2.1地址轉(zhuǎn)換
8.2.2硬件支持
8.3請(qǐng)求分段存儲(chǔ)管理
8.3.1請(qǐng)求分段概述
8.3.2分段的實(shí)現(xiàn)
8.4段頁式存儲(chǔ)管理
8.4.1請(qǐng)求段頁式存儲(chǔ)管理的基本概念
8.4.2請(qǐng)求段頁式存儲(chǔ)管理的地址轉(zhuǎn)換
8.4.3段頁式存儲(chǔ)管理算法
8.4.4請(qǐng)求段頁式存儲(chǔ)管理的優(yōu)缺點(diǎn)
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的存儲(chǔ)管理
本章小結(jié)
習(xí)題
第9章設(shè)備管理
9.1概述
9.2I/O子系統(tǒng)的層次模型
9.2.1I/O子系統(tǒng)的設(shè)計(jì)目標(biāo)
9.2.2I/O子系統(tǒng)的層次模型
9.3I/O硬件組成
9.3.1設(shè)備和設(shè)備控制器
9.3.2直接存儲(chǔ)器訪問
9.3.3通道方式與輸入輸出處理器
9.4設(shè)備驅(qū)動(dòng)程序
9.4.1設(shè)備和驅(qū)動(dòng)程序分類
9.4.2設(shè)備開關(guān)表
9.4.3設(shè)備驅(qū)動(dòng)程序框架
9.5I/O子系統(tǒng)
9.5.1設(shè)備命名
9.5.2輸入輸出緩沖區(qū)
9.5.3I/O子系統(tǒng)獨(dú)立于設(shè)備的工作
9.6流*
9.6.1流的概念
9.6.2消息和隊(duì)列
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符號(hào)鏈接
10.2.5目錄操作
10.3文件系統(tǒng)的實(shí)現(xiàn)
10.3.1文件空間的分配和管理
10.3.2UNIX系統(tǒng)的目錄實(shí)現(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)儲(chǔ)和恢復(fù)
本章小結(jié)
習(xí)題
第11章分布式系統(tǒng)*
11.1概述
11.1.1什么是分布式系統(tǒng)
11.1.2分布式系統(tǒng)的優(yōu)點(diǎn)
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邏輯鐘和邏輯時(shí)
11.4.2時(shí)間戳算法(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對(duì)象
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)先級(jí)
12.5Windows NT的同步對(duì)象
12.5.1線程同步概述
12.5.2用Windows NT對(duì)象同步
12.6虛擬存儲(chǔ)管理
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ū)動(dòng)程序模型
12.7.3異步I/O操作和I/O請(qǐng)求處理過程
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對(duì)象管理程序
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的特點(diǎn)
13.2Linux進(jìn)程管理
13.2.1Linux進(jìn)程概述
13.2.2Linux進(jìn)程的狀態(tài)
13.2.3Linux進(jìn)程的標(biāo)識(shí)
13.2.4Linux進(jìn)程的調(diào)度
13.2.5Linux進(jìn)程的創(chuàng)建和撤銷
13.3Linux的存儲(chǔ)管理
13.3.1Linux的虛擬存儲(chǔ)空間
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超級(jí)塊
13.4.3VFS索引節(jié)點(diǎn)對(duì)象
13.4.4目錄項(xiàng)對(duì)象
13.4.5文件對(duì)象
13.5EXT文件系統(tǒng)
13.5.1EXT2/EXT3/EXT4文件系統(tǒng)的特點(diǎn)
13.5.2EXT2文件系統(tǒng)的磁盤結(jié)構(gòu)
13.5.3EXT2超級(jí)塊
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è)計(jì)
13.6.3Linux的字符設(shè)備管理
13.6.4Linux的塊設(shè)備管理
13.6.5緩沖區(qū)與buffer結(jié)構(gòu)
本章小結(jié)
習(xí)題
參考文獻(xiàn)