如果你的学校一般,那么强烈建议自学,而且不要使用学校发的教材。如果能够时光倒流,我会在大学期间重点学习 Linux 内核,因为这综合了编程语言( C 语言)、数据结构、计算机组成原理、操作系统理论、计算机网络。不要单独学习这些学科,不然你学完就忘了,要把它们联系起来才不会。给你推荐一些资料吧:
* 编程语言方面:《 C 语言现代方法(第二版修订版)》,学 Linux 内核,一定要把 C 语言学好,这本书讲的很详细,也很现代,不要看那种很老还很多错误的书。
* 计算机组成原理方面:《 x86 汇编语言 从实模式到保护模式(第二版)》第一版是 10 前出的,第二版 2023 年 1 月才刚出版上市。虽然名字包含汇编语言,其实也讲了很多 cpu 的工作原理。只学实模式是不够的(王爽那本纯粹就在讲实模式下的指令),要把保护模式也学了,不然一些操作系统的概念不是很好理解(比如特权级与内核态用户态之类的)。要学就学现在正在被大量使用的架构,不要学学校教的那些老掉牙的计算机组成原理。此书作者李忠也在网易云课堂开设了 x86-32 和 x86-64 两门课程(不是打广告),可以作为书的扩展。
* 数据结构方面:其实就用学校发的数据结构书就够了,不要轻易去看黑书《算法》!!!
* 计算机网络:谢希仁的《计算机网络》,现在应该是第 8 版了吧;张彦飞的《深入理解 Linux 网络》。第一本是理论,第二本是实际系统中的实现,可以学到 Linux 的网络模块时再看。不要轻易去看《 TCP/IP 详解》!!!
* 操作系统方面:《操作系统导论》(豆瓣链接是
https://book.douban.com/subject/33463930/,别选错了):理论层面就这一本就够了,结合 Linux 内核来理解理论中的概念。
* Linux 内核方面:《 Linux 内核设计与实现(第三版)》,《深入 Linux 内核架构》:第一本比较简洁不会涉及太多细节,可以对整个内核有一个完整的认识;第二本会涉及一些细节,相对更复杂。Linux 内核学起来肯定是很难的,光看书也很枯燥,可以看一些视频或者博客。
你去搜一下相应的豆瓣评分就知道这些书值不值得看了。
基础方面就这些,大一打二把基础打牢,大三大四再去学其他编程语言和上层应用开发就容易得多。祝你学习顺利,少走弯路。