關(guān)于我們
書單推薦
新書推薦
|
操作系統(tǒng)概念精要(原書第2版)
本書是經(jīng)典教材《操作系統(tǒng)概念》的精簡版,強調(diào)基礎(chǔ)概念,更適合本科階段的教學(xué)。全書共六部分,不僅詳細(xì)講解了進程管理、內(nèi)存管理、存儲管理、保護與安全等概念,而且涵蓋重要的理論結(jié)果和案例研究,并且給出了供讀者深入學(xué)習(xí)的推薦讀物。這一版新增了多核系統(tǒng)和移動計算的內(nèi)容,每一章都融入了新的技術(shù)進展,并且更新了習(xí)題和編程項目。本書既適合高等院校計算機相關(guān)專業(yè)的學(xué)生學(xué)習(xí),也是專業(yè)技術(shù)人員的有益參考。
前 言O(shè)perating System Concepts Essentials, Second Edition其中的基本概念仍然比較清晰,這些概念就是本書討論的基礎(chǔ)。
本書是面向操作系統(tǒng)導(dǎo)論課程的教科書,適用于大三、大四學(xué)生和一年級研究生,同時也可供工程技術(shù)人員參考。本書清晰地描述了操作系統(tǒng)的概念。作為先決條件,我們假設(shè)讀者熟悉基本數(shù)據(jù)結(jié)構(gòu)、計算機組成和一種高級語言(如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é)果是真實有效的。 本書描述的基本概念和算法通常用于商用和開源的操作系統(tǒng)。我們的目標(biāo)是,按照通用的(而非特定的)操作系統(tǒng)來描述這些概念和算法。另外,我們提供了最受歡迎和最具創(chuàng)新的操作系統(tǒng)的大量例子,包括Linux、Microsoft Windows、Apple Mac OS X和Solaris。我們還給出了兩個主要移動操作系統(tǒng)(Android和iOS)的示例。 本書的編寫綜合了我們從事操作系統(tǒng)教學(xué)的多年經(jīng)驗以及IEEE計算機協(xié)會和ACM共同出版的課程指南。另外,還考慮了多位審稿人員提供的反饋意見,以及以前版本讀者和學(xué)生的許多意見和建議。 本書內(nèi)容本書包括六大部分: 概論。第1章和第2章解釋了操作系統(tǒng)是什么,它們能做什么,以及它們是如何設(shè)計與構(gòu)造的。這一部分討論了操作系統(tǒng)的常見功能是什么,以及操作系統(tǒng)能為用戶提供什么。我們不僅討論PC和服務(wù)器的傳統(tǒng)操作系統(tǒng),而且討論移動設(shè)備的操作系統(tǒng)。描述主要以啟發(fā)和解釋為主,避免討論內(nèi)部實現(xiàn)細(xì)節(jié)。因此,這部分適合低年級學(xué)生或類似讀者,以便了解操作系統(tǒng)是什么而無需關(guān)注內(nèi)部算法細(xì)節(jié)。 進程管理。第3~6章描述了進程概念和并發(fā),這是現(xiàn)代操作系統(tǒng)的核心。進程是系統(tǒng)內(nèi)的工作單元。這種系統(tǒng)包括一組并發(fā)執(zhí)行進程,其中一些是操作系統(tǒng)進程(執(zhí)行系統(tǒng)代碼的進程),其余的是用戶進程(執(zhí)行用戶代碼的進程)。這一部分包括進程調(diào)度、進程間通信、進程同步及死鎖處理等的方法,還包括線程分析以及多核系統(tǒng)和并行編程的有關(guān)分析。 內(nèi)存管理。第7章和第8章是關(guān)于進程執(zhí)行期間的內(nèi)存管理的。為了改進CPU的使用率及其對用戶的響應(yīng)速度,計算機必須在內(nèi)存中同時保存多個進程。內(nèi)存管理具有很多不同方案,反映了內(nèi)存管理的各種方法;而特定算法的有效性取決于應(yīng)用情形。 存儲管理。第9~12章描述了現(xiàn)代計算機系統(tǒng)如何處理文件系統(tǒng)、大容量存儲和I/O。文件系統(tǒng)提供了一種機制,以對數(shù)據(jù)和程序進行在線存儲與訪問。這一部分描述了存儲管理的經(jīng)典內(nèi)部算法和結(jié)構(gòu),并且深入討論了這些算法,比如它們的特性、優(yōu)點和缺點。由于連到計算機的I/O設(shè)備種類如此之多,操作系統(tǒng)需要為應(yīng)用程序提供大量的功能,以控制這些設(shè)備的方方面面。這一部分深入討論了I/O系統(tǒng),包括I/O系統(tǒng)設(shè)計、接口及系統(tǒng)內(nèi)部的結(jié)構(gòu)和功能。在許多方面,I/O設(shè)備也是計算機中最慢的主要組件。因為設(shè)備通常是性能瓶頸,所以這一部分也討論了I/O設(shè)備的性能問題。 保護與安全。第13章和第14章討論了計算機系統(tǒng)保護與安全的必需機制。操作系統(tǒng)的進程活動必須互相保護,為此,我們必須確保只有獲得操作系統(tǒng)適當(dāng)授權(quán)的進程才能使用系統(tǒng)的文件、內(nèi)存、CPU和其他資源。保護是一種機制,用于控制程序、進程和用戶對計算機系統(tǒng)資源的訪問,這種機制必須提供指定控制和實施控制的手段。安全機制保護系統(tǒng)存儲的信息(數(shù)據(jù)和代碼)的完整性和計算機的物理資源,從而避免未經(jīng)授權(quán)的訪問、惡意破壞或修改以及意外引入的不一致。 案例研究。本書的第15章詳細(xì)研究了Linux操作系統(tǒng)的實際案例。雖然本書前面章節(jié)也有Linux的討論,但是案例研究提供了更多細(xì)節(jié)。 操作系統(tǒng)概念精要本書以2012年《操作系統(tǒng)概念》的第9版為藍(lán)本,希望為讀者提供一本強調(diào)當(dāng)代操作系統(tǒng)基本概念的教科書。通過關(guān)注基本概念,我們相信,學(xué)生能夠更輕松、更快速地掌握現(xiàn)代操作系統(tǒng)的基本特征。 為了做到這一點,本書刪減了《操作系統(tǒng)概念》第9版的如下內(nèi)容: 刪除了深入討論死鎖的第7章,但是在第5章中概述了死鎖。 刪除了第17章“Windows 7”。 刪除了第18章“有影響的操作系統(tǒng)”。 如果你希望更全面地學(xué)習(xí)操作系統(tǒng),則可以參閱《操作系統(tǒng)概念》第9版。下面介紹本書所做的更新。 第2版在編寫本書第2版時,我們考慮了影響操作系統(tǒng)的兩個重要領(lǐng)域的新發(fā)展: 多核系統(tǒng)移動計算為了強調(diào)這兩個重要領(lǐng)域的新發(fā)展,我們在新版本中融入了相關(guān)討論。另外,我們幾乎重寫了每章內(nèi)容以反映最新變化,并且刪除不再有趣或有關(guān)的材料。 我們也做了大量調(diào)整,例如刪除了實時系統(tǒng)一章,但在其他章節(jié)中整合了對這些系統(tǒng)的適當(dāng)討論;我們還重新安排了存儲管理的相關(guān)章節(jié),并將進程同步放在進程調(diào)度之前。大多數(shù)調(diào)整都是基于我們講授操作系統(tǒng)課程的經(jīng)驗。 下面簡要描述各章的主要修改: 第1章,導(dǎo)論,包括關(guān)于多處理器和多核系統(tǒng)以及內(nèi)核數(shù)據(jù)結(jié)構(gòu)的新內(nèi)容。此外,計算環(huán)境的討論現(xiàn)在包括移動系統(tǒng)和云計算。我們還增加了對實時系統(tǒng)的概述。 第2章,操作系統(tǒng)結(jié)構(gòu),增加了移動設(shè)備(包括iOS和Android)用戶界面的討論,并擴展了Mac OS X(一種混合系統(tǒng))的討論。 第3章,進程,現(xiàn)在包括移動操作系統(tǒng)的多任務(wù)討論、Google Chrome瀏覽器的多進程模型支持以及UNIX的僵尸和孤兒進程。 第4章,線程,擴展了并行性和阿姆達爾定律的相關(guān)內(nèi)容,也提供了關(guān)于隱式線程的小節(jié),包括OpenMP和Apple的Grand Central Dispatch。 第5章,進程同步,增加了互斥鎖、OpenMP以及函數(shù)式語言的同步討論。 第6章,CPU調(diào)度,增加了Linux CFS調(diào)度器和Windows用戶模式調(diào)度,還整合了實時調(diào)度算法的討論。 第7章,內(nèi)存,增加了移動系統(tǒng)以及Intel 32位和64位架構(gòu)的內(nèi)存交換的討論,還增加新的一節(jié)討論ARM架構(gòu)。 第8章,虛擬內(nèi)存,更新了內(nèi)核內(nèi)存管理,以包括Linux SLUB和SLOB內(nèi)存分配器。 第9章,大容量存儲結(jié)構(gòu),增加了固態(tài)磁盤的討論。 第10章,文件系統(tǒng)接口,根據(jù)當(dāng)前技術(shù)發(fā)展進行了更新。 第11章,文件系統(tǒng)實現(xiàn),根據(jù)當(dāng)前技術(shù)發(fā)展進行了更新。 第12章,I/O系統(tǒng),更新了技術(shù)與性能參數(shù),擴展了同步/異步和阻塞/非阻塞I/O的討論,并增加了向量I/O的內(nèi)容。 第13章,保護,沒有重大變化。 第14章,安全,采用現(xiàn)代符號修改了密碼學(xué)的相關(guān)內(nèi)容,并改進了對各種加密方法及其用途的描述,還增加了Windows 7的安全討論。 第15章,Linux系統(tǒng),增加了Linux 3.2內(nèi)核的討論。 編程環(huán)境本書使用許多操作系統(tǒng)的實際示例來說明操作系統(tǒng)的基本概念。雖然主要關(guān)注Linux和Microsoft Windows,但是我們也參考各種版本的UNIX(包括Solaris、BSD和Mac OS X)。 本書還提供了用C和Java編寫的許多程序示例。這些程序可運行于如下編程環(huán)境: POSIX。POSIX(Portable Operating System Interface,可移植操作系統(tǒng)接口)為一套標(biāo)準(zhǔn),主要用于基于UNIX的操作系統(tǒng)。雖然Windows系統(tǒng)也可以運行一些POSIX程序,但是我們的POSIX討論主要關(guān)注UNIX和Linux系統(tǒng)。POSIX兼容系統(tǒng)必須實現(xiàn)POSIX核心標(biāo)準(zhǔn)(POSIX.1),Linux、Solaris和Mac OS X都是POSIX兼容系統(tǒng)的例子。POSIX還定義了多個擴展標(biāo)準(zhǔn),包括實時擴展(POSIX1.b)和線程庫擴展(POSIX1.c,常稱為Pthreads)。我們提供了多個用C編寫的程序示例,以說明POSIX基本API、Pthreads和實時編程擴展。這些程序示例采用gcc 4.0編譯器,在Linux 2.6和Linux 3.2系統(tǒng)、Mac OS X 10.7和Solaris 10上進行了測試。 Java。Java是一種應(yīng)用廣泛的編程語言,具有豐富的API以及對線程創(chuàng)建與管理的內(nèi)置語言支持。Java程序可運行在支持JVM(Java Virtual Machine,Java虛擬機)的任何操作系統(tǒng)上。我們采用Java程序來說明各種操作系統(tǒng)和網(wǎng)絡(luò)概念,并采用Java 1.6 JVM來測試。 Windows系統(tǒng)。Windows系統(tǒng)的主要編程環(huán)境是Windows API,它提供了一整套函數(shù)來管理進程、線程、內(nèi)存和外設(shè)。我們提供多個C程序來說明如何使用這種API。這些程序在Windows XP和Windows 7上進行了測試。 我們選擇了這三個編程環(huán)境,因為我們相信它們最能代表兩個受歡迎的操作系統(tǒng)模型,即Windows和UNIX/Linux,以及應(yīng)用廣泛的Java環(huán)境。大多數(shù)程序示例都是用C編寫的,希望讀者能夠熟悉C語言。熟悉C語言和Java語言的讀者,應(yīng)該很容易理解本書的大多數(shù)程序。 在有些情況下,如線程創(chuàng)建,我們使用所有三個編程環(huán)境來說明特定概念,以便讀者在處理相同任務(wù)時可以比較三種不同的庫。在其他情況下,我們可能只使用一種API來演示概念。例如,我們只使用POSIX API來說明共享內(nèi)存,使用Java API來解釋TCP/IP的套接字編程。 Linux虛擬機為了幫助學(xué)生更好地學(xué)習(xí)Linux系統(tǒng),我們提供了Linux虛擬機及Linux源代碼,可從本書支持網(wǎng)站(www.os-book.com)下載。該虛擬機還包括帶有編譯器和編輯器的gcc開發(fā)環(huán)境。本書的大部分編程作業(yè)可以在此虛擬機上完成,但是需要Java或Windows API的作業(yè)除外。 我們還提供了三個編程項目,以便通過內(nèi)核模塊修改Linux內(nèi)核: 添加基本內(nèi)核模塊到Linux內(nèi)核。 添加使用各種內(nèi)核數(shù)據(jù)結(jié)構(gòu)的內(nèi)核模塊。 添加迭代Linux系統(tǒng)任務(wù)的內(nèi)核模塊。 我們打算不斷在支持網(wǎng)站上補充額外的內(nèi)核模塊作業(yè)。 支持網(wǎng)站本書支持網(wǎng)站www.os-book.com包括以下資源: Linux虛擬機C與Java源代碼教學(xué)大綱樣例PPT插圖集FreeBSD和Mach的案例研究各章的復(fù)習(xí)題實踐題答案學(xué)生學(xué)習(xí)指南勘誤表教師注意事項在本書網(wǎng)站上,我們提供多個教學(xué)大綱樣例,用于采用本書的各種初級與高級課程。作為一般規(guī)律,我們鼓勵教師按章節(jié)順序進行教學(xué),因為這會提供最透徹的操作系統(tǒng)研究路線。不過,通過大綱樣例,教師可以選擇不同的章節(jié)順序(或章節(jié)內(nèi)容)。 本版添加了60多道新的習(xí)題以及20多個新的編程題和編程項目。大多數(shù)新的編程作業(yè)涉及進程、線程、進程同步和內(nèi)存管理。有些涉及添加內(nèi)核模塊到Linux系統(tǒng),這可以采用本書附帶的Linux虛擬機或其他適當(dāng)?shù)腖inux發(fā)行版來完成。 對于采用本書來講授操作系統(tǒng)的教師,可以獲得每章復(fù)習(xí)題、習(xí)題和編程題的答案。要獲得這些補充材料,請聯(lián)系當(dāng)?shù)氐腏ohn Wiley & Sons銷售代表。 學(xué)生注意事項我們鼓勵你利用好每章末尾的復(fù)習(xí)題和實踐題,這些題目的答案可從網(wǎng)站www.os-book.com下載。我們也鼓勵你閱讀由我們的一位學(xué)生準(zhǔn)備的學(xué)生學(xué)習(xí)指南。最后,對于不熟悉UNIX和Linux系統(tǒng)的學(xué)生,建議你下載并安裝支持網(wǎng)站的Linux虛擬機。這不僅為你提供了新的計算體驗,而且Linux的開放源碼能幫助你輕松分析這個流行操作系統(tǒng)的內(nèi)部細(xì)節(jié)。 祝你在學(xué)習(xí)操作系統(tǒng)的旅程中一切順利。 聯(lián)系我們我們努力消除本書的錯誤。然而,像新版的軟件一樣,錯誤幾乎肯定存在。本書的網(wǎng)站提供了最新的勘誤表。如果你能通知我們尚未出現(xiàn)在最新勘誤表中的任何錯誤或遺漏,我們將不勝感激。 我們很樂意收到關(guān)于本書的改進建議。我們也歡迎任何可能對其他讀者有用的材料,如編程題、項目建議、在線實驗室和教程以及教學(xué)建議等。可發(fā)送郵件到os-book-authors@cs.yale.edu。 致謝本書源自以前的多個版本,其中前三個版本是與James Peterson合著的。幫助完成以前版本的人員包括:Hamid Arabnia、Rida Bazzi、Randy Bentson、David Black、Joseph Boykin、Jeff Brum鹐ld、Gael Buckley、Roy Campbell、P. C. Capon、John Carpenter、Gil Carrick、Thomas Casavant、Bart Childs、Ajoy Kumar Datta、Joe Deck、Sudarshan K. Dhall、Thomas Doeppner、Caleb Drake、M. Racsit Eskiciolu、Hans Flack、Robert Fowler、G. Scott Graham、Richard Guy、Max Hailperin、Rebecca Hartman、Wayne Hathaway、Christopher Haynes、Don Heller、Bruce Hillyer、Mark Holliday、Dean Hougen、Michael Huang、Ahmed Kamel、Morty Kewstel、Richard Kieburtz、Carol Kroll、Morty Kwestel、Thomas LeBlanc、John Leggett、Jerrold Leichter、Ted Leung、Gary Lippman、Carolyn Miller、Michael Molloy、Euripides Montagne、Yoichi Muraoka、Jim M. Ng、Banu Ozden、Ed Posnak、Boris Putanec、Charles Qualline、John Quarterman、Mike Reiter、Gustavo Rodriguez-Rivera、Carolyn J. C. Schauble、Thomas P. Skinner、Yannis Smaragdakis、Jesse St. Laurent、John Stankovic、Adam Stauffer、Ste-ven Stepanek、John Sterling、Hal Stern、Louis Stevens、Pete Thomas、David Umbaugh、Steve Vinoski、Tommy Wagner、Larry L. Wear、John Werth、James M. Westall、J. S. Weston與Yang Xiang。 Robert Love更新了第15章和全書Linux的描述,并回答了Android相關(guān)的許多問題。Jonathan Katz貢獻了第14章。Salahuddin Khan更新了14.9節(jié),以提供新的Windows 7安全功能。 第15章來自Stephen Tweedie的未發(fā)表手稿。Arvind Krishnamurthy提供了一些習(xí)題及其解答。Andrew DeNicola準(zhǔn)備了我們網(wǎng)站上的學(xué)生學(xué)習(xí)指南。Marilyn Turnamian提供了一些幻燈片。 Mike Shapiro、Bryan Cantrill和Jim Mauro回答了多個Solaris相關(guān)的問題。Sun Micro-systems的Bryan Cantrill提供了有關(guān)ZFS的幫助。Josh Dees和Rob Reynolds提供了微軟.NET的描述。John Trono(Saint Michael學(xué)院)提供了POSIX消息隊列的項目。 Judi Paige幫助準(zhǔn)備了插圖和幻燈片。Thomas Gagne為本版準(zhǔn)備了新的插圖。Mark Wogahn確保了生成本書的軟件(LATEX和字體)可以正常工作。Ranjan Kumar Meher重寫了用于生成本書的一些LATEX軟件。 執(zhí)行編輯Beth Lang Golub在我們編寫本書時提供了專家指導(dǎo)。在Katherine Willis的協(xié)助下,她很好地管理了項目細(xì)節(jié)。高級制作編輯Joyce Poh處理了所有的成書細(xì)節(jié)。 Susan Cyr為封面繪畫師,Madelyn Lesure為封面設(shè)計師。Beverly Peavler復(fù)制了手稿。Katrina Avery為自由校對員,WordCo,Inc.為自由索引公司。 Abraham Silberschatz, New Haven, CT, 2013Peter Baer Galvin, Boston, MA, 2013Greg Gagne, Salt Lake City, UT, 2013
---作者簡介---
亞伯拉罕·西爾伯沙茨(Abraham Silberschatz) 計算機科學(xué)家,ACM、IEEE和AAAS會士,F(xiàn)任耶魯大學(xué)計算機科學(xué)系教授,之前曾任貝爾實驗室信息科學(xué)研究中心副主管。除本書外,他還是知名教材《數(shù)據(jù)庫系統(tǒng)概念》的作者之一。 彼得·B. 高爾文(Peter B. Galvin) 現(xiàn)任Pluribus Networks首席解決方案架構(gòu)師,之前曾任系統(tǒng)集成商Corporate Technologies的首席技術(shù)官,還曾在波士頓大學(xué)擔(dān)任講師。 格雷格·加涅(Greg Gagne) 威斯敏斯特學(xué)院計算機科學(xué)系主任,操作系統(tǒng)、計算機網(wǎng)絡(luò)、并行編程和軟件工程方面的專家。 ---譯者簡介--- 鄭扣根,浙江大學(xué)計算機學(xué)院教授、博士生導(dǎo)師。1994年起于浙江大學(xué)任教至今,長期從事操作系統(tǒng)、計算理論、形式化方法、計算機網(wǎng)絡(luò)等方面的教學(xué)和科研工作。
Operating System Concepts Essentials, Second Edition
出版者的話 譯者序 前言 第一部分 概論 第1章 導(dǎo)論 2 1.1 操作系統(tǒng)的功能 2 1.1.1 用戶視角 2 1.1.2 系統(tǒng)視角 3 1.1.3 操作系統(tǒng)的定義 4 1.2 計算機系統(tǒng)的組成 4 1.2.1 計算機系統(tǒng)的運行 5 1.2.2 存儲結(jié)構(gòu) 6 1.2.3 I/O結(jié)構(gòu) 8 1.3 計算機系統(tǒng)的體系結(jié)構(gòu) 9 1.3.1 單處理器系統(tǒng) 9 1.3.2 多處理器系統(tǒng) 10 1.3.3 集群系統(tǒng) 12 1.4 操作系統(tǒng)的結(jié)構(gòu) 13 1.5 操作系統(tǒng)的執(zhí)行 14 1.5.1 雙重模式與多重模式的執(zhí)行 15 1.5.2 定時器 16 1.6 進程管理 17 1.7 內(nèi)存管理 17 1.8 存儲管理 18 1.8.1 文件系統(tǒng)管理 18 1.8.2 大容量存儲器管理 19 1.8.3 高速緩存 19 1.8.4 I/O系統(tǒng) 21 1.9 保護與安全 21 1.10 內(nèi)核數(shù)據(jù)結(jié)構(gòu) 22 1.10.1 列表、堆棧及隊列 22 1.10.2 樹 23 1.10.3 哈希函數(shù)與哈希表 23 1.10.4 位圖 24 1.11 計算環(huán)境 24 1.11.1 傳統(tǒng)計算 24 1.11.2 移動計算 25 1.11.3 分布計算 26 1.11.4 客戶機-服務(wù)器計算 26 1.11.5 對等計算 27 1.11.6 虛擬化 28 1.11.7 云計算 29 1.11.8 實時嵌入式系統(tǒng) 29 1.12 開源操作系統(tǒng) 30 1.12.1 歷史 31 1.12.2 Linux 31 1.12.3 BSD UNIX 32 1.12.4 Solaris 32 1.12.5 用作學(xué)習(xí)的開源操作系統(tǒng) 33 1.13 小結(jié) 33 復(fù)習(xí)題 35 實踐題 35 習(xí)題 35 推薦讀物 36 參考文獻 37 第2章 操作系統(tǒng)結(jié)構(gòu) 38 2.1 操作系統(tǒng)的服務(wù) 38 2.2 用戶與操作系統(tǒng)的界面 40 2.2.1 命令解釋程序 40 2.2.2 圖形用戶界面 41 2.2.3 界面的選擇 42 2.3 系統(tǒng)調(diào)用 43 2.4 系統(tǒng)調(diào)用的類型 46 2.4.1 進程控制 46 2.4.2 文件管理 49 2.4.3 設(shè)備管理 50 2.4.4 信息維護 50 2.4.5 通信 50 2.4.6 保護 51 2.5 系統(tǒng)程序 51 2.6 操作系統(tǒng)的設(shè)計與實現(xiàn) 52 2.6.1 設(shè)計目標(biāo) 52 2.6.2 機制與策略 53 2.6.3 實現(xiàn) 53 2.7 操作系統(tǒng)的結(jié)構(gòu) 54 2.7.1 簡單結(jié)構(gòu) 54 2.7.2 分層方法 55 2.7.3 微內(nèi)核 56 2.7.4 模塊 57 2.7.5 混合系統(tǒng) 58 2.8 操作系統(tǒng)的調(diào)試 60 2.8.1 故障分析 60 2.8.2 性能優(yōu)化 60 2.8.3 DTrace 61 2.9 操作系統(tǒng)的生成 63 2.10 系統(tǒng)引導(dǎo) 64 2.11 小結(jié) 64 復(fù)習(xí)題 65 實踐題 65 習(xí)題 65 編程題 66 編程項目 66 推薦讀物 69 參考文獻 70 第二部分 進程管理 第3章 進程 72 3.1 進程概念 72 3.1.1 進程 72 3.1.2 進程狀態(tài) 73 3.1.3 進程控制塊 73 3.1.4 線程 74 3.2 進程調(diào)度 75 3.2.1 調(diào)度隊列 75 3.2.2 調(diào)度程序 77 3.2.3 上下文切換 78 3.3 進程運行 79 3.3.1 進程創(chuàng)建 79 3.3.2 進程終止 82 3.4 進程間通信 83 3.4.1 共享內(nèi)存系統(tǒng) 85 3.4.2 消息傳遞系統(tǒng) 86 3.5 IPC系統(tǒng)例子 89 3.5.1 例子:POSIX共享內(nèi)存 89 3.5.2 例子:Mach 91 3.5.3 例子:Windows 92 3.6 客戶機/服務(wù)器通信 93 3.6.1 套接字 93 3.6.2 遠(yuǎn)程過程調(diào)用 96 3.6.3 管道 98 3.7 小結(jié) 102 復(fù)習(xí)題 103 實踐題 103 習(xí)題 104 編程題 105 編程項目 107 推薦讀物 110 參考文獻 111 第4章 線程 112 4.1 概述 112 4.1.1 動機 112 4.1.2 優(yōu)點 113 4.2 多核編程 114 4.2.1 編程挑戰(zhàn) 115 4.2.2 并行類型 115 4.3 多線程模型 116 4.3.1 多對一模型 116 4.3.2 一對一模型 116 4.3.3 多對多模型 116 4.4 線程庫 117 4.4.1 Pthreads 118 4.4.2 Windows線程 119 4.4.3 Java線程 121 4.5 隱式多線程 122 4.5.1 線程池 123 4.5.2 OpenMP 124 4.5.3 大中央調(diào)度 125 4.5.4 其他方法 125 4.6 多線程問題 125 4.6.1 系統(tǒng)調(diào)用fork()和exec() 125 4.6.2 信號處理 126 4.6.3 線程撤銷 127 4.6.4 線程本地存儲 128 4.6.5 調(diào)度程序激活 128 4.7 操作系統(tǒng)例子 129 4.7.1 Windows線程 129 4.7.2 Linux線程 130 4.8 小結(jié) 131 復(fù)習(xí)題 131 實踐題 131 習(xí)題 131 編程題 133 編程項目 135 推薦讀物 136 參考文獻 136 第5章 進程同步 138 5.1 背景 138 5.2 臨界區(qū)問題 140 5.3 Peterson解決方案 141 5.4 硬件同步 142 5.5 互斥鎖 144 5.6 信號量 144 5.6.1 信號量的使用 145 5.6.2 信號量的實現(xiàn) 145 5.6.3 死鎖與饑餓 147 5.6.4 優(yōu)先級的反轉(zhuǎn) 147 5.7 經(jīng)典同步問題 148 5.7.1 有界緩沖問題 148 5.7.2 讀者-作者問題 149 5.7.3 哲學(xué)家就餐問題 150 5.8 管程 151 5.8.1 使用方法 152 5.8.2 哲學(xué)家就餐問題的管程解決方案 153 5.8.3 采用信號量的管程實現(xiàn) 154 5.8.4 管程內(nèi)的進程重啟 155 5.9 同步例子 156 5.9.1 Windows同步 156 5.9.2 Linux同步 157 5.9.3 Solaris同步 158 5.9.4 Pthreads同步 159 5.10 替代方法 160 5.10.1 事務(wù)內(nèi)存 161 5.10.2 OpenMP 162
你還可能感興趣
我要評論
|