操作系統是計算機系統的核心系統軟件,負責控制和管理整個系統,使之協調工作。《操作系統:精髓與設計原理(原書第6版)》不僅全面地講述了操作系統的基本概念、原理和方法,還清楚地展現了當代操作系統的本質和特點。全書分為八個部分,由淺入深地介紹了計算機系統、操作系統、進程描述和控制、線程、微內核、并發性、內存管理、虛擬內存、單處理器調度、多處理器和實時調度、I/O管理和磁盤調度、文件管理、嵌入式操作系統、計算機安全技術以及分布式操作系統等內容。
《操作系統:精髓與設計原理(原書第6版)》內容豐富,具有很強的實用價值,適合作為高等院校計算機及相關專業本科生的操作系統課程教材,也可供專業技術人員參考。
《操作系統:精髓與設計原理(原書第6版)》是計算機界巨擘William Stallings的經典著作之一,其第4版曾獲得美國計算機科學與工程類大獎,得到了全球計算機教育界和工程技術人員的好評。書中不僅全面地講述了操作系統的基本概念、原理和方法,而且還以當代最流行的操作系統為例,全面清楚地展現了當代操作系統的本質和特點。作者針對近幾年操作系統領域的最新變化,對操作系統的設計原理進行深入的闡述,同時將其對操作系統整個領域全面而深入的理解呈現給讀者。 《操作系統:精髓與設計原理(原書第6版)》特色 ·選擇WirldowsVista、LJNIX和Linux三個操作系統作為示例,以幫助讀者熟悉當代操作系統的設計原理和實現問題。 ·新增嵌入式操作系統一章,討論了嵌入式操作系統的基本特點,并給出了兩個實例系統:TinyOS和eCos。 ·在第5版的基礎上擴展了計算機安全的相關內容,包括計算機安全威脅和計算機安全技術。 ·擴展和更新了并發的相關內容,并增加了有關游戲軟件中多處理器調度設計問題的實例。 ·補充動畫演示、模擬項目和編程項目,便于培養學生的動手實踐能力。 ·改進了插圖,增加大量新的“現場測試”(field-tested)型家庭作業。 ·調整和擴充了章末的練習題,有助于讀者深入理解操作系統的精髓。
目標本書是一本關于操作系統的概念、結構和機制的教材,其目的是盡可能清楚和全面地展現當代操作系統的本質和特點。這是一項具有挑戰性的任務。首先,需要為各種各樣的計算機系統設計操作系統,包括單用戶工作站和個人計算機、中等規模的共享系統、大型計算機和超級計算機以及諸如實時系統之類的專門機器。多樣性不僅表現在機器的容量和速度上,而且表現在具體應用和系統支持的需求上。其次,計算機系統正以日新月異的速度發展變化,操作系統設計中的許多重要領域都是新近開始研究的,而關于這些領域以及其他新領域的研究工作仍然在繼續著。盡管存在著多樣性和變化快等問題,一些基本概念仍然貫穿始終。當然,這些概念的應用依賴于當前的技術狀況和特定的應用需求。
本書的目的是對操作系統設計的基本原理提供全面的討論,并且與當代流行的設計問題以及當前操作系統的發展方向聯系起來。
示例系統本書試圖使讀者熟悉當代操作系統的設計原理和實現問題,因此單純講述概念和理論是遠遠不夠的。為了說明這些概念,同時將它們與真實世界中不得不做出的設計選擇相聯系,本書選擇了三個操作系統作為示例:WindowsVista:用于個人計算機、工作站和服務器的多任務操作系統。它融合了很多操作系統發展的最新技術,此外,Windows是最早采用面向對象原理設計的重要的商業操作系統之一。本書涵蓋了在Windows最新版本Vista中所采用的技術。UNIX:最初是為小型計算機而設計的多用戶操作系統,但后來廣泛用于從微機到超級計算機的各種機器中。本書包含若干版本的UNIX。FreeBSD結合了很多反映當代水平的功能,是一款得到廣泛應用的操作系統。
Solaris是一款應用廣泛的商業版UNIX系統。Linux:一款目前非常普及且源碼開放的UNIX版本。選擇這些系統是由于它們的相關性和代表性。關于這些示例系統的討論貫穿全書,而不是集中在某一章或附錄部分。因此,在討論并發性的過程中,將描述每個示例系統的并發機制,并探究各個設計選擇的動機。通過這種方法,可以利用真實的例子立即加深對某一特定章節中設計概念的理解。
斯托林斯(William Stallings),擁有美國麻省理工學院計算機科學博士學位,現任教于澳大利亞新南威爾士大學國防學院(堪培拉)信息技術與電子工程系。他是世界知名的計算機學者和暢銷教材作者,已經撰寫了17部著作,出版了40多本書籍,內容涉及計算機安全、計算機網絡和計算機體系結構等方面,堪稱計算機界的全才。他曾九次榮獲美國“教材和學術專著作者協會”頒發的“年度最佳計算機科學教材”獎。
出版者的話
譯者序
前言
第0章 讀者指南
0.1 本書概述
0.2 讀者和教師的學習路線圖
0.3 Internet和Web資源
第一部分 背景
第1章 計算機系統概述
1.1 基本構成
1.2 處理器寄存器
1.2.1 用戶可見寄存器
1.2.2 控制和狀態寄存器
1.3 指令的執行
1.3.1 取指令和執行指令
1.3.2 I/0函數
1.4 扣斷
1.4.1 中斷和指令周期
1.4.2 中斷處理
1.4.3 多個中斷
1.4.4 多道程序設計
1.5 存儲器的層次結構
1.6 高速緩存
1.6.1 動機
1.6.2 高速緩存原理
1.6.3 高速緩存設計
1.7 I/O通信技術
1.7.1 可編程I/O
1.7.2 中斷驅動I/O
1.7.3 直接內存存取
1.8 推薦讀物和網站
1.9 關鍵術語、復習題和習題
附錄1 A兩級存儲器的性能特征
附錄1 B過程控制
第2章 操作系統概述
2.1 操作系統的目標和功能
2.1.1 作為用戶/計算機接口的操作系統
2.1.2 作為資源管理器的操作系統
2.1.3 操作系統的易擴展性
2.2 操作系統的發展
2.2.1 串行處理
2.2.2 簡單批處理系統
2.2.3 多道程序設計批處理系統
2.2.4 分時系統
2.3 主要的成就
2.3.1 進程
2.3.2 內存管理
2.3.3 信息保護和安全
2.3.4 調度和資源管理
2.3.5 系統結構
2.4 現代操作系統的特征
2.5 微軟的Windows概述
2.5.1 歷史
2.5.2 單用戶多任務
2.5.3 體系結構
2.5.4 客戶,服務器模型
2.5.5 線程和SMP
2.5.6 Windows對象
2.6 傳統的UNIX系統
2.6.1 歷史
2.6.2 描述
2.7 現代UNIX系統
2.7.1 系統V版本4(SVR4)
2.7.2 BSD
2.7.3 Solaris10
2.8 Linux操作系統
2.8.1 歷史
2.8.2 模塊結構
2.8.3 內核組件
2.9 推薦讀物和網站
2.10 關鍵術語、復習題和習題
第二部分 進程
第3章 進程描述和控制
3.1 什么是進程
3.1.1 背景
3.1.2 進程和進程控制塊
3.2 進程狀態
3.2.1 兩狀態進程模型
3.2.2 進程的創建和終止
3.2 -3五狀態模型
3.2.4 被掛起的進程
3.3 進程描述
3.3.1 操作系統的控制結構
3.3.2 進程控制結構
3.4.進程控制
3.4.1 執行模式
3.4.2 進程創建
3.4.3 進程切換
3.5 操作系統的執行
3.5.1 無進程的內核
3.5.2 在用戶進程中執行
3.5.3 基于進程的操作系統
3.6 安全問題
3.6.1 系統訪問威脅
3.6.2 對抗措施
3.7 UNIXSVR4進程管理
3.7.1 進程狀態
3.7.2 進程描述
3.7.3 進程控制
3.8 小結
3.9 推薦讀物
3.10 關鍵術語、復習題和習題
編程項目1:開發一個shell程序
第4章 線程、對稱多處理(SMP)和微內核
4.1 進程和線程
4.1.1 多線程
4.1.2 線程功能特性
4.1.3例子:Adobe Page Maker
4.1.4 用戶級和內核級線程
4.1.5 其他方案
4.2 對稱多處理
4.2.1 SMP體系結構
4.2.2 SMP系統的組織結構
4.2.3 多處理器操作系統的設計思考
4.3 微內核
4.3.1 微內核體系結構
4.3.2 微內核組織結構的優點
4.3.3 微內核性能
4.3.4 微內核設計
4.4 Windows線程和SMP管理
4.4.1 進程對象和線程對象
4.4.2 多線程
4.4 -3線程狀態
4.4.4 X寸操作系統子系統的支持
4.4.5 對稱多處理的支持
4.5 Solaris的線程和SMP管理
4.5.1 多線程體系結構
4.5.2 動機
4.5.3 進程結構
4.5.4 線程的執行
4.5.5 把中斷當做線程
4.6 Linux的進程和線程管理
4.6.1 Linux任務
4.6.2 Linux線程
4.7 小結
4.8 推薦讀物
4.9 關鍵術語、復習題和習題
第5章 并發性:互斥和同步
5.1 并發的原理
5.1.1 一個簡單的例子
5.1.2 競爭條件
5.1 -3操作系統關注的問題
5.1.4 進程的交互
5.1.5 互斥的要求
5.2 互斥:硬件的支持
5.2.1 中斷禁用
5.2.2 專用機器指令
5.3 信號量
5.3.1 互斥
5.3.2 生產者/消費者問題
5.3.3 信號量的實現
5.4 管程
5.4.1 使用信號的管程
5.4.2 使用通知和廣播的管程
5.5 消息傳遞
5.5.1 同步
5.5.2 尋址
5.5.3 消息格式
5.5.4 排隊原則
5.5.5 互斥
5.6 讀者一寫者問題
5.6.1 讀者優先
5.6.2 寫者優先
5.7 小結
5.8 推薦讀物
5.9 關鍵術語、復習題和習題
第6章 并發:死鎖和饑餓
6.1 死鎖的原理
6.1.1 可重用資源
6.1.2 可消耗資源
6.1.3 資源分配圖
6.1.4 死鎖的條件
6.2 死鎖預防
6.2.1 互斥
6.2.2 占有且等待
6.2.3 不可搶占
6.2.4 循環等待
6.3 死鎖避免
6.3.1 進程啟動拒絕
6.3.2 資源分配拒絕
6.4.死鎖檢測
6.4.1 死鎖檢測算法
6.4.2 恢復
6.5 一種綜合的死鎖策略
6.6 哲學家就餐問題
6.6.1 使用信號量解決方案
6.6.2 使用管程解決方案
6.7 UNIX的并發機制
6.7.1 管道
6.7.2 消息
6.7.3 共享內存
6.7.4 信號量
6.7.5 信號
6.8 Linux內核并發機制
6.8.1 原子操作
6.8.2 自旋鎖
6.8.3 信號量
6.8.4 屏障.
6.9 Solaris線程同步原語
6.9.1 互斥鎖
6.9.2 信號量
6.9.3 多讀者/單寫者鎖
6.9.4 條件變量
6.10 Windows并發機制
6.10.1 等待函數
6.10.2 分派器對象
6.10.3 臨界區
6.10.4 輕量級讀寫鎖和條件變量
6.11 小結
6.12 推薦讀物
6.13 關鍵術語、復習題和習題
第三部分 內存
第7章 內存管理
7.1 內存管理的需求
7.1.1 重定位
7.1.2 保護
7.1.3 共享
7.1.4 邏輯組織
7.1.5 物理組織
7.2 內存分區
7.2.1 固定分區
7.2.2 動態分區
7.2.3 伙伴系統
7.2.4 重定位
7.3 分頁
7.4 分段
7.5 安全問題
7.5.1 緩沖區溢出攻擊
7.5.2 預防緩沖區溢出
7.6 小結
7.7 推薦讀物
7.8 關鍵術語、復習題和習題
附錄7A加載和鏈接
第8章 虛擬內存
8.1 硬件和控制結構
8.1.1 局部性和虛擬內存
8.1.2 分頁
8.1.3 分段
8.1.4 段頁式
8.1.5 保護和共享
8.2 操作系統軟件
8.2.1 讀取策略
8.2.2 放置策略
8.2.3 置換策略
8.2.4 駐留集管理
8.2.5 清除策略
8.2.6 加載控制
8.3 UNIX和Solaris內存管理
8.3.1 分頁系統
8.3.2 內核內存分配器
8.4 Linux內存管理
8.4.1 Linux虛擬內存
8.4.2 內核內存分配
8.5 Windows內存管理
8.5.1 Windows虛擬地址映射
8.5.2 Windows分頁
8.6 t]I、結
8.7 推薦讀物和網站
8.8 關鍵術語、復習題和習題
附錄8A散列表
第四部分 調度
第9章 單處理器調度
9.1 處理器調度的類型
9.1.1 長程調度
9.1.2 p程調度
9.1.3 短程調度
9.2 調度算法
9.2.1 短程調度準則
9.2.2 優先級的使用
9.2.3 選擇調度策略
9.2.4 性能比較
9.2.5 公平共享調度
9.3 傳統的UNIX調度
9.4 小結
9.5 推薦讀物
9.6 關鍵術語、復習題和習題
附錄9A響應時間
附錄9B排隊系統
編程項目2:主機調度shell程序
第10章 多處理器和實時調度
10.1 多處理器調度
10.1.1 粒度
10.1.2 設計問題
10.1.3 進程調度
10.1.4 線程調度
10.2 實時調度
10.2.1 背景
10.2.2 實時操作系統的特點
10.2.3 實時調度
10.2.4 限期調度
10.2.5 速率單調調度
……
第五部分 I/O和文件
第11章 I/O管理和磁盤調度
第12章 文件管理
第六部分 嵌入式系統
第13章 嵌入式操作系統
第七部分 安全
第14章 計算機安全威脅
第15章 計算機安全技術
第八部分 分布式系統
第16章 分布式處理、客戶/服務器和集群
第O章讀者指南
USENET新聞組本書及相關Web站點包含了大量的資料,下面將給讀者提供一個總體介紹。
0.1 本書概述
本書共分為八個部分:
第一部分背景:提供關于計算機組織與系統結構的綜述,重點講述與操作系統設計相關的主題,并且概述了本書的其余部分操作系統(OS)的各個主題。
第二部分進程:詳細分析進程、多線程、對稱多處理(SMP)和微內核,還討論了單一系統中的并發機制,重點講述了互斥和死鎖。
第三部分存儲器:全面講述存儲器管理技術,包括虛擬存儲器。
第四部分調度:對多種進程調度方法進行分析比較,同時還討論線程調度、SMP調度和實時調度。
第五部分輸入/輸出與文件:分析操作系統中有關輸人/輸出函數的控制,特別是磁盤輸入/輸出,它是決定系統性能的關鍵所在。本部分還給出了關于文件管理的綜述。
第六部分嵌入式系統:嵌入式系統的數量遠遠多于通用計算系統,因此存在許多獨特的嵌入式操作系統。本章討論了嵌入式操作系統的一般性原理,并且介紹了兩個實例系統:TinyOS和eCoso第七部分安全:對涉及計算機和網絡安全的威脅和防護機制進行了概述。
第八部分分布式系統:分析計算機系統網絡化技術的主要趨勢,包括TCP/IP、客戶/服務器計算和集群,同時還介紹分布式系統開發中的一些主要設計領域。