關(guān)于我們
書(shū)單推薦
新書(shū)推薦
|
操作系統(tǒng)概念精要(原書(shū)第2版)
本書(shū)是經(jīng)典教材《操作系統(tǒng)概念》的精簡(jiǎn)版,強(qiáng)調(diào)基礎(chǔ)概念,更適合本科階段的教學(xué)。全書(shū)共六部分,不僅詳細(xì)講解了進(jìn)程管理、內(nèi)存管理、存儲(chǔ)管理、保護(hù)與安全等概念,而且涵蓋重要的理論結(jié)果和案例研究,并且給出了供讀者深入學(xué)習(xí)的推薦讀物。這一版新增了多核系統(tǒng)和移動(dòng)計(jì)算的內(nèi)容,每一章都融入了新的技術(shù)進(jìn)展,并且更新了習(xí)題和編程項(xiàng)目。本書(shū)既適合高等院校計(jì)算機(jī)相關(guān)專(zhuān)業(yè)的學(xué)生學(xué)習(xí),也是專(zhuān)業(yè)技術(shù)人員的有益參考。
前 言O(shè)perating System Concepts Essentials, Second Edition其中的基本概念仍然比較清晰,這些概念就是本書(shū)討論的基礎(chǔ)。
本書(shū)是面向操作系統(tǒng)導(dǎo)論課程的教科書(shū),適用于大三、大四學(xué)生和一年級(jí)研究生,同時(shí)也可供工程技術(shù)人員參考。本書(shū)清晰地描述了操作系統(tǒng)的概念。作為先決條件,我們假設(shè)讀者熟悉基本數(shù)據(jù)結(jié)構(gòu)、計(jì)算機(jī)組成和一種高級(jí)語(yǔ)言(如C或Java)。本書(shū)第1章包括了學(xué)習(xí)操作系統(tǒng)所需的硬件知識(shí),還包括大多數(shù)操作系統(tǒng)普遍使用的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)。代碼示例主要使用C和Java,不過(guò),即使讀者不具有這些語(yǔ)言的全部知識(shí)也能理解這些算法。 本書(shū)不僅直觀(guān)描述了概念,而且包括重要的理論結(jié)果,但是省略了大部分的形式化證明。每章結(jié)尾的推薦讀物給出了相關(guān)研究論文,其中有的首次提出或證明了這些理論結(jié)果,有的提供深入閱讀的最新材料。本書(shū)通過(guò)圖形和舉例來(lái)代替證明,以說(shuō)明為什么有關(guān)結(jié)果是真實(shí)有效的。 本書(shū)描述的基本概念和算法通常用于商用和開(kāi)源的操作系統(tǒng)。我們的目標(biāo)是,按照通用的(而非特定的)操作系統(tǒng)來(lái)描述這些概念和算法。另外,我們提供了最受歡迎和最具創(chuàng)新的操作系統(tǒng)的大量例子,包括Linux、Microsoft Windows、Apple Mac OS X和Solaris。我們還給出了兩個(gè)主要移動(dòng)操作系統(tǒng)(Android和iOS)的示例。 本書(shū)的編寫(xiě)綜合了我們從事操作系統(tǒng)教學(xué)的多年經(jīng)驗(yàn)以及IEEE計(jì)算機(jī)協(xié)會(huì)和ACM共同出版的課程指南。另外,還考慮了多位審稿人員提供的反饋意見(jiàn),以及以前版本讀者和學(xué)生的許多意見(jiàn)和建議。 本書(shū)內(nèi)容本書(shū)包括六大部分: 概論。第1章和第2章解釋了操作系統(tǒng)是什么,它們能做什么,以及它們是如何設(shè)計(jì)與構(gòu)造的。這一部分討論了操作系統(tǒng)的常見(jiàn)功能是什么,以及操作系統(tǒng)能為用戶(hù)提供什么。我們不僅討論P(yáng)C和服務(wù)器的傳統(tǒng)操作系統(tǒng),而且討論移動(dòng)設(shè)備的操作系統(tǒng)。描述主要以啟發(fā)和解釋為主,避免討論內(nèi)部實(shí)現(xiàn)細(xì)節(jié)。因此,這部分適合低年級(jí)學(xué)生或類(lèi)似讀者,以便了解操作系統(tǒng)是什么而無(wú)需關(guān)注內(nèi)部算法細(xì)節(jié)。 進(jìn)程管理。第3~6章描述了進(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)程),其余的是用戶(hù)進(jìn)程(執(zhí)行用戶(hù)代碼的進(jìn)程)。這一部分包括進(jìn)程調(diào)度、進(jìn)程間通信、進(jìn)程同步及死鎖處理等的方法,還包括線(xiàn)程分析以及多核系統(tǒng)和并行編程的有關(guān)分析。 內(nèi)存管理。第7章和第8章是關(guān)于進(jìn)程執(zhí)行期間的內(nèi)存管理的。為了改進(jìn)CPU的使用率及其對(duì)用戶(hù)的響應(yīng)速度,計(jì)算機(jī)必須在內(nèi)存中同時(shí)保存多個(gè)進(jìn)程。內(nèi)存管理具有很多不同方案,反映了內(nèi)存管理的各種方法;而特定算法的有效性取決于應(yīng)用情形。 存儲(chǔ)管理。第9~12章描述了現(xiàn)代計(jì)算機(jī)系統(tǒng)如何處理文件系統(tǒng)、大容量存儲(chǔ)和I/O。文件系統(tǒng)提供了一種機(jī)制,以對(duì)數(shù)據(jù)和程序進(jìn)行在線(xiàn)存儲(chǔ)與訪(fǎng)問(wèn)。這一部分描述了存儲(chǔ)管理的經(jīng)典內(nèi)部算法和結(jié)構(gòu),并且深入討論了這些算法,比如它們的特性、優(yōu)點(diǎn)和缺點(diǎn)。由于連到計(jì)算機(jī)的I/O設(shè)備種類(lèi)如此之多,操作系統(tǒng)需要為應(yīng)用程序提供大量的功能,以控制這些設(shè)備的方方面面。這一部分深入討論了I/O系統(tǒng),包括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è)備的性能問(wèn)題。 保護(hù)與安全。第13章和第14章討論了計(jì)算機(jī)系統(tǒng)保護(hù)與安全的必需機(jī)制。操作系統(tǒng)的進(jìn)程活動(dòng)必須互相保護(hù),為此,我們必須確保只有獲得操作系統(tǒng)適當(dāng)授權(quán)的進(jìn)程才能使用系統(tǒng)的文件、內(nèi)存、CPU和其他資源。保護(hù)是一種機(jī)制,用于控制程序、進(jìn)程和用戶(hù)對(duì)計(jì)算機(jī)系統(tǒng)資源的訪(fǎng)問(wèn),這種機(jī)制必須提供指定控制和實(shí)施控制的手段。安全機(jī)制保護(hù)系統(tǒng)存儲(chǔ)的信息(數(shù)據(jù)和代碼)的完整性和計(jì)算機(jī)的物理資源,從而避免未經(jīng)授權(quán)的訪(fǎng)問(wèn)、惡意破壞或修改以及意外引入的不一致。 案例研究。本書(shū)的第15章詳細(xì)研究了Linux操作系統(tǒng)的實(shí)際案例。雖然本書(shū)前面章節(jié)也有Linux的討論,但是案例研究提供了更多細(xì)節(jié)。 操作系統(tǒng)概念精要本書(shū)以2012年《操作系統(tǒng)概念》的第9版為藍(lán)本,希望為讀者提供一本強(qiáng)調(diào)當(dāng)代操作系統(tǒng)基本概念的教科書(shū)。通過(guò)關(guān)注基本概念,我們相信,學(xué)生能夠更輕松、更快速地掌握現(xiàn)代操作系統(tǒng)的基本特征。 為了做到這一點(diǎn),本書(shū)刪減了《操作系統(tǒng)概念》第9版的如下內(nèi)容: 刪除了深入討論死鎖的第7章,但是在第5章中概述了死鎖。 刪除了第17章“Windows 7”。 刪除了第18章“有影響的操作系統(tǒng)”。 如果你希望更全面地學(xué)習(xí)操作系統(tǒng),則可以參閱《操作系統(tǒng)概念》第9版。下面介紹本書(shū)所做的更新。 第2版在編寫(xiě)本書(shū)第2版時(shí),我們考慮了影響操作系統(tǒng)的兩個(gè)重要領(lǐng)域的新發(fā)展: 多核系統(tǒng)移動(dòng)計(jì)算為了強(qiáng)調(diào)這兩個(gè)重要領(lǐng)域的新發(fā)展,我們?cè)谛掳姹局腥谌肓讼嚓P(guān)討論。另外,我們幾乎重寫(xiě)了每章內(nèi)容以反映最新變化,并且刪除不再有趣或有關(guān)的材料。 我們也做了大量調(diào)整,例如刪除了實(shí)時(shí)系統(tǒng)一章,但在其他章節(jié)中整合了對(duì)這些系統(tǒng)的適當(dāng)討論;我們還重新安排了存儲(chǔ)管理的相關(guān)章節(jié),并將進(jìn)程同步放在進(jìn)程調(diào)度之前。大多數(shù)調(diào)整都是基于我們講授操作系統(tǒng)課程的經(jīng)驗(yàn)。 下面簡(jiǎn)要描述各章的主要修改: 第1章,導(dǎo)論,包括關(guān)于多處理器和多核系統(tǒng)以及內(nèi)核數(shù)據(jù)結(jié)構(gòu)的新內(nèi)容。此外,計(jì)算環(huán)境的討論現(xiàn)在包括移動(dòng)系統(tǒng)和云計(jì)算。我們還增加了對(duì)實(shí)時(shí)系統(tǒng)的概述。 第2章,操作系統(tǒng)結(jié)構(gòu),增加了移動(dòng)設(shè)備(包括iOS和Android)用戶(hù)界面的討論,并擴(kuò)展了Mac OS X(一種混合系統(tǒng))的討論。 第3章,進(jìn)程,現(xiàn)在包括移動(dòng)操作系統(tǒng)的多任務(wù)討論、Google Chrome瀏覽器的多進(jìn)程模型支持以及UNIX的僵尸和孤兒進(jìn)程。 第4章,線(xiàn)程,擴(kuò)展了并行性和阿姆達(dá)爾定律的相關(guān)內(nèi)容,也提供了關(guān)于隱式線(xiàn)程的小節(jié),包括OpenMP和Apple的Grand Central Dispatch。 第5章,進(jìn)程同步,增加了互斥鎖、OpenMP以及函數(shù)式語(yǔ)言的同步討論。 第6章,CPU調(diào)度,增加了Linux CFS調(diào)度器和Windows用戶(hù)模式調(diào)度,還整合了實(shí)時(shí)調(diào)度算法的討論。 第7章,內(nèi)存,增加了移動(dòng)系統(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章,大容量存儲(chǔ)結(jié)構(gòu),增加了固態(tài)磁盤(pán)的討論。 第10章,文件系統(tǒng)接口,根據(jù)當(dāng)前技術(shù)發(fā)展進(jìn)行了更新。 第11章,文件系統(tǒng)實(shí)現(xiàn),根據(jù)當(dāng)前技術(shù)發(fā)展進(jìn)行了更新。 第12章,I/O系統(tǒng),更新了技術(shù)與性能參數(shù),擴(kuò)展了同步/異步和阻塞/非阻塞I/O的討論,并增加了向量I/O的內(nèi)容。 第13章,保護(hù),沒(méi)有重大變化。 第14章,安全,采用現(xiàn)代符號(hào)修改了密碼學(xué)的相關(guān)內(nèi)容,并改進(jìn)了對(duì)各種加密方法及其用途的描述,還增加了Windows 7的安全討論。 第15章,Linux系統(tǒng),增加了Linux 3.2內(nèi)核的討論。 編程環(huán)境本書(shū)使用許多操作系統(tǒng)的實(shí)際示例來(lái)說(shuō)明操作系統(tǒng)的基本概念。雖然主要關(guān)注Linux和Microsoft Windows,但是我們也參考各種版本的UNIX(包括Solaris、BSD和Mac OS X)。 本書(shū)還提供了用C和Java編寫(xiě)的許多程序示例。這些程序可運(yùn)行于如下編程環(huán)境: POSIX。POSIX(Portable Operating System Interface,可移植操作系統(tǒng)接口)為一套標(biāo)準(zhǔn),主要用于基于UNIX的操作系統(tǒng)。雖然Windows系統(tǒng)也可以運(yùn)行一些POSIX程序,但是我們的POSIX討論主要關(guān)注UNIX和Linux系統(tǒng)。POSIX兼容系統(tǒng)必須實(shí)現(xiàn)POSIX核心標(biāo)準(zhǔn)(POSIX.1),Linux、Solaris和Mac OS X都是POSIX兼容系統(tǒng)的例子。POSIX還定義了多個(gè)擴(kuò)展標(biāo)準(zhǔn),包括實(shí)時(shí)擴(kuò)展(POSIX1.b)和線(xiàn)程庫(kù)擴(kuò)展(POSIX1.c,常稱(chēng)為Pthreads)。我們提供了多個(gè)用C編寫(xiě)的程序示例,以說(shuō)明POSIX基本API、Pthreads和實(shí)時(shí)編程擴(kuò)展。這些程序示例采用gcc 4.0編譯器,在Linux 2.6和Linux 3.2系統(tǒng)、Mac OS X 10.7和Solaris 10上進(jìn)行了測(cè)試。 Java。Java是一種應(yīng)用廣泛的編程語(yǔ)言,具有豐富的API以及對(duì)線(xiàn)程創(chuàng)建與管理的內(nèi)置語(yǔ)言支持。Java程序可運(yùn)行在支持JVM(Java Virtual Machine,Java虛擬機(jī))的任何操作系統(tǒng)上。我們采用Java程序來(lái)說(shuō)明各種操作系統(tǒng)和網(wǎng)絡(luò)概念,并采用Java 1.6 JVM來(lái)測(cè)試。 Windows系統(tǒng)。Windows系統(tǒng)的主要編程環(huán)境是Windows API,它提供了一整套函數(shù)來(lái)管理進(jìn)程、線(xiàn)程、內(nèi)存和外設(shè)。我們提供多個(gè)C程序來(lái)說(shuō)明如何使用這種API。這些程序在Windows XP和Windows 7上進(jìn)行了測(cè)試。 我們選擇了這三個(gè)編程環(huán)境,因?yàn)槲覀兿嘈潘鼈冏钅艽韮蓚(gè)受歡迎的操作系統(tǒng)模型,即Windows和UNIX/Linux,以及應(yīng)用廣泛的Java環(huán)境。大多數(shù)程序示例都是用C編寫(xiě)的,希望讀者能夠熟悉C語(yǔ)言。熟悉C語(yǔ)言和Java語(yǔ)言的讀者,應(yīng)該很容易理解本書(shū)的大多數(shù)程序。 在有些情況下,如線(xiàn)程創(chuàng)建,我們使用所有三個(gè)編程環(huán)境來(lái)說(shuō)明特定概念,以便讀者在處理相同任務(wù)時(shí)可以比較三種不同的庫(kù)。在其他情況下,我們可能只使用一種API來(lái)演示概念。例如,我們只使用POSIX API來(lái)說(shuō)明共享內(nèi)存,使用Java API來(lái)解釋TCP/IP的套接字編程。 Linux虛擬機(jī)為了幫助學(xué)生更好地學(xué)習(xí)Linux系統(tǒng),我們提供了Linux虛擬機(jī)及Linux源代碼,可從本書(shū)支持網(wǎng)站(www.os-book.com)下載。該虛擬機(jī)還包括帶有編譯器和編輯器的gcc開(kāi)發(fā)環(huán)境。本書(shū)的大部分編程作業(yè)可以在此虛擬機(jī)上完成,但是需要Java或Windows API的作業(yè)除外。 我們還提供了三個(gè)編程項(xiàng)目,以便通過(guò)內(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)站上補(bǔ)充額外的內(nèi)核模塊作業(yè)。 支持網(wǎng)站本書(shū)支持網(wǎng)站www.os-book.com包括以下資源: Linux虛擬機(jī)C與Java源代碼教學(xué)大綱樣例PPT插圖集FreeBSD和Mach的案例研究各章的復(fù)習(xí)題實(shí)踐題答案學(xué)生學(xué)習(xí)指南勘誤表教師注意事項(xiàng)在本書(shū)網(wǎng)站上,我們提供多個(gè)教學(xué)大綱樣例,用于采用本書(shū)的各種初級(jí)與高級(jí)課程。作為一般規(guī)律,我們鼓勵(lì)教師按章節(jié)順序進(jìn)行教學(xué),因?yàn)檫@會(huì)提供最透徹的操作系統(tǒng)研究路線(xiàn)。不過(guò),通過(guò)大綱樣例,教師可以選擇不同的章節(jié)順序(或章節(jié)內(nèi)容)。 本版添加了60多道新的習(xí)題以及20多個(gè)新的編程題和編程項(xiàng)目。大多數(shù)新的編程作業(yè)涉及進(jìn)程、線(xiàn)程、進(jìn)程同步和內(nèi)存管理。有些涉及添加內(nèi)核模塊到Linux系統(tǒng),這可以采用本書(shū)附帶的Linux虛擬機(jī)或其他適當(dāng)?shù)腖inux發(fā)行版來(lái)完成。 對(duì)于采用本書(shū)來(lái)講授操作系統(tǒng)的教師,可以獲得每章復(fù)習(xí)題、習(xí)題和編程題的答案。要獲得這些補(bǔ)充材料,請(qǐng)聯(lián)系當(dāng)?shù)氐腏ohn Wiley & Sons銷(xiāo)售代表。 學(xué)生注意事項(xiàng)我們鼓勵(lì)你利用好每章末尾的復(fù)習(xí)題和實(shí)踐題,這些題目的答案可從網(wǎng)站www.os-book.com下載。我們也鼓勵(lì)你閱讀由我們的一位學(xué)生準(zhǔn)備的學(xué)生學(xué)習(xí)指南。最后,對(duì)于不熟悉UNIX和Linux系統(tǒng)的學(xué)生,建議你下載并安裝支持網(wǎng)站的Linux虛擬機(jī)。這不僅為你提供了新的計(jì)算體驗(yàn),而且Linux的開(kāi)放源碼能幫助你輕松分析這個(gè)流行操作系統(tǒng)的內(nèi)部細(xì)節(jié)。 祝你在學(xué)習(xí)操作系統(tǒng)的旅程中一切順利。 聯(lián)系我們我們努力消除本書(shū)的錯(cuò)誤。然而,像新版的軟件一樣,錯(cuò)誤幾乎肯定存在。本書(shū)的網(wǎng)站提供了最新的勘誤表。如果你能通知我們尚未出現(xiàn)在最新勘誤表中的任何錯(cuò)誤或遺漏,我們將不勝感激。 我們很樂(lè)意收到關(guān)于本書(shū)的改進(jìn)建議。我們也歡迎任何可能對(duì)其他讀者有用的材料,如編程題、項(xiàng)目建議、在線(xiàn)實(shí)驗(yàn)室和教程以及教學(xué)建議等。可發(fā)送郵件到os-book-authors@cs.yale.edu。 致謝本書(shū)源自以前的多個(gè)版本,其中前三個(gè)版本是與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章和全書(shū)Linux的描述,并回答了Android相關(guān)的許多問(wèn)題。Jonathan Katz貢獻(xiàn)了第14章。Salahuddin Khan更新了14.9節(jié),以提供新的Windows 7安全功能。 第15章來(lái)自Stephen Tweedie的未發(fā)表手稿。Arvind Krishnamurthy提供了一些習(xí)題及其解答。Andrew DeNicola準(zhǔn)備了我們網(wǎng)站上的學(xué)生學(xué)習(xí)指南。Marilyn Turnamian提供了一些幻燈片。 Mike Shapiro、Bryan Cantrill和Jim Mauro回答了多個(gè)Solaris相關(guān)的問(wèn)題。Sun Micro-systems的Bryan Cantrill提供了有關(guān)ZFS的幫助。Josh Dees和Rob Reynolds提供了微軟.NET的描述。John Trono(Saint Michael學(xué)院)提供了POSIX消息隊(duì)列的項(xiàng)目。 Judi Paige幫助準(zhǔn)備了插圖和幻燈片。Thomas Gagne為本版準(zhǔn)備了新的插圖。Mark Wogahn確保了生成本書(shū)的軟件(LATEX和字體)可以正常工作。Ranjan Kumar Meher重寫(xiě)了用于生成本書(shū)的一些LATEX軟件。 執(zhí)行編輯Beth Lang Golub在我們編寫(xiě)本書(shū)時(shí)提供了專(zhuān)家指導(dǎo)。在Katherine Willis的協(xié)助下,她很好地管理了項(xiàng)目細(xì)節(jié)。高級(jí)制作編輯Joyce Poh處理了所有的成書(shū)細(xì)節(jié)。 Susan Cyr為封面繪畫(huà)師,Madelyn Lesure為封面設(shè)計(jì)師。Beverly Peavler復(fù)制了手稿。Katrina Avery為自由校對(duì)員,WordCo,Inc.為自由索引公司。 Abraham Silberschatz, New Haven, CT, 2013Peter Baer Galvin, Boston, MA, 2013Greg Gagne, Salt Lake City, UT, 2013
---作者簡(jiǎn)介---
亞伯拉罕·西爾伯沙茨(Abraham Silberschatz) 計(jì)算機(jī)科學(xué)家,ACM、IEEE和AAAS會(huì)士。現(xiàn)任耶魯大學(xué)計(jì)算機(jī)科學(xué)系教授,之前曾任貝爾實(shí)驗(yàn)室信息科學(xué)研究中心副主管。除本書(shū)外,他還是知名教材《數(shù)據(jù)庫(kù)系統(tǒng)概念》的作者之一。 彼得·B. 高爾文(Peter B. Galvin) 現(xiàn)任Pluribus Networks首席解決方案架構(gòu)師,之前曾任系統(tǒng)集成商Corporate Technologies的首席技術(shù)官,還曾在波士頓大學(xué)擔(dān)任講師。 格雷格·加涅(Greg Gagne) 威斯敏斯特學(xué)院計(jì)算機(jī)科學(xué)系主任,操作系統(tǒng)、計(jì)算機(jī)網(wǎng)絡(luò)、并行編程和軟件工程方面的專(zhuān)家。 ---譯者簡(jiǎn)介--- 鄭扣根,浙江大學(xué)計(jì)算機(jī)學(xué)院教授、博士生導(dǎo)師。1994年起于浙江大學(xué)任教至今,長(zhǎng)期從事操作系統(tǒng)、計(jì)算理論、形式化方法、計(jì)算機(jī)網(wǎng)絡(luò)等方面的教學(xué)和科研工作。
Operating System Concepts Essentials, Second Edition
出版者的話(huà) 譯者序 前言 第一部分 概論 第1章 導(dǎo)論 2 1.1 操作系統(tǒng)的功能 2 1.1.1 用戶(hù)視角 2 1.1.2 系統(tǒng)視角 3 1.1.3 操作系統(tǒng)的定義 4 1.2 計(jì)算機(jī)系統(tǒng)的組成 4 1.2.1 計(jì)算機(jī)系統(tǒng)的運(yùn)行 5 1.2.2 存儲(chǔ)結(jié)構(gòu) 6 1.2.3 I/O結(jié)構(gòu) 8 1.3 計(jì)算機(jī)系統(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 定時(shí)器 16 1.6 進(jìn)程管理 17 1.7 內(nèi)存管理 17 1.8 存儲(chǔ)管理 18 1.8.1 文件系統(tǒng)管理 18 1.8.2 大容量存儲(chǔ)器管理 19 1.8.3 高速緩存 19 1.8.4 I/O系統(tǒng) 21 1.9 保護(hù)與安全 21 1.10 內(nèi)核數(shù)據(jù)結(jié)構(gòu) 22 1.10.1 列表、堆棧及隊(duì)列 22 1.10.2 樹(shù) 23 1.10.3 哈希函數(shù)與哈希表 23 1.10.4 位圖 24 1.11 計(jì)算環(huán)境 24 1.11.1 傳統(tǒng)計(jì)算 24 1.11.2 移動(dòng)計(jì)算 25 1.11.3 分布計(jì)算 26 1.11.4 客戶(hù)機(jī)-服務(wù)器計(jì)算 26 1.11.5 對(duì)等計(jì)算 27 1.11.6 虛擬化 28 1.11.7 云計(jì)算 29 1.11.8 實(shí)時(shí)嵌入式系統(tǒng) 29 1.12 開(kāi)源操作系統(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í)的開(kāi)源操作系統(tǒng) 33 1.13 小結(jié) 33 復(fù)習(xí)題 35 實(shí)踐題 35 習(xí)題 35 推薦讀物 36 參考文獻(xiàn) 37 第2章 操作系統(tǒng)結(jié)構(gòu) 38 2.1 操作系統(tǒng)的服務(wù) 38 2.2 用戶(hù)與操作系統(tǒng)的界面 40 2.2.1 命令解釋程序 40 2.2.2 圖形用戶(hù)界面 41 2.2.3 界面的選擇 42 2.3 系統(tǒng)調(diào)用 43 2.4 系統(tǒng)調(diào)用的類(lèi)型 46 2.4.1 進(jìn)程控制 46 2.4.2 文件管理 49 2.4.3 設(shè)備管理 50 2.4.4 信息維護(hù) 50 2.4.5 通信 50 2.4.6 保護(hù) 51 2.5 系統(tǒng)程序 51 2.6 操作系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 52 2.6.1 設(shè)計(jì)目標(biāo) 52 2.6.2 機(jī)制與策略 53 2.6.3 實(shí)現(xiàn) 53 2.7 操作系統(tǒng)的結(jié)構(gòu) 54 2.7.1 簡(jiǎn)單結(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 實(shí)踐題 65 習(xí)題 65 編程題 66 編程項(xiàng)目 66 推薦讀物 69 參考文獻(xiàn) 70 第二部分 進(jìn)程管理 第3章 進(jìn)程 72 3.1 進(jìn)程概念 72 3.1.1 進(jìn)程 72 3.1.2 進(jìn)程狀態(tài) 73 3.1.3 進(jìn)程控制塊 73 3.1.4 線(xiàn)程 74 3.2 進(jìn)程調(diào)度 75 3.2.1 調(diào)度隊(duì)列 75 3.2.2 調(diào)度程序 77 3.2.3 上下文切換 78 3.3 進(jìn)程運(yùn)行 79 3.3.1 進(jìn)程創(chuàng)建 79 3.3.2 進(jìn)程終止 82 3.4 進(jìn)程間通信 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 客戶(hù)機(jī)/服務(wù)器通信 93 3.6.1 套接字 93 3.6.2 遠(yuǎn)程過(guò)程調(diào)用 96 3.6.3 管道 98 3.7 小結(jié) 102 復(fù)習(xí)題 103 實(shí)踐題 103 習(xí)題 104 編程題 105 編程項(xiàng)目 107 推薦讀物 110 參考文獻(xiàn) 111 第4章 線(xiàn)程 112 4.1 概述 112 4.1.1 動(dòng)機(jī) 112 4.1.2 優(yōu)點(diǎn) 113 4.2 多核編程 114 4.2.1 編程挑戰(zhàn) 115 4.2.2 并行類(lèi)型 115 4.3 多線(xiàn)程模型 116 4.3.1 多對(duì)一模型 116 4.3.2 一對(duì)一模型 116 4.3.3 多對(duì)多模型 116 4.4 線(xiàn)程庫(kù) 117 4.4.1 Pthreads 118 4.4.2 Windows線(xiàn)程 119 4.4.3 Java線(xiàn)程 121 4.5 隱式多線(xiàn)程 122 4.5.1 線(xiàn)程池 123 4.5.2 OpenMP 124 4.5.3 大中央調(diào)度 125 4.5.4 其他方法 125 4.6 多線(xiàn)程問(wèn)題 125 4.6.1 系統(tǒng)調(diào)用fork()和exec() 125 4.6.2 信號(hào)處理 126 4.6.3 線(xiàn)程撤銷(xiāo) 127 4.6.4 線(xiàn)程本地存儲(chǔ) 128 4.6.5 調(diào)度程序激活 128 4.7 操作系統(tǒng)例子 129 4.7.1 Windows線(xiàn)程 129 4.7.2 Linux線(xiàn)程 130 4.8 小結(jié) 131 復(fù)習(xí)題 131 實(shí)踐題 131 習(xí)題 131 編程題 133 編程項(xiàng)目 135 推薦讀物 136 參考文獻(xiàn) 136 第5章 進(jìn)程同步 138 5.1 背景 138 5.2 臨界區(qū)問(wèn)題 140 5.3 Peterson解決方案 141 5.4 硬件同步 142 5.5 互斥鎖 144 5.6 信號(hào)量 144 5.6.1 信號(hào)量的使用 145 5.6.2 信號(hào)量的實(shí)現(xiàn) 145 5.6.3 死鎖與饑餓 147 5.6.4 優(yōu)先級(jí)的反轉(zhuǎn) 147 5.7 經(jīng)典同步問(wèn)題 148 5.7.1 有界緩沖問(wèn)題 148 5.7.2 讀者-作者問(wèn)題 149 5.7.3 哲學(xué)家就餐問(wèn)題 150 5.8 管程 151 5.8.1 使用方法 152 5.8.2 哲學(xué)家就餐問(wèn)題的管程解決方案 153 5.8.3 采用信號(hào)量的管程實(shí)現(xiàn) 154 5.8.4 管程內(nèi)的進(jìn)程重啟 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
你還可能感興趣
我要評(píng)論
|