# 組原、OS、網絡
## 組原
[深入理解計算機系統](http://book.douban.com/subject/5333562/)
簡單介紹一下,這本書包括組成原理和操作系統兩大部分知識。第二、三章學完之后,逆向就算是入門了。國內的教材很少有拿匯編和C語言對比教學的書籍,這樣的教學方法很實用。因為現在匯編很少用于寫程序了,主要大量用于反編譯;而C語言主要用于嵌入式開發,為了性能原因開發者要經常查看對應的匯編代碼。然而這些知識只是個導論,要想真正踏入逆向的大門,還是要看看雪出的那幾本書。
之后的第四、五章涉及了指令集和體系結構,講的很淺顯易懂,完全不需要數電的基礎就能看懂。美中不足的一點是它拿y86作為教學工具。y86雖然比起x86簡化了很多,但還是屬于CISC,基本的指令類型有12種,很是令人頭疼。此外,這一部分的lab涉及到了HDL,然而相關語法需要自己去看,也是略有不足。
操作系統部分沒什么可挑剔的,進程、并發、IO與網絡為了不那么抽象,特地采用posix api來做演示,是相當深入淺出的。當然,一本導論性質的書不可能講的那么詳細,需要的話還是要看《apue》。
另外,這本書好像遺漏了兩個很重要的話題,組原部分少了總線,操作系統部分少了文件系統,所以還是應該看別的書把它補上。
[計算機組成與設計](http://book.douban.com/subject/26604008/)
斯坦福校長寫的書。如果你受不了csapp中y86的繁瑣,來看這本吧。其中有一個簡單的用于教學的mips,只需要記住和實現5種指令,簡單吧。
## OS
[深入理解計算機系統](http://book.douban.com/subject/5333562/)
[現代操作系統](http://book.douban.com/subject/3852290/)
一本中規中矩的OS教科書,主要涉及到了進程、并發與鎖、IO、虛存、文件系統幾個方面。
[30天自制操作系統](http://book.douban.com/subject/11530329/)
和上面那本不同,這本書不涉及到一些操作系統設計上的基本概念,而是涉及到boot和內核的一些知識,教你從頭開始實現一個操作系統,這是非常難能可貴的。
## 網絡
[計算機網絡](http://book.douban.com/subject/10510747/)
[計算機網絡:自頂向下方法](http://book.douban.com/subject/26176870/)
這兩本書前者是自底向上,后者是自頂向下。可以互相補充著看。另外不要再看謝希仁那本書了,那本書都是他讓手下的研究生一章一章湊的,沒有多大價值。
[TCP/IP詳解 卷1:協議](http://book.douban.com/subject/1088054/)
[TCP/IP詳解 卷2:實現](http://book.douban.com/subject/1087767/)
[TCP/IP詳解 卷3:TCP事務協議、HTTP、NNTP和UNIX域協議](http://book.douban.com/subject/1058634/)
作為TCP/IP的權威指南,這三本還是挺晦澀難懂的。
[HTTP權威指南](http://book.douban.com/subject/10746113/)
作為一名開發者,我們其實只需要關注傳輸層和應用層的東西。了解HTTP,對于一個web開發者來說,是極其有利的。至少能理清請求的來龍去脈,避免寫出來那種跳來跳去的實現。
[圖解HTTP](http://book.douban.com/subject/25863515/)
[圖解TCP/IP](http://book.douban.com/subject/24737674/)
如果上面那些大部頭看不下去了,看看下面這兩本,圖解有時候真的有奇效。