什么是Linux内核,如何搞懂Linux内核?(Linux内核学习笔记合集来了!)

什么是Linux内核,如何搞懂Linux内核?(Linux内核学习笔记合集来了!)操作系统 简称为 OS 是一中软件平台 可创建一个环境 用户可以再该环境中再计算设备上运行不同的应用程序

大家好,欢迎来到IT知识分享网。

什么是操作系统OS
操作系统(简称为OS)是一中软件平台,可创建一个环境,用户可以再该环境中再计算设备上运行不同的应用程序。操作系统充当软件程序贺系统硬件组件之间的桥梁。它被移动设备,标签,台式机,web服务器,视频游戏机等不同的设备所利用。市场上有各种操作系统可用,例如windows,linux,unix和Mac OSX。
操作系统的的组成
Bootloader:它负责设备的启动过程。
Shell:Shell是一种编程语言,它可以控制其他文件,进程以及所有其他程序。
Kernel:它是操作系统的主要组件,管理内存,CPU和其他相关组件。
Desktop Environment:这是用户通常与之交互的环境。
Graphical server(图形服务器):它是操作系统的子系统,用于在屏幕上显示图形
Applications: 这些是执行不同用户任务(例如word,excel等)的程序集。
Daemons : 后台服务提供商。
什么是内核kernel
内核是操作系统的关键组件。 它借助进程间通信和系统调用,在硬件级别上充当应用程序和数据处理之间的桥梁。
每当将操作系统加载到内存中时,首先,将加载内核并将其保留在那里,直到操作系统关闭。 内核负责处理低级任务,例如任务管理,内存管理,风险管理等。
内核的任务
用于应用程序执行的流程管理。
内存和I / O(输入/输出)管理。
系统调用控制(内核的核心行为)。
借助设备驱动程序进行设备管理。
内核源码结构
在linux系统中看内核源代码,如图所示
在这里插入图片描述
arch 特定体系结构的代码
block 块设备I/O层
crypo 加密API
Documentation 内核源码文档
drivers 设备驱动程序
firmware 使用某些驱动程序而需要的设备固件
fs VFS和各种文件系统
include 内核头文件
init 内核引导和初始化
ipc 进程间通信代码
kernel 像调度程序这样的核心子系统
lib 同样内核函数
mm 内存管理子系统和VM
net 网络子系统
samples 示例,示范代码
scripts 编译内核所用的脚本
security Linux 安全模块
sound 语音子系统
usr 早期用户空间代码(所谓的initramfs)
tools 在Linux开发中有用的工具
virt 虚拟化基础结构
那Linux内核该如何学习呢?
主要可以从五个模块来看:










































一文让你读懂Linux五大模块内核源码,内核整体架构设计(超详细)

设备驱动管理系列(二):一文详解Linux内核块设备层介绍之bio层

设备驱动管理系列(三):一文解析系统中设备驱动管理sysfs文件系统

设备驱动管理系列(四):一文细说OpenCL框架

设备驱动管理系列(五):详细讲解Linux PCI驱动框架分析(一)

设备驱动管理系列(六):深入分析Linux PCI驱动框架分析(二)

设备驱动管理系列(七):深入分析Linux PCI驱动框架(三)

设备驱动管理系列(八):分析linux设备模型之kset/kobj/ktype(超详细~)

设备驱动管理系列(九):一文解决printf()是如何与UART外设驱动函数“勾搭”起来的?

设备驱动管理系列(十):手把手教你在ARM板上写一个驱动程序!

文件系统及内核活动组件系列(二):深入讲解Linux中断子系统–Workqueue

文件系统及内核活动组件系列(三):一文解析Linux中断子系统softirq和tasklet

文件系统及内核活动组件系列(四):深入分析Linux中断子系统之通用框架处理

文件系统及内核活动组件系列(五):深入分析Linux中断子系统之中断控制器及驱动

文件系统及内核活动组件系列(六):深入分析Linux信号量机制

文件系统及内核活动组件系列(七):简单分析Linux Mutex机制

文件系统及内核活动组件系列(八):一文解析linux spinlock/rwlock/seqlock原理(基于ARM64)

文件系统及内核活动组件系列(九):一文解决信号量保护之位带操作

我的看法是以下面的顺序来看书:

六,学习Linux内核

学习linux内核不像学习语言。一个月或者三月就能掌握C或者java。学习linux内核需要循序渐进,掌握正确的linux内核学习路线非常重要。本文将分享一些学习linux内核的建议。

  1. 了解操作系统的基本概念。如果没有,可以学习《操作系统:设计与实现》,Andrew S.Tanenbaum写的那本,以MINIX为例解释操作系统的概念。非常推荐。
    2.有了操作系统的基本概念,你就可以理解Linux的机制了。推荐罗伯特·拉芙写的Linux内核设计与实现。这本书从概念上解释了Linux有什么以及它是如何工作的。这本书应该反复仔细阅读。
    3.有了Linux内核的知识,我们还需要具体学习Linux内核源代码。经典的是丹尼尔·p·博韦特写的《深入理解Linux内核》。学习这本书的时候,要看看内核代码。这本书学起来挺费劲的,所以有很多代码要研究。但是,如果这本书很好理解,那么恭喜你,你已经对Linux内核很熟悉了。
    4.如果你想开发设备驱动,可以向O ‘Reilly Press学习Linux设备驱动。这本书是驾驶入门的好材料。还有一本很好的教材,精通Linux驱动开发,可以参考一下。开车,难免要学习一些硬件协议和资料。如果你研究的是哪一种,可以找相应的硬件文档,了解硬件的工作原理。这些我就不细说了。
    5.网络部分,学习一些Linux网络部分学习《深入了解LINUX网络技术内幕》。这本书把Linux的网络部分讲得非常清楚透彻。不过我们一般不做这方面的研究,也不需要做那么多研究。毕竟现在相关岗位很少。
    6.现在Linux相关的工作大多集中在一些嵌入式开发领域,如arm、mips等。你要学习以下关于架构的信息,了解CPU的设计和工作模式。看看ARM对应的芯片手册就知道了,很详细的。mips随便看看MIPS运行,有一两个版本。两个版本有些区别,建议全看。
    7.补充一点经验。不要以为Linux庞大复杂,就很难学。认真学习,什么都可以学。就看你的毅力和恒心了。另外,不要走弯路,不要看市面上那些讲Linux0.11的书,学你想学的就好。就像学C语言看谭浩强一样,走弯路,费力气,严重影响学习效果。
    关于linux内核学习路线,再多说几句应用编程,有时候经常会需要的:
    1.学习Linux应用编程。建议看unix环境下的高级编程。把里面的例子都做一遍,你就系统的知道整个Linux编程了。
    2.对于Linux,有一个Linux系统编程。学完上一个,这个一看就明白了。主要是针对Linux了解一些具体的内容,还是比较完整和实用的。
    3.Linux网络编程,系统学习unix网络编程。第一卷,Socket联网api,基本上所有网络应用相关的程序都没问题。
    这些内容,如果你打算用几年的时间一步一步的学习,就会成为Linux高手。建议个人参加零音教育的培训,学习效率会高很多。有目的的参与培训,缩短周期,快速成型是时代的需要。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    参考文章:https://zhuanlan.zhihu.com/p/590349927
















免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/126562.html

(0)
上一篇 2025-09-17 19:33
下一篇 2025-09-17 19:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信