編輯推薦
《操作係統:精髓與設計原理(原書第6版)》是計算機界巨擘William Stallings的經典著作之一,其第4版曾獲得美國計算機科學與工程類大奬,得到瞭全球計算機教育界和工程技術人員的好評。書中不僅全麵地講述瞭操作係統的基本概念、原理和方法,而且還以當代流行的操作係統為例,全麵清楚地展現瞭當代操作係統的本質和特點。作者針對近幾年操作係統領域的全新變化,對操作係統的設計原理進行深入的闡述,同時將其對操作係統整個領域全麵而深入的理解呈現給讀者。
《操作係統:精髓與設計原理(原書第6版)》特色
·選擇WirldowsVista、LJNIX和Linux三個操作係統作為示例,以幫助讀者熟悉當代操作係統的設計原理和實現問題。
·新增嵌入式操作係統一章,討論瞭嵌入式操作係統的基本特點,並給齣瞭兩個實例係統:TinyOS和eCos。
·在第5版的基礎上擴展瞭計算機安全的相關內容,包括計算機安全威脅和計算機安全技術。
·擴展和更新瞭並發的相關內容,並增加瞭有關遊戲軟件中多處理器調度設計問題的實例。
·補充動畫演示、模擬項目和編程項目,便於培養學生的動手實踐能力。
·改進瞭插圖,增加大量新的“現場測試”(field-tested)型傢庭作業。
·調整和擴充瞭章末的練習題,有助於讀者深入理解操作係統的精髓。
內容簡介
操作係統是計算機係統的核心係統軟件,負責控製和管理整個係統,使之協調工作。《操作係統:精髓與設計原理(原書第6版)》不僅全麵地講述瞭操作係統的基本概念、原理和方法,還清楚地展現瞭當代操作係統的本質和特點。全書分為八個部分,由淺入深地介紹瞭計算機係統、操作係統、進程描述和控製、綫程、微內核、並發性、內存管理、虛擬內存、單處理器調度、多處理器和實時調度、I/O管理和磁盤調度、文件管理、嵌入式操作係統、計算機安全技術以及分布式操作係統等內容。
《操作係統:精髓與設計原理(原書第6版)》內容豐富,具有很強的實用價值,適閤作為高等院校計算機及相關專業本科生的操作係統課程教材,也可供專業技術人員參考。
作者簡介
斯托林斯(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、客戶/服務器計算和集群,同時還介紹分布式係統開發中的一些主要設計領域。
前言/序言
目標本書是一本關於操作係統的概念、結構和機製的教材,其目的是盡可能清楚和全麵地展現當代操作係統的本質和特點。這是一項具有挑戰性的任務。首先,需要為各種各樣的計算機係統設計操作係統,包括單用戶工作站和個人計算機、中等規模的共享係統、大型計算機和超級計算機以及諸如實時係統之類的專門機器。多樣性不僅錶現在機器的容量和速度上,而且錶現在具體應用和係統支持的需求上。其次,計算機係統正以日新月異的速度發展變化,操作係統設計中的許多重要領域都是新近開始研究的,而關於這些領域以及其他新領域的研究工作仍然在繼續著。盡管存在著多樣性和變化快等問題,一些基本概念仍然貫穿始終。當然,這些概念的應用依賴於當前的技術狀況和特定的應用需求。
本書的目的是對操作係統設計的基本原理提供全麵的討論,並且與當代流行的設計問題以及當前操作係統的發展方嚮聯係起來。
示例係統本書試圖使讀者熟悉當代操作係統的設計原理和實現問題,因此單純講述概念和理論是遠遠不夠的。為瞭說明這些概念,同時將它們與真實世界中不得不做齣的設計選擇相聯係,本書選擇瞭三個操作係統作為示例:WindowsVista:用於個人計算機、工作站和服務器的多任務操作係統。它融閤瞭很多操作係統發展的最新技術,此外,Windows是最早采用麵嚮對象原理設計的重要的商業操作係統之一。本書涵蓋瞭在Windows最新版本Vista中所采用的技術。UNIX:最初是為小型計算機而設計的多用戶操作係統,但後來廣泛用於從微機到超級計算機的各種機器中。本書包含若乾版本的UNIX。FreeBSD結閤瞭很多反映當代水平的功能,是一款得到廣泛應用的操作係統。
Solaris是一款應用廣泛的商業版UNIX係統。Linux:一款目前非常普及且源碼開放的UNIX版本。選擇這些係統是由於它們的相關性和代錶性。關於這些示例係統的討論貫穿全書,而不是集中在某一章或附錄部分。因此,在討論並發性的過程中,將描述每個示例係統的並發機製,並探究各個設計選擇的動機。通過這種方法,可以利用真實的例子立即加深對某一特定章節中設計概念的理解。
數字世界的基石:探索計算的奧秘 我們生活在一個由數字驅動的時代,從智能手機到超級計算機,從互聯網的無形脈絡到人工智能的飛速發展,這一切的背後都離不開一個至關重要的幕後英雄——操作係統。它如同一個不知疲倦的指揮傢,在復雜的硬件與紛繁的應用之間搭建起一座堅實的橋梁,確保著海量數據的流暢傳輸,保障著無數進程的協同工作,以及為我們提供瞭與這個數字世界互動的便捷界麵。然而,這個看似理所當然的存在,其內部卻蘊含著精妙絕倫的設計與深邃的原理。 本書旨在揭示操作係統這門學科的本質,帶領讀者深入理解其核心概念、基本原理以及前沿發展。我們將從最基礎的層麵齣發,逐步剖析操作係統的各個組成部分,展現它們是如何協同工作,共同構建起現代計算係統的骨骼與血肉。 程序的生命周期:從代碼到運行的旅程 一切計算的起點,都是程序。那麼,一個程序是如何從我們編寫的文本,轉化為一颱計算機能夠理解並執行的指令呢?這將是我們的第一站。我們將探討編譯、鏈接和加載等關鍵過程,瞭解源代碼如何一步步被轉化為可執行文件,以及操作係統如何在內存中為程序分配空間,並啓動它的生命周期。 進程管理:舞颱上的舞者與觀眾 在操作係統的世界裏,運行的程序被稱為“進程”。想象一下,在一個繁忙的舞颱上,有無數的演員(進程)在錶演,觀眾(用戶)在欣賞。操作係統需要扮演好導演的角色,高效地調度這些演員,確保每個人都能得到充分的錶演時間,並且不會互相乾擾。我們將深入研究進程的概念,包括進程的狀態(創建、就緒、運行、等待、終止),進程的創建與終止機製,以及進程之間的通信與同步。 綫程:進程內部的精細化執行 對於一些復雜的任務,一個進程內部可能需要同時執行多個子任務。這時,“綫程”的概念就應運而生。綫程可以看作是進程內的一個獨立執行流,它們共享進程的資源,卻擁有獨立的執行路徑。我們將探討綫程的優勢,如提高程序的並發性和響應速度,以及綫程的創建、同步與通信機製,這對於編寫高性能的多核應用至關重要。 CPU調度:時間洪流的分配者 CPU是計算機的核心,所有進程的執行都離不開它的計算能力。然而,CPU的數量是有限的,而等待執行的進程卻可能無數。如何公平、高效地將CPU時間分配給各個進程,是CPU調度的核心問題。我們將學習各種經典的調度算法,如先來先服務(FCFS)、最短作業優先(SJF)、優先級調度、輪轉調度(Round Robin)等,並分析它們的優缺點,以及在不同場景下的適用性。我們還將探討多處理器調度、實時調度等更復雜的調度場景。 內存管理:數字世界的空間規劃師 程序在運行過程中需要大量的內存空間來存儲代碼、數據和中間結果。操作係統如同一個精明的空間規劃師,負責管理計算機的內存資源。我們將學習內存管理的基本概念,包括邏輯地址和物理地址的區彆,以及如何將程序從硬盤加載到內存中。 內存分配策略:一塊“地”如何分給“人” 當多個進程需要內存時,操作係統如何將有限的內存空間有效地分配齣去?我們將探討各種內存分配策略,如連續內存分配(固定分區、可變分區)和非連續內存分配(分頁、分段)。 虛擬內存:無限空間的幻象 即使計算機的物理內存有限,我們也能運行比物理內存總和還要大的程序,這得益於“虛擬內存”技術。虛擬內存通過將部分程序存儲在硬盤上,並在需要時動態地加載到內存中,為我們創造瞭一個比實際物理內存更大的“虛擬”內存空間。我們將深入理解分頁、頁麵置換算法(如FIFO、LRU、OPT)以及內存映射等關鍵技術,它們是如何協同工作,實現虛擬內存的魔力的。 輸入/輸齣(I/O)管理:連接內外世界的橋梁 計算機不僅僅是進行計算,它還需要與外部世界進行交互,無論是讀取鍵盤輸入,還是將數據寫入硬盤,亦或是通過網絡發送信息。I/O管理模塊就是負責協調這些輸入輸齣操作的。我們將瞭解I/O設備的類型、I/O控製器的作用,以及操作係統如何通過設備驅動程序來控製硬件,實現高效的數據傳輸。 緩衝與高速緩存:加速數據流動的通道 由於CPU的速度遠超I/O設備,直接讀寫I/O設備會造成大量的CPU等待。緩衝和高速緩存技術能夠有效地緩解這種速度不匹配,提高I/O效率。我們將學習緩衝區的概念,以及磁盤高速緩存的工作原理。 文件係統:信息的組織與檢索 將大量的數據存儲在硬盤上,如何有效地組織、管理和檢索這些信息,就依賴於文件係統。我們將探討文件係統的基本概念,如文件、目錄、文件係統結構(如FAT、NTFS、ext4),以及文件的創建、刪除、讀寫、訪問控製等操作。我們還將瞭解文件係統的性能優化技術,如日誌文件係統和RAID。 並發與同步:協奏麯的和諧奏鳴 在多任務環境下,多個進程或綫程可能需要同時訪問共享資源(如共享變量、打印機等)。如果不加以控製,就會發生“競爭條件”,導緻數據不一緻甚至程序崩潰。因此,並發與同步是操作係統中的核心問題。我們將學習各種同步機製,如互斥鎖(Mutex)、信號量(Semaphore)、條件變量(Conditonal Variable),以及死鎖的産生原因、檢測與避免方法。理解這些機製,對於編寫健壯的並發程序至關重要。 安全與保護:數字世界的守護者 隨著計算的普及,信息安全的重要性日益凸顯。操作係統作為所有用戶和應用程序的入口,其安全性和保護機製至關重要。我們將探討操作係統如何實現用戶身份驗證、權限管理,防止非法訪問和惡意軟件的侵擾。我們將學習訪問控製列錶(ACL)、安全審計等機製,以及虛擬機和容器技術在隔離和安全方麵的應用。 現代操作係統的發展趨勢:麵嚮未來 除瞭深入理解經典的概念,本書還將放眼未來,探討現代操作係統的發展趨勢。我們將關注以下幾個方麵: 分布式係統與雲計算:連接全球的計算網絡 隨著互聯網的普及,計算能力早已不再局限於單颱機器。分布式係統將多颱計算機連接起來,形成一個強大的計算網絡,而雲計算則是分布式係統在服務模式上的重要體現。我們將探討分布式文件係統、分布式共享內存、分布式事務等概念,以及它們在構建大規模、高可用性係統中的作用。 嵌入式係統與物聯網:無處不在的智能 從智能傢電到自動駕駛汽車,嵌入式係統和物聯網正在以前所未有的速度滲透到我們生活的方方麵麵。我們將瞭解嵌入式操作係統的特點,如資源受限、實時性要求高,以及它們在物聯網設備中的應用。 麵嚮多核與異構計算:釋放硬件潛能 現代處理器普遍擁有多個核心,甚至集成GPU等異構計算單元。操作係統需要有效地管理和利用這些強大的硬件資源,以實現更高的計算性能。我們將探討多核調度、GPU計算的協同等相關技術。 操作係統安全性與隱私保護:數字時代的信任基石 隨著網絡攻擊的日益復雜,操作係統的安全性和用戶隱私保護麵臨著前所未有的挑戰。我們將討論新型的安全威脅,以及操作係統在應對這些威脅方麵所做的努力,如可信計算、差分隱私等。 本書的獨特價值 本書並非簡單地羅列概念,而是緻力於以一種清晰、有邏輯的方式,將操作係統龐雜的知識體係展現在讀者麵前。我們強調理論與實踐相結閤,通過分析真實的係統設計案例和性能評估,幫助讀者理解抽象概念的實際意義。無論您是計算機科學專業的學生,還是希望深入瞭解計算原理的開發者,亦或是對數字世界運作機製充滿好奇的愛好者,本書都將是您探索操作係統奧秘的理想起點。 讓我們一同踏上這段探索之旅,揭開操作係統神秘的麵紗,理解數字世界是如何運轉的,並為未來計算的發展打下堅實的基礎。