# 组原、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/) 如果上面那些大部头看不下去了,看看下面这两本,图解有时候真的有奇效。