前言:什么是Linux内核?

Linux是一种开源电脑操作系统内核。它是一个用C语言写成,符合POSIX标准的类Unix操作系统。

Linux最早是由芬兰 Linus Torvalds为尝试在英特尔x86架构上提供自由的类Unix操作系统而开发的。该计划开始于1991年,在计划的早期有一些 Minix 黑客提供了协助,而如今全球无数程序员正在为该计划无偿提供帮助。

发展历史

主要 Linux 内核发行版简史
Linux最早是由芬兰人Linus Torvalds设计的。

当时由于UNⅨ的商业化,Andrew Tannebaum教授开发了Minix操作系统以便于不受AT&T许可协议的约束,为教学科研提供一个操作系统。当时发布在Internet上,免费给全世界的学生使用。Minix具有较多UNⅨ的特点,但与UNⅨ不完全兼容。1991年10月5日,Linus为了给Minix用户设计一个比较有效的UNⅨ PC版本,自己动手写了一个“类Minix”的操作系统。整个故事从两个在终端上打印AAAA...和BBBB...的进程开始的,当时最初的内核版本是0.02。Linus Torvalds将它发到了Minix新闻组,很快就得到了反应。Linus Torvalds在这种简单的任务切换机制上进行扩展,并在很多热心支持者的帮助下开发和推出了Linux的第一个稳定的工作版本。1991年11月,Linux0.10版本推出,0.11版本随后在1991年12月推出,当时将它发布在Internet上,免费供人们使用。当Linux非常接近于一种可靠的/稳定的系统时,Linus决定将0.13版本称为0.95版本。1994年3月,正式的Linux 1.0出现了,这差不多是一种正式的独立宣言。截至那时为止,它的用户基数已经发展得很大,而且Linux的核心开发队伍也建立起来了。

为什么这么多人学习Linux内核开发?

学内核不是为了吓唬人的,是为了掌握其原理,学习其技巧与方法,知其然而知其所以然,另外内核代码是具有一定复杂度的,看了内核代码再看看我们自已写的,和玩具没啥两样,这就是学内核的好处

一,作用:
1、提升自己能力
2、自己能够做内核开发
3、定制自己的操作系统
3、兴趣爱好钻研操作系统、底层原理知识等

二,Linux内核源码分析适学人群
1、Android开发
2、C/C++后台开发
3、Linux嵌入式开发
4、Linux驱动开发
5、Linux内核开发
6、Linux虚拟化开发
7、研究Linux内核(兴趣爱好)
8、应用层开发想掌握底层原理

三,学了Linux内核有什么好处
1、首先我们对技术执着与追求,提升应用层开发专业技术水平;
2、大厂技术面试需求(比如:华为、百度、中微、中芯等等);
3、Linux内核开发工程师;
4、定制化Linux操作系统;
5、嵌入式Linux应用与驱动开发;
6、往届或应届本科生毕业(简历书写这点);

Linux内核5.0五大模块

1.进程管理模块

Linux内核线程之创建0号进程与1号进程

超详细篇!一文讲解Linux内核源码

Linux进程优先级设置简介

进程管理的基本概念

简要分析进程表示及系统调用

2.内存管理模块

剖析高性能低延迟内存池实现技术

重中之重!Linux内核内存屏障(Memory barrier)

面试必备!建议收藏!虚拟内存管理

强烈安利!Linux内存与Kasan工具分析

详谈不连续内存分配器原理

3.操作系统模块

一文讲解内核源码,操作系统:系统调用的实现

几种常用的操作系统调度策略

怎样才能进一步了解操作系统,进程调度策略,又有哪几种?

最新知识,Linux内核系统调用的实现

都2022年了!我不允许还有人不懂操作系统

4.网络协议栈模块

嵌入式开发必备!Linux内核中重要网络结构——sk_buff

如何理解Linux内核下的socket通信?

超详细!Netlink套接字及实战操作

Netfilter对http的报文处理

详情解读iptables基础知识(学习防火墙必看!)

5.设备驱动专题

[Linux实战篇!]PCI设备驱动

Linux嵌入式:如何在Linux 下使用USB 网络

浅谈Linux设备模型

简要概述Linux内核中的delay延迟调度技术

对于Linux底层驱动的简单认知

Linux内核相关书籍推荐

  • 《深入了解Linux内核》
  • 《Linux就该这么学》
  • 《Linux内核完全注释V3.0书签版》
  • 《Linux命令行大全 - 绍茨 (william E.shotts)》
  • 《Linux命令速查手册》
  • 《Linux性能优化大师》
  • 《Linux环境编程:从应用到内核》
  • 《Linux集群和自动化运维 余洪春》
  • 《Linux驱动程序开发实例(第2版)》
  • 《Linux高级程序设计(第3版)》
  • 《构建高可用Linux服务器(第4版)》

领取地址:https://docs.qq.com/doc/DRUJqTktSeVZJelFI

总结:

1. 了解操作系统基本概念。如果不会,可以学习《操作系统:设计与实现》Andrew S.Tanenbaum 写的那本。以MINIX为例子讲解操作系统的概念。非常推荐。
2. 有了操作系统的基本概念以后,可以了解Linux的机制了。推荐《Linux内核设计与实现》Robert Love 写的。这本书从概念上讲解了Linux有什么,他们是怎么运行的。这本书要反复认真看透。

3. 有了Linux内核的了解,还需要具体研究Linux内核源码。经典的就是《深入理解Linux内核》Daniel P. Bovet 写的。学习这本书的时候,要对着内核代码看着学。这本书学起来相当费力了,那么多多代码要研究。不过这本书如果学明白了,恭喜你,Linux内核你已经很熟悉了。
4. 如果要开发设备驱动,可以学习《Linux设备驱动程序》O‘Reilly出版社的。这本作为驱动的入门是很好的资料。另外还有一本《精通Linux 驱动程序开发》也是不错的教材,可以参考着看。学习驱动,免不了要学习一些硬件的协议和资料,研究哪个就找到相应的硬件文档,把硬件的工作原理搞明白。这些就不细说了。

5. 网络部分,学些Linux网络部分就学习《深入理解LINUX网络技术内幕》。这本书把Linux的网络部分讲的非常清晰透彻。但是通常不做这方面的工作研究,也不用研究这么深,毕竟现在相关职位较少。
6. 现在Linux相关的工作,多集中在一些嵌入式开发领域,arm,mips等,要学习以下这些体系架构的的资料,了解CPU的设计和工作方式。ARM就看对应的芯片手册,讲的很细致。MIPS就看 《see mips run》,有一二两版,两版内容有些差异,推荐都看。

很多人学习Linux内核一个原因都是:目前在工作上需要掌握内核相关的知识。系统移植升级,性能优化,软硬件裁剪,客制化,安全加强,基础软件trouble shooting,都需要对Linux尤其是内核有一定的掌握。但最重要的还是掌握内核能让我看问题看的更深刻。

最后,作为一名程序员,对于Linux内核的学习,或多或少还是需要有一些了解的。

虽然对你现有的开发工作提升可能并没有什么提升,但这也是对你自身知识的一种积累,滴水石穿,未来的某一刻你肯定会有意想不到的收货。

适合人群(不适合的慎重):

1、从事业务开发多年,对嵌入式底层原理理解不够深入的在职工程师;

2、从事嵌入式开发,想转互联网开发的在职工程师;

3、从事Qt开发等桌面开发的,薪资涨幅不大的在职工程师;

4、从事非开发岗(运维岗、测试岗、硬件岗)的、觉得工作中接触不到新技术的在职工程师;

5、作为个人爱好,对内核感兴趣,并有想法完善技术栈的C/C++在职工程师;

6、计算机相关专业想进大厂的在校生/应届生(本科及以上学历,有C/C++基础)


关于linux内核学习路线,最后再多说几句,有时候经常会需要的:

1. 学习Linux应用编程,建议看《unix环境高级编程》,把里面的例子都做一遍,会对整个Linux编程有系统都认识。

2. 针对Linux,有本 《Linux系统编程》,学完上一本,这本很快看一遍就懂了。主要是针对Linux具体懂一些内容,讲的挺全了,很实用。

3. Linux网络编程,系统的学习一下《unix网络编程。卷1,套接字联网api》,基本上网络应用相关的程序就都没问题了。

这些内容,分几年时间,分步计划学习,就会成为Linux高手了。个人建议参加零声教育的培训,学习效率会高很多,有目的性的参加培训,缩短周期,快速成型才是时代所需。

官方学习直通车:Linux内核源码/内存调优/文件系统/进程管理/设备驱动/网络协议栈

内核资料领取:Linux内核源码进阶攻略+视频教程资料合集

原文参考:

Linux内核5.0版本五大模块及内核书籍推荐 - 知乎

【金九银十】Linux内核进阶之路推荐,剑指互联网大厂! - 知乎

Linux内核5.0版本五大模块及内核书籍推荐相关推荐

  1. Linux内核4.14版本:ARM64的内核启动过程(二)——start_kernel

    目录 1. rest_init 2. init 进程(kernel_init) 2.1 kernel_init_freeable 2.1.1 do_basic_setup 2.1.2 prepare_ ...

  2. Linux课程实践二:编译模块实现内核数据操控

    一.内核模块原理 1. Linux内核增加功能 Linux内核整体结构很庞大,包含了很多的组件,现在有两种方法将需要的功能包含进内核当中: - 静态加载:将所有的功能都编译进Linux内核. - 动态 ...

  3. java二次开发浏览器内核_常见的五大浏览器的内核

    首先我们理解一下什么是内核: 英文叫做:Rendering Engine,中文翻译很多,排版引擎.解释引擎.渲染引擎,现在流行称为浏览器内核. Rendering Engine,顾名思义,就是用来渲染 ...

  4. 深入理解Linux电源管理(0.2)

    学习方法论 写作原则 标题括号中的数字代表完成度与完善度 0.0-1.0 代表完成度,1.1-1.5 代表完善度 0.0 :还没开始写 0.1 :写了一个简介 0.3 :写了一小部分内容 0.5 :写 ...

  5. centos8Linux内核版本,Centos 8升级内核版本

    文章目录 1. 查看当前内核版本 2. 使用ELRepo仓库 3. 安装最新版内核 4. 设置以新的内核启动 5. 生成grub配置文件并重启系统 6. 验证新内核 7. 查看系统中已安装的内核 8. ...

  6. Android 8.0 linux内核,在Ubuntu上为Android增加硬件抽象层(HAL)模块访问Linux内核驱动程序---Android8.0版本实现-对照老罗版本...

    老罗版本参见:https://blog.csdn.net/luoshengyang/article/details/6573809 在Android硬件抽象层(HAL)概要介绍和学习计划一文中,我们简 ...

  7. linux指定内核版本升级,Ubuntu 14.0 升级内核到指定版本

    1.卸载现有内核 sudo apt purge linux-headers-* linux-headers-*-generic linux-image-*-generic linux-image-ex ...

  8. linux5.5内核,一条命令就可以升级到Linux 5.5内核或Linux 5.5以上版本

    升级Linux内核其实很简单,本文介绍的方法只需要一条命令,至少能够升级到Linux 5.5内核版本.当然,脚本当中要是加入新的Linux内核,你就能够升级到那个新内核,也就是说可以升级到Linux ...

  9. 初探linux内核编程,参数传递以及模块间函数调用

    一.前言 我们一起从3个小例子来体验一下linux内核编程.如下: 1. 内核编程之hello world 2. 模块参数传递 3. 模块间函数调用 二.准备工作 首先,在你的linux系统上面安装l ...

  10. Linux 2.6内核的编译步骤及模块的动态加载

    本文是基于2.6的内核,也建议各位可以先看一下<Linux内核设计与实现(第二版)>作为一个基础知识的铺垫.当然,从实践角度来看,只要按着以下的步骤去做也应该可以实现成功编译内核及加载模块 ...

最新文章

  1. javascript的Array对象
  2. Springboot 日志管理模块编写记录
  3. Android中的ViewPager2
  4. 【转载】selenium webdriver进行元素定位
  5. php重放,Api 接口安全-防篡改,防重放理解总结
  6. linux13位时间戳,Kotlin 处理Linux时间戳
  7. 【OpenCV 例程200篇】84. 由低通滤波器得到高通滤波器
  8. (zt)OpenGL中的Alpha测试,深度测试,模板测试,裁减测试
  9. AI机器视觉技术在生活中的应用
  10. 计算机基础(七):ION定义与使用方法
  11. 7.3 环境(Condition)
  12. c语言源代码大全迅雷下载,俄罗斯方块C语言源代码
  13. 数字图像处理实验九维纳滤波
  14. 图像处理项目-车标识别
  15. 两个PDF合并成一个PDF怎么做?三分钟教会你两种方法
  16. 5h是什么意思_企业管理5h是什么意思
  17. 【魔兽世界插件】魔兽世界插件实战笔记从入门到放弃的心理历程 第五节 窗体文字材质设置
  18. Foundation框架 之 常见结构体、包装数据、日期
  19. ffmpeg实现flv至mp4格式转换的bat脚本
  20. 市面主流100G白盒交换机/裸机交换机评鉴指南

热门文章

  1. c# chart 各个属性_C#Chart各个属性详细解析、应用
  2. Base64在线转换工具
  3. emacs-打开和关闭
  4. devenv.exe应用程序错误——可能原因之一
  5. 计算机为何会自动开机,电脑自动开机是怎么回事 电脑自动开机解决方法
  6. 给 21 岁的自己 6 点建议
  7. 公开处刑,专家博主开发游戏的老王专栏抄袭事件始末
  8. dolphinscheduler 3.0.1 资源中心
  9. 漫反射及具体光源的照明
  10. 光照 (4) 漫反射光照