天天看點

飛龍的程式員書單 - 組原、OS、網絡

組原

深入了解計算機系統

簡單介紹一下,這本書包括組成原理和作業系統兩大部分知識。第二、三章學完之後,逆向就算是入門了。國内的教材很少有拿彙編和C語言對比教學的書籍,這樣的教學方法很實用。因為現在彙編很少用于寫程式了,主要大量用于反編譯;而C語言主要用于嵌入式開發,為了性能原因開發者要經常檢視對應的彙編代碼。然而這些知識隻是個導論,要想真正踏入逆向的大門,還是要看看雪出的那幾本書。

之後的第四、五章涉及了指令集和體系結構,講的很淺顯易懂,完全不需要數電的基礎就能看懂。美中不足的一點是它拿y86作為教學工具。y86雖然比起x86簡化了很多,但還是屬于CISC,基本的指令類型有12種,很是令人頭疼。此外,這一部分的lab涉及到了HDL,然而相關文法需要自己去看,也是略有不足。

作業系統部分沒什麼可挑剔的,程序、并發、IO與網絡為了不那麼抽象,特地采用posix api來做示範,是相當深入淺出的。當然,一本導論性質的書不可能講的那麼詳細,需要的話還是要看《apue》。

另外,這本書好像遺漏了兩個很重要的話題,組原部分少了總線,作業系統部分少了檔案系統,是以還是應該看别的書把它補上。

計算機組成與設計

斯坦福校長寫的書。如果你受不了csapp中y86的繁瑣,來看這本吧。其中有一個簡單的用于教學的mips,隻需要記住和實作5種指令,簡單吧。

OS

現代作業系統

一本中規中矩的OS教科書,主要涉及到了程序、并發與鎖、IO、虛存、檔案系統幾個方面。

30天自制作業系統

和上面那本不同,這本書不涉及到一些作業系統設計上的基本概念,而是涉及到boot和核心的一些知識,教你從頭開始實作一個作業系統,這是非常難能可貴的。

網絡

計算機網絡 計算機網絡:自頂向下方法

這兩本書前者是自底向上,後者是自頂向下。可以互相補充着看。另外不要再看謝希仁那本書了,那本書都是他讓手下的研究所學生一章一章湊的,沒有多大價值。

TCP/IP詳解 卷1:協定 TCP/IP詳解 卷2:實作 TCP/IP詳解 卷3:TCP事務協定、HTTP、NNTP和UNIX域協定

作為TCP/IP的權威指南,這三本還是挺晦澀難懂的。

HTTP權威指南

作為一名開發者,我們其實隻需要關注傳輸層和應用層的東西。了解HTTP,對于一個web開發者來說,是極其有利的。至少能理清請求的來龍去脈,避免寫出來那種跳來跳去的實作。

圖解HTTP 圖解TCP/IP

如果上面那些大部頭看不下去了,看看下面這兩本,圖解有時候真的有奇效。

繼續閱讀