肝了三个月 Linux 内核,面试薪资直接翻番,我才明白 TA 的重要性!
目录
一、学习操作系统(Linux 内核)的重要性
二、Linux 内核的组成部分
三、Linux 内核源码组织结构
四、Linux 内核需要重点学习的知识点
五、如何开启你的 Linux 内核学习之路
-----------------------------------------------------------------------------------------------
一、学习操作系统(Linux 内核)的重要性
为什么要学习 Linux 内核,这个问题我相信很多人都不一定答得上来。只是从技术层上讲,对内核的研究会加深我们的技术的理解,更多的理解源码,是从思想和思考方式上的优化。而在一般的敲代码过程中对于它的实际使用场景并不多。用一句很吊的话说,不懂内核你可以成为一名优秀的码农,但是成不了一名优秀的程序员。
那回到为什么要学的问题上来。
现阶段国内大学的计算机教学情况是不容乐观的,教材过时或者实战性不够成为通病,而且大多是理论的灌输,并没有对计算机的原理和机制进行深入的解析,我们并没有真正理解操作系统的工作原理。而当下企业互联网公司中运用的计算机技能和知识远远要比学校授予学生的知识要专业,前沿,更佳商业化,所以有时候你会感受到,刚毕业的科班程序员很难适应工作中的节奏与内容。
而对操作系统(Linux 内核)的学习就会有助于帮助我们深入理解计算机原理,为后续的学习和工作提供学习方法与思路。
二、Linux 内核的组成部分
Linux 内核主要由进程管理、内存管理、设备驱动、文件系统、网络协议栈外加一个系统调用。
在纯技术层面上,内核是硬件与软件之间的一个中间层。其作用是将应用程序的请求传递给硬件,并充当底层驱动程序,对系统中的各种设备和组件进行寻址。
从应用程序的视角来看,内核可以被认为是一台增强的计算机,将计算机抽象到一个高层次上。例如,在内核寻址硬盘时,它必须确定使用哪个路径来从磁盘向内存复制数据,数据的位置,经由哪个路径向磁盘发送哪一条命令,等等。另一方面,应用程序只需发出传输数据的命令。实际的工作如何完成与应用程序是不相干的,因为内核抽象了相关的细节。应用程序与硬件本身没有联系,只与内核有联系,内核是应用程序所知道的层次结构中的最底层,因此内核是一台增强的计算机。
四、Linux 内核需要重点学习的知识点
关于 Linux 内核的学习完全可以根据内核的组成部分区块学习。
内存管理
l 内存原理
l 虚拟内存
l 内存系统调用
文件系统
l 虚拟文件系统 VFS
l 磁盘文件系统
l 用户空间系统
进程管理
l 进程基础
l 进程调度
网络协议栈
l 网络基础架构
l 网络协议栈
l 系统 API 调用
设备驱动
l 设备子系统
l Linux 设备模型
l 字符设备驱动
l 网卡设备驱动
l 块设备驱动
l 蓝牙子系统
自我感觉搞懂这些基本差不多了。
五、如何开启你的 Linux 内核学习之路
先谈谈我自己为什么要学习 Linux 内核吧
第一个是我自己比较喜欢开源的东西,现在已成老油条, 但每当有搞不懂的问题, 通过翻看源代码解决了这个问题, 我都会很庆幸自己的选择。 开源对程序员的影响是巨大的。
第二个是我感觉自己操作系统方面的知识太欠缺了,虽然是科班出身,但大学对于专业学科并没有很重视,只懂 C 语言, 所以基础的东西必须恶补回来。 所以我选择从一个具体的系统入手,资料和书籍也多, 源码也开放, 是学习的不二选择。现在 Linux 越来越火, 在服务器和嵌入式等领域风生水起, 也让我坚信学好 Linux 对自己的职业生涯肯定是有百利而无一害。
第三个是我喜欢它, 想搞清楚他的原理, 而且也愿意花时间去研究。 兴趣是最好的老师。
1.电子书推荐:
l 《Linux 内核完全注释 V3.0 书签版》
l 《Linux 命令行大全 - 绍茨 (william E.shotts)》
l 《Linux 命令速查手册》
l 《Linux 就该这么学》
l 《Linux 性能优化大师》
l 《Linux 环境编程:从应用到内核》
l 《Linux 集群和自动化运维 余洪春》
l 《Linux 驱动程序开发实例(第 2 版)》
l 《Linux 高级程序设计(第 3 版)》
l 《构建高可用 Linux 服务器(第 4 版)》
l 《深入了解 Linux 内核》
2. 项目学习
版权声明: 本文为 InfoQ 作者【Yt】的原创文章。
原文链接:【http://xie.infoq.cn/article/8b5cdd9cde860d6eae2c17fad】。文章转载请联系作者。
评论