從程式設計師的視角,看計算機系統!
本書適用於那些想要寫出更快、更可靠程式的程式設計師。通過掌握程式是如何對映到系統上,以及程式是如何執行的,讀者能夠更好的理解程式的行為為什麼是這樣的,以及效率低下是如何造成的。粗略來看,計算機系統包括處理器和記憶體硬體、編譯器、作業系統和網路互連環境。而通過程式設計師的視角,讀者可以清晰地明白學習計算機系統的內部工作原理會對他們今後作為電腦科學研究者和工程師的工作有進一步的幫助。它還有助於為進一步學習電腦架構、作業系統、編譯器和網路互連做好準備。
本書的主要論題包括:資料表示、C程式的機器級表示、處理器結構,程式優化、記憶體層次結構、連結、異常控制流、虛擬記憶體和記憶體管理、系統級I/O、網路程式設計和並行程式設計。書中所覆蓋的內容主要是這些方面是如何影響應用和系統程式設計師的。例如,在講述資料表示時,本書說明了用來表示數位的表示方法是有限的,它能夠近似地表示整數和實數,但是這種表示方法是有限制的,程式設計師必須瞭解。在講述快取記憶體時,本書討論了矩陣程式碼中的迴圈變數的順序是如何影響程式的效能的。在討論網路互連時,本書描述了並行伺服器如何能有效地處理來自多個使用者端的請求。
本書基於Intel相容(IA32)機器,在Unix或者相關的作業系統(例如,Linux)上執行C程式。雖然書中包括了一些幫助讀者將Java轉化成C的提示,但是還是要求讀者對C或者C++有一定的瞭解。
連結: https://pan.baidu.com/s/1JXngIu0MtgC6h0IjzGXgTA
密碼在公眾號「程式設計指北」後臺回覆「csapp」即可獲取 高清有書籤的版本