該作品是PDF格試請下載 福昕PDF閱讀器
從程序員的視角,看計算機系統(tǒng)!本書適用于那些想要寫出更快、更可靠程序的程序員。通過掌握程序是如何映射到系統(tǒng)上,以及程序是如何執(zhí)行的,讀者能夠更好的理解程序的行為為什么是這樣的,以及效率低下是如何造成的。粗略來看,計算機系統(tǒng)包括處理器和存儲器硬件、編譯器、操作系統(tǒng)和網(wǎng)絡(luò)互連環(huán)境。而通過程序員的視角,讀者可以清晰地明白學(xué)習(xí)計算機系統(tǒng)的內(nèi)部工作原理會對他們今后作為計算機科學(xué)研究者和工程師的工作有進一步的幫助。它還有助于為進一步學(xué)習(xí)計算機體系結(jié)構(gòu)、操作系統(tǒng)、編譯器和網(wǎng)絡(luò)互連做好準(zhǔn)備。
本書的主要論題包括:數(shù)據(jù)表示、C程序的機器級表示、處理器結(jié)構(gòu),程序優(yōu)化、存儲器層次結(jié)構(gòu)、鏈接、異?刂屏鳌⑻摂M存儲器和存儲器管理、系統(tǒng)級I/O、網(wǎng)絡(luò)編程和并發(fā)編程。書中所覆蓋的內(nèi)容主要是這些方面是如何影響應(yīng)用和系統(tǒng)程序員的。例如,在講述數(shù)據(jù)表示時,本書說明了用來表示數(shù)字的表示方法是有限的,它能夠近似地表示整數(shù)和實數(shù),但是這種表示方法是有限制的,程序員必須了解。在講述高速緩存時,本書討論了矩陣代碼中的循環(huán)變量的順序是如何影響程序的性能的。在討論網(wǎng)絡(luò)互連時,本書描述了并發(fā)服務(wù)器如何能有效地處理來自多個客戶端的請求。
本書基于Intel兼容(IA32)機器,在Unix或者相關(guān)的操作系統(tǒng)(例如,Linux)上執(zhí)行C程序。雖然書中包括了一些幫助讀者將Java轉(zhuǎn)化成C的提示,但是還是要求讀者對C或者C++有一定的了解。
您可以通過本書的Web網(wǎng)站www.csapp.cs.cmu.edu獲得完整的資料,包括實驗和作業(yè),授課筆記和代碼示例。
本書英文版久負(fù)盛名,被眾多專業(yè)人士稱為“最偉大的計算機教材”之一,著名的美國卡內(nèi)基梅隆大學(xué)計算機科學(xué)系一直將本書作為教材使用,程序員眼中的透徹講述計算機系統(tǒng)的扛鼎之作。作者Randal E. Bryant是卡耐基梅隆大學(xué)的計算機科學(xué)系主任,ACM和IEEE雙院士(Fellow),其研究成果多次獲得ACM和IEEE頒發(fā)的大獎。
本書共分十三章,分別介紹了信息的表示和處理、程序的機器級表示、處理器體系結(jié)構(gòu)、存儲器層次結(jié)構(gòu)、靜態(tài)和動態(tài)鏈接、虛擬存儲器、系統(tǒng)級I/O、網(wǎng)絡(luò)編程和并發(fā)編程等精彩內(nèi)容。其目的是解釋計算機系統(tǒng)的所有本質(zhì)概念,并向讀者展示這些概念是如何實際地影響應(yīng)用程序的正確性、性能和實用性。與其他主要針對系統(tǒng)構(gòu)造人員的系統(tǒng)類書籍不同,這本書是寫給程序員的,是從程序員的角度來描述的。本書為軟件和硬件之間搭起了一個橋梁,它給出了一種幫助讀者分別從硬件和軟件的角度去理解一個程序及其行為的途徑,這也填補了國內(nèi)計算機系統(tǒng)教學(xué)中的一個空白。本書的最大優(yōu)點是幫助讀者理解概念,讓讀者很清楚地在腦海中構(gòu)造一個層次型的計算機系統(tǒng),從最低層數(shù)據(jù)在內(nèi)存中的表示(如我們一直陌生的浮點數(shù)表示),到流水線指令的構(gòu)成,到虛擬存儲器,到編譯系統(tǒng),到動態(tài)加載庫,到最后的用戶應(yīng)用。
本書提供了大量的例子和練習(xí)及部分答案。尤其值得一提的是,對于每一個基本概念都有相應(yīng)的筆頭或程序試驗,加深讀者的理解!