飞龙的程序员书单 - 组原、OS、网络
组原
简单介绍一下,这本书包括组成原理和操作系统两大部分知识。第二、三章学完之后,逆向就算是入门了。国内的教材很少有拿汇编和C语言对比教学的书籍,这样的教学方法很实用。因为现在汇编很少用于写程序了,主要大量用于反编译;而C语言主要用于嵌入式开发,为了性能原因开发者要经常查看对应的汇编代码。然而这些知识只是个导论,要想真正踏入逆向的大门,还是要看看雪出的那几本书。
之后的第四、五章涉及了指令集和体系结构,讲的很浅显易懂,完全不需要数电的基础就能看懂。美中不足的一点是它拿y86作为教学工具。y86虽然比起x86简化了很多,但还是属于CISC,基本的指令类型有12种,很是令人头疼。此外,这一部分的lab涉及到了HDL,然而相关语法需要自己去看,也是略有不足。
操作系统部分没什么可挑剔的,进程、并发、IO与网络为了不那么抽象,特地采用posix api来做演示,是相当深入浅出的。当然,一本导论性质的书不可能讲的那么详细,需要的话还是要看《apue》。
另外,这本书好像遗漏了两个很重要的话题,组原部分少了总线,操作系统部分少了文件系统,所以还是应该看别的书把它补上。
斯坦福校长写的书。如果你受不了csapp中y86的繁琐,来看这本吧。其中有一个简单的用于教学的mips,只需要记住和实现5种指令,简单吧。
OS
一本中规中矩的OS教科书,主要涉及到了进程、并发与锁、IO、虚存、文件系统几个方面。
和上面那本不同,这本书不涉及到一些操作系统设计上的基本概念,而是涉及到boot和内核的一些知识,教你从头开始实现一个操作系统,这是非常难能可贵的。
网络
这两本书前者是自底向上,后者是自顶向下。可以互相补充着看。另外不要再看谢希仁那本书了,那本书都是他让手下的研究生一章一章凑的,没有多大价值。
TCP/IP详解 卷3:TCP事务协议、HTTP、NNTP和UNIX域协议
作为TCP/IP的权威指南,这三本还是挺晦涩难懂的。
作为一名开发者,我们其实只需要关注传输层和应用层的东西。了解HTTP,对于一个web开发者来说,是极其有利的。至少能理清请求的来龙去脉,避免写出来那种跳来跳去的实现。
如果上面那些大部头看不下去了,看看下面这两本,图解有时候真的有奇效。