操作系統(tǒng)概念(原書第10版)
定 價(jià):¥159
中 教 價(jià):¥94.13 (5.92折)
庫 存 數(shù): 2
叢 書 名:計(jì)算機(jī)科學(xué)叢書
本書是面向操作系統(tǒng)導(dǎo)論課程的經(jīng)典書籍,從第1版至今被國內(nèi)外眾多高校選作教材。全書共九個部分,相較于上一版增加了三個部分,并且優(yōu)化了各章的編排順序。本書不僅詳細(xì)講解進(jìn)程管理、內(nèi)存管理、存儲管理、保護(hù)與安全等概念,而且涵蓋重要的理論結(jié)果和案例研究,并且給出了供讀者深入學(xué)習(xí)的推薦讀物。這一版在移動操作系統(tǒng)、多核系統(tǒng)、虛擬化和NVM外存等方面做了大幅更新,每一章都融入了新的技術(shù)進(jìn)展,并且更新了習(xí)題和編程項(xiàng)目。本書既適合高等院校計(jì)算機(jī)相關(guān)專業(yè)的學(xué)生學(xué)習(xí),也是專業(yè)技術(shù)人員的有益參考。
本書是操作系統(tǒng)領(lǐng)域的經(jīng)典書籍,從第1版至今全程記錄了操作系統(tǒng)的發(fā)展歷史,被國內(nèi)外眾多高校選作教材。第10版延續(xù)了之前版本的優(yōu)點(diǎn)并進(jìn)行了全面更新:理論講解采用簡潔的方式來呈現(xiàn)重要的研究結(jié)果,不展開復(fù)雜的形式化證明;案例分析涵蓋Linux、Windows、macOS、Android、iOS等主流系統(tǒng);代碼部分要求讀者對C或Java語言有一定的了解;教輔資源同步升級,包括習(xí)題及參考答案、編程項(xiàng)目、推薦讀物、學(xué)習(xí)指南、教學(xué)PPT等。
前言Operating System Concepts,Tenth Edition操作系統(tǒng)是計(jì)算機(jī)系統(tǒng)的重要組成部分。同樣,操作系統(tǒng)課程也是計(jì)算機(jī)科學(xué)教育的基本組成部分。這個領(lǐng)域正在快速發(fā)展,因?yàn)橛?jì)算機(jī)已逐漸滲透到日常生活的方方面面從汽車的嵌入式設(shè)備到政府和跨國公司的先進(jìn)規(guī)劃工具。然而,其中的基本概念仍然比較清晰,本書也是基于這些概念展開討論的。本書是面向操作系統(tǒng)導(dǎo)論課程的教科書,適用于大三、大四學(xué)生和一年級研究生,同時也可供工程技術(shù)人員參考。本書清晰地描述了操作系統(tǒng)的概念。作為先決條件,我們假設(shè)讀者熟悉基本數(shù)據(jù)結(jié)構(gòu)、計(jì)算機(jī)組成和一種高級語言(如C或Java)。本書第1章包括學(xué)習(xí)操作系統(tǒng)所需的硬件知識,同時還包括大多數(shù)操作系統(tǒng)普遍使用的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)知識。代碼示例主要使用C和Java,不過,即使讀者不具有這些語言的全部知識,也能理解這些算法。本書不僅直觀描述了概念,而且包括重要的理論結(jié)果,但是省略了大部分的形式化證明。每章結(jié)尾的推薦讀物給出了相關(guān)研究論文,其中有的首次提出或證明了這些理論結(jié)果,有的提供深入閱讀的新材料。本書通過圖形和舉例來說明為什么有關(guān)結(jié)果是真實(shí)有效的。本書描述的基本概念和算法通常用于商用和開源的操作系統(tǒng)。我們的目標(biāo)是,按照通用的(而非特定的)操作系統(tǒng)來描述這些概念和算法。另外,我們提供了受歡迎和具創(chuàng)新的操作系統(tǒng)的大量示例,包括Linux、Microsoft Windows、Apple macOS(原名為OS X,在2016年改為macOS,以與其他Apple產(chǎn)品的命名方案相匹配)和Solaris。我們還給出了兩個主要移動操作系統(tǒng)(Android和iOS)的示例。本書的編寫融合了我們從事操作系統(tǒng)教學(xué)的多年經(jīng)驗(yàn)。另外,還考慮了多位審稿人員提供的反饋意見,以及之前版本的讀者和用書師生的許多意見和建議。第10版還反映了2013年計(jì)算機(jī)科學(xué)課程中操作系統(tǒng)領(lǐng)域的大部分課程指南,該指南由IEEE計(jì)算機(jī)協(xié)會(IEEE Computing Society)和ACM(Association for Computing Machinery,計(jì)算機(jī)學(xué)會)共同出版。本書資源本書共有21章。有些章包含以下配套資源:一套練習(xí)。一套常規(guī)習(xí)題。一組編程題。一組編程項(xiàng)目。推薦讀物。重要術(shù)語(黑體)的定義。本書內(nèi)容本書包括九個主要部分:概論。第1章和第2章解釋了操作系統(tǒng)是什么,它們能做什么,以及它們是如何設(shè)計(jì)與構(gòu)造的。這一部分討論了操作系統(tǒng)的常見功能是什么,以及操作系統(tǒng)能為用戶提供什么。我們不僅討論P(yáng)C和服務(wù)器的傳統(tǒng)操作系統(tǒng),而且討論移動設(shè)備的操作系統(tǒng)。描述主要以啟發(fā)和解釋為主。這一部分避免討論內(nèi)部實(shí)現(xiàn)細(xì)節(jié)。因此,這部分適合低年級學(xué)生或類似讀者,以便了解操作系統(tǒng)是什么而無須關(guān)注內(nèi)部算法細(xì)節(jié)。進(jìn)程管理。第3~5章描述了進(jìn)程概念和并發(fā),這是現(xiàn)代操作系統(tǒng)的核心。進(jìn)程是系統(tǒng)內(nèi)的工作單元。這種系統(tǒng)包括一組并發(fā)執(zhí)行進(jìn)程,其中一些是操作系統(tǒng)進(jìn)程(執(zhí)行系統(tǒng)代碼的進(jìn)程),其余的是用戶進(jìn)程(執(zhí)行用戶代碼的進(jìn)程)。這一部分包括進(jìn)程調(diào)度、進(jìn)程間通信方法,還包括線程分析以及多核系統(tǒng)和并行編程的有關(guān)分析。進(jìn)程同步。第6~8章包括進(jìn)程同步和死鎖的處理方法。由于加強(qiáng)了進(jìn)程同步的討論,所以我們將上一版的第5章(進(jìn)程同步)分為兩個獨(dú)立章節(jié):同步工具(第6章)和同步案例(第7章)。內(nèi)存管理。第9章和第10章討論進(jìn)程執(zhí)行期間的內(nèi)存管理。為了改進(jìn)CPU的利用率及其對用戶的響應(yīng)速度,計(jì)算機(jī)必須同時在內(nèi)存中保存多個進(jìn)程。內(nèi)存管理有很多不同方案,反映了內(nèi)存管理的各種方法;而特定算法的有效性取決于具體的應(yīng)用場景。存儲管理。第11章和第12章描述了現(xiàn)代計(jì)算機(jī)系統(tǒng)如何處理大容量存儲和I/O。由于連到計(jì)算機(jī)的I/O設(shè)備種類繁多,操作系統(tǒng)需要為應(yīng)用程序提供大量的功能來控制這些設(shè)備。這一部分深入討論了系統(tǒng)I/O,包括I/O系統(tǒng)設(shè)計(jì)、接口及系統(tǒng)內(nèi)部的結(jié)構(gòu)和功能。在許多方面,I/O設(shè)備是計(jì)算機(jī)中慢的主要組件。因?yàn)樵O(shè)備通常會是性能瓶頸,所以這一部分也討論了I/O設(shè)備的性能問題。文件系統(tǒng)。第13~15章討論了現(xiàn)代計(jì)算機(jī)系統(tǒng)如何處理文件系統(tǒng)。文件系統(tǒng)提供了在線存儲和訪問數(shù)據(jù)、程序的機(jī)制。我們描述了存儲管理的經(jīng)典內(nèi)部算法和結(jié)構(gòu),并對所使用的算法進(jìn)行了深入討論,包括它們的屬性和優(yōu)缺點(diǎn)。安全與保護(hù)。第16章和第17章討論了計(jì)算機(jī)系統(tǒng)安全和保護(hù)所需的機(jī)制。操作系統(tǒng)的進(jìn)程活動必須互相保護(hù),我們必須確保只有獲得操作系統(tǒng)適當(dāng)授權(quán)的進(jìn)程才能使用系統(tǒng)的文件、內(nèi)存、CPU和其他資源。保護(hù)是一種機(jī)制,用于控制程序、進(jìn)程和用戶對計(jì)算機(jī)系統(tǒng)資源的訪問,這種機(jī)制必須提供指定控制和實(shí)施控制的手段。安全保護(hù)系統(tǒng)的存儲信息(數(shù)據(jù)和代碼)和計(jì)算機(jī)物理資源的完整性,從而避免未經(jīng)授權(quán)的訪問、惡意破壞或修改,以及意外引入不一致。高級主題。第18章和第19章討論虛擬機(jī)和網(wǎng)絡(luò)與分布式系統(tǒng)。第18章概述了虛擬機(jī)及其與現(xiàn)代操作系統(tǒng)的關(guān)系,也討論了使虛擬化成為可能的硬件和軟件技術(shù)。第19章概述了計(jì)算機(jī)網(wǎng)絡(luò)與分布式系統(tǒng),以Internet和TCP/IP為主。案例研究。第20章和第21章詳細(xì)研究了兩個真實(shí)操作系統(tǒng):Linux和Wind
目錄Operating System Concepts,Tenth Edition譯者序前言第一部分概論第1章導(dǎo)論21.1操作系統(tǒng)的功能21.1.1用戶視角21.1.2系統(tǒng)視角31.1.3操作系統(tǒng)的定義31.2計(jì)算機(jī)系統(tǒng)的組成41.2.1中斷51.2.2存儲結(jié)構(gòu)71.2.3I/O結(jié)構(gòu)91.3計(jì)算機(jī)系統(tǒng)的體系結(jié)構(gòu)91.3.1單處理器系統(tǒng)91.3.2多處理器系統(tǒng)101.3.3集群系統(tǒng)111.4操作系統(tǒng)的執(zhí)行131.4.1多道程序與多任務(wù)141.4.2雙模式與多模式操作151.4.3定時器161.5資源管理161.5.1進(jìn)程管理161.5.2內(nèi)存管理171.5.3文件系統(tǒng)管理171.5.4大容量存儲管理181.5.5高速緩存管理181.5.6I/O系統(tǒng)管理201.6安全與保護(hù)201.7虛擬化211.8分布式系統(tǒng)221.9內(nèi)核數(shù)據(jù)結(jié)構(gòu)221.9.1列表、堆棧與隊(duì)列221.9.2樹231.9.3哈希函數(shù)與哈希表241.9.4位圖241.10計(jì)算環(huán)境251.10.1傳統(tǒng)計(jì)算251.10.2移動計(jì)算251.10.3客戶機(jī)-服務(wù)器計(jì)算261.10.4對等計(jì)算261.10.5云計(jì)算271.10.6實(shí)時嵌入式系統(tǒng)271.11免費(fèi)與開源操作系統(tǒng)281.11.1開源操作系統(tǒng)的歷史291.11.2自由操作系統(tǒng)291.11.3GNU/Linux291.11.4BSD UNIX301.11.5Solaris301.11.6用作學(xué)習(xí)的開源操作系統(tǒng)311.12本章小結(jié)311.13推薦讀物321.14參考文獻(xiàn)321.15練習(xí)331.16習(xí)題33第2章操作系統(tǒng)結(jié)構(gòu)352.1操作系統(tǒng)的服務(wù)352.2用戶與操作系統(tǒng)的界面362.2.1命令解釋器372.2.2圖形用戶界面372.2.3觸摸屏界面382.2.4界面的選擇382.3系統(tǒng)調(diào)用392.3.1系統(tǒng)調(diào)用示例392.3.2應(yīng)用編程接口392.3.3系統(tǒng)調(diào)用的類型412.4系統(tǒng)服務(wù)462.5鏈接器與加載器462.6應(yīng)用程序特定于操作系統(tǒng)的原因482.7操作系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)492.7.1設(shè)計(jì)目標(biāo)492.7.2機(jī)制與策略492.7.3實(shí)現(xiàn)502.8操作系統(tǒng)的結(jié)構(gòu)502.8.1簡單結(jié)構(gòu)512.8.2分層法512.8.3微內(nèi)核522.8.4模塊532.8.5混合系統(tǒng)532.9操作系統(tǒng)的構(gòu)建與引導(dǎo)562.9.1操作系統(tǒng)的生成562.9.2操作系統(tǒng)的引導(dǎo)572.10操作系統(tǒng)的調(diào)試582.10.1故障分析592.10.2性能優(yōu)化592.10.3跟蹤602.10.4BCC602.11本章小結(jié)612.12推薦讀物622.13參考文獻(xiàn)622.14練習(xí)632.15習(xí)題632.16編程題632.17編程項(xiàng)目64第二部分進(jìn)程管理第3章進(jìn)程703.1進(jìn)程的概念703.1.1進(jìn)程概述703.1.2進(jìn)程狀態(tài)713.1.3進(jìn)程控制塊723.1.4線程733.2進(jìn)程調(diào)度733.2.1調(diào)度隊(duì)列743.2.2CPU調(diào)度743.2.3上下文切換753.3進(jìn)程操作763.3.1進(jìn)程創(chuàng)建763.3.2進(jìn)程終止793.4進(jìn)程間通信813.5共享內(nèi)存系統(tǒng)的IPC823.6消息傳遞系統(tǒng)的IPC833.6.1命名843.6.2同步853.6.3緩沖853.7IPC系統(tǒng)示例863.7.1POSIX共享內(nèi)存863.7.2Mach消息傳遞883.7.3Windows903.7.4管道913.8客戶機(jī)-服務(wù)器系統(tǒng)中的通信953.8.1套接字953.8.2遠(yuǎn)程過程調(diào)用973.9本章小結(jié)993.10推薦讀物1003.11參考文獻(xiàn)1003.12練習(xí)1003.13習(xí)題1013.14編程題1043.15編程項(xiàng)目106第4章線程與并發(fā)1134.1概述1134.1.1動機(jī)1134.1.2優(yōu)點(diǎn)1144.2多核編程1154.2.1編程挑戰(zhàn)1154.2.2并行的類型1164.3多線程模型1174.3.1多對一模型1174.3.2一對一模型1174.3.3多對多模型1174.4線程庫1184.4.1Pthreads1194.4.2Windows線程1204.4.3Java線程1214.5隱式線程1244.5.1線程池1244.5.2復(fù)刻加入1264.5.3OpenMP1284.5.4大中央調(diào)度1294.5.5Intel線程構(gòu)建模塊1304.6多線程問題1314.6.1系統(tǒng)調(diào)用fork()和exec()1314.6.2信號處理1314.6.3線程撤銷1324.6.4線程本地存儲1334.6.5調(diào)度程序激活1344.7操作系統(tǒng)示例1354.7.1Windows線程1354.7.2Linux線程1354.8本章小結(jié)1364.9推薦讀物1374.10參考文獻(xiàn)1374.11練習(xí)1374.12習(xí)題1374.13編程題1394.14編程項(xiàng)目141第5章CPU調(diào)度1435.1基本概念1435.1.1CPU-I/O突發(fā)周期1435.1.2CPU調(diào)度程序1445.1.3搶占式和非搶占式調(diào)度1445.1.4分派程序1455.2調(diào)度準(zhǔn)則1465.3調(diào)度算法1465.3.1先到先服務(wù)調(diào)度1465.3.2短作業(yè)優(yōu)先調(diào)度1475.3.3輪轉(zhuǎn)調(diào)度1495.3.4優(yōu)先級調(diào)度1505.3.5多級隊(duì)列調(diào)度1515.3.6多級反饋隊(duì)列調(diào)度1525.4線程調(diào)度1535.4.1競爭范圍1535.4.2Pthreads調(diào)度1535.5多處理器調(diào)度1555.5.1多處理器調(diào)度的方法1555.5.2多核處理器1565.5.3負(fù)載平衡1585.5.4處理器親和性1585.5.5異構(gòu)多處理1595.6實(shí)時CPU調(diào)度1595.6.1小化延遲1595.6.2基于優(yōu)先級的調(diào)度1605.6.3單調(diào)速率調(diào)度1615.6.4早截止期限優(yōu)先調(diào)度1625.6.5比例分享調(diào)度1635.6.6POSIX實(shí)時調(diào)度1635.7操作系統(tǒng)示例1655.7.1示例:Linux調(diào)度1655.7.2示例:Windows調(diào)度1675.7.3示例:Solaris調(diào)度1695.8算法評估1705.8.1確定性模型1715.8.2排隊(duì)模型1715.8.3仿真1725.8.4實(shí)現(xiàn)1725.9本章小結(jié)1735.10推薦讀物1745.11參考文獻(xiàn)1745.12練習(xí)1755.13習(xí)題1765.14編程項(xiàng)目178第三部分進(jìn)程同步第6章同步工具1826.1背景1826.2臨界區(qū)問題1836.3Peterson解決方案1856.4硬件同步支持1866.4.1內(nèi)存屏障1866.4.2硬件指令1876.4.3原子變量1896.5互斥鎖1896.6信號量1916.6.1信號量的使用1916.6.2信號量的實(shí)現(xiàn)1916.7管程1936.7.1管程的使用1946.7.2采用信號量的管程實(shí)現(xiàn)1956.7.3管程內(nèi)的進(jìn)程重啟1966.8活性1966.8.1死鎖1976.8.2優(yōu)先級反轉(zhuǎn)1976.9評估1986.10本章小結(jié)1996.11推薦讀物1996.12參考文獻(xiàn)2006.13練習(xí)2006.14習(xí)題2006.15編程題205第7章同步案例2077.1經(jīng)典同步問題2077.1.1有界緩沖區(qū)問題2077.1.2讀者-作者問題2077.1.3哲學(xué)家就餐問題2097.2內(nèi)核的同步2117.2.1Windows的同步2117.2.2Linux的同步2127.3POSIX的同步2137.3.1POSIX 互斥鎖2137.3.2POSIX信號量2137.3.3POSIX條件變量2147.4Java的同步2157.4.1Java管程2157.4.2重入鎖2187.4.3信號量2187.4.4條件變量2197.5其他方法2207.5.1事務(wù)內(nèi)存2207.5.2OpenMP2217.5.3函數(shù)式編程語言2227.6本章小結(jié)2227.7推薦讀物2227.8參考文獻(xiàn)2227.9練習(xí)2237.10習(xí)題2237.11編程題2237.12編程項(xiàng)目224第8章死鎖2308.1系統(tǒng)模型2308.2多線程應(yīng)用程序的死鎖2318.3死鎖特點(diǎn)2338.3.1必要條件2338.3.2資源分配圖2338.4死鎖處理方法2358.5死鎖預(yù)防2358.5.1互斥2358.5.2占有并等待2368.5.3非搶占2368.5.4 循環(huán)等待2368.6死鎖避免2388.6.1 安全狀態(tài)2388.6.2資源分配圖算法2398.6.3銀行家算法2398.7死鎖檢測2418.7.1每種資源類型只有單個實(shí)例2418.7.2每種資源類型可有多個實(shí)例2428.7.3檢測算法的使用2438.8死鎖恢復(fù)2448.8.1進(jìn)程與線程的中止2448.8.2資源搶占2448.9本章小結(jié)2458.10推薦讀物2458.11參考文獻(xiàn)2458.12練習(xí)2458.13習(xí)題2478.14編程題2498.15編程項(xiàng)目249第四部分內(nèi)存管理第9章內(nèi)存2529.1背景2529.1.1基本硬件2529.1.2地址綁定2539.1.3邏輯地址空間與物理地址空間2549.1.4動態(tài)加載2559.1.5動態(tài)鏈接與共享庫2559.2連續(xù)內(nèi)存分配2569.2.1內(nèi)存保護(hù)2569.2.2內(nèi)存分配2579.2.3碎片2579.3分頁2589.3.1基本方法2589.3.2硬件支持2619.3.3保護(hù)2639.3.4共享頁2639.4頁表結(jié)構(gòu)2649.4.1分層分頁2649.4.2哈希頁表2659.4.3倒置頁表2669.4.4Oracle SPARC Solaris2679.5交換2679.5.1標(biāo)準(zhǔn)交換2679.5.2采用分頁的交換2679.5.3移動系統(tǒng)的交換2689.6示例:Intel 32位與64位體系結(jié)構(gòu)2689.6.1IA-32架構(gòu)2699.6.2x86-642709.7示例:ARMv8架構(gòu)2719.8本章小結(jié)2729.9推薦讀物2729.10參考文獻(xiàn)2739.11練習(xí)2739.12習(xí)題2749.13編程題2759.14編程項(xiàng)目275第10章虛擬內(nèi)存27710.1背景27710.2請求調(diào)頁27910.2.1基本概念27910.2.2空閑幀列表28110.2.3請求調(diào)頁的性能28210.3寫時復(fù)制28310.4頁面置換28410.4.1基本頁面置換28510.4.2FIFO頁面置換28710.4.3優(yōu)頁面置換28810.4.4LRU頁面置換28810.4.5近似LRU頁面置換29010.4.6基于計(jì)數(shù)的頁面置換29110.4.7頁面緩沖算法29210.4.8應(yīng)用程序與頁面置換29210.5幀分配29210.5.1幀的小數(shù)29310.5.2分配算法29310.5.3全局分配與局部分配29410.5.4非均勻內(nèi)存訪問29510.6抖動29610.6.1抖動的原因29610.6.2工作集模型29710.6.3缺頁錯誤頻率29910.6.4當(dāng)前做法30010.7內(nèi)存壓縮30010.8分配內(nèi)核內(nèi)存30110.8.1伙伴系統(tǒng)30110.8.2slab分配30210.9其他考慮因素30310.9.1預(yù)調(diào)頁面30310.9.2頁面大小30410.9.3TLB范圍30410.9.4倒置頁表30510.9.5程序結(jié)構(gòu)30510.9.6I/O聯(lián)鎖與頁面鎖定30610.10操作系統(tǒng)示例30710.10.1Linux30710.10.2Windows30810.10.3Solaris30810.11本章小結(jié)30910.12推薦讀物31010.13參考文獻(xiàn)31010.14練習(xí)31010.15習(xí)題31210.16編程題31610.17編程項(xiàng)目316第五部分存儲管理第11章大容量存儲32011.1大容量存儲結(jié)構(gòu)概述32011.1.1硬盤驅(qū)動器32011.1.2非易失性存儲設(shè)備32111.1.3易失性存儲器32311.1.4二級存儲連接方法32411.1.5地址映射32411.2HDD調(diào)度32511.2.1FCFS調(diào)度32511.2.2SCAN調(diào)度32611.2.3C-SCAN調(diào)度32611.2.4磁盤調(diào)度算法的選擇32611.3NVM調(diào)度32711.4錯誤檢測和糾正32811.5存儲設(shè)備管理32811.5.1驅(qū)動器格式化、分區(qū)與卷32811.5.2引導(dǎo)塊33011.5.3壞塊33011.6交換空間管理33111.6.1交換空間的使用33111.6.2交換空間位置33211.6.3交換空間管理的示例33211.7存儲連接33311.7.1主機(jī)連接存儲33311.7.2網(wǎng)絡(luò)連接存儲33311.7.3云存儲33311.7.4存儲區(qū)域網(wǎng)絡(luò)與存儲陣列33411.8RAID結(jié)構(gòu)33511.8.1通過冗余提高可靠性33511.8.2通過并行處理提高性能33611.8.3RAID級別33611.8.4RAID級別的選擇33911.8.5擴(kuò)展34011.8.6RAID的問題34011.8.7對象存儲34111.9本章小結(jié)34211.10推薦讀物34211.11參考文獻(xiàn)34311.12練習(xí)34311.13習(xí)題34411.14編程題345第12章I/O系統(tǒng)34612.1概述34612.2I/O硬件34612.2.1內(nèi)存映射I/O34712.2.2輪詢34812.2