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