Linux内核源码分析 1:Linux内核体系架构和学习路线

news2025/4/17 17:48:18

Linux 内核源码分析

好久没有动笔写文章了,这段时间经历了蛮多事情的。这段时间自己写了一两个基于不同指令集的Linux内核,x86RISC-V。期间也去做了一些嵌入式相关的工作,研究了一下ARM指令集架构。

虽然今年九月份我就要申请了,具体申请AI方向还是机器人、嵌入式、操作系统、体系结构亦或是网络、安全、虚拟化还不知道到底要申请哪个,还没定下来,感觉比较迷茫,感觉什么都蛮喜欢的,都挺感兴趣的,都可以做,因为兴趣比较广泛,大学这几年都有所研究。但是不论如何,未来我的研究方向还是会使用到Linux的,而且未来的我的工作也肯定会和Linux相关,所以研究Linux内核对我肯定是好处的。

其次,虽然我自己写过操作系统内核,但我自己的内核各方面都是调简单的实现的,完全没有硬件抽象层Hardware Abstraction Layer)、体系抽层Architecture Abstraction Layer)这些让操作系统更加通用的设计;实现的算法也都是最简单的算法,没有Linux中的多级队列调度器CFS调度器……可能也正是因为自己写过这些代码,所以就想看看Linux大神是如何实现同样的功能的,想从他们的代码中学习。

最后,虽然我对于操作系统这门课程的内容掌握的可能会比较深入,相比于只是上了这门课的学生而言,我自己从系统的启动,再到开启分页机制、构建内核线程等等内容可能会很熟悉,但是却距离工作使用仍然有不小的距离,例如前几天面试了快手的内核实习生,结果问到glibc的内容时候一概不知。所以深感自己的不足,还是需要实习。可能我目前就是预训练好的一个参数,还需要finetune到工作上去😂。

因此,我决定详细阅读一下Linux的内核源码,既是满足提高自己的码力,也是出于自己的兴趣,同时也对未来的科研、学习、工作有益。

一、Linux内核体系架构

在开始阅读Linux源码学习之前,需要明白Linux内核的体系结构,搞清楚我们学习的对象。

Linux内核体系结构如下:

  • 最底层是硬件设备。这一部分的工作是硬件工程师、嵌入式工程师的任务,不是我们要学习的内容
  • 中间是内核空间Linux内核运行在这一个空间下,因此这就是我们要学习的内容
  • 最上面是用户空间。用户程序通过Linux内核提供的系统调用来实现诸多功能,例如用户自己写的程序、glibc虚拟机……这一部分也不是我们要学习的内容

所以,只有运行在内核空间中的Linux内核才是我们要学习的对象。

Linux内核体系结构

二、学习路线

1. 学习方法

从上面的图就能看出来,Linux内核是一个很庞大的工程,内部能够分成多个不同的组件,因此我们学习Linux内核的方法,其实是分模块的逐个学习。例如:

  • 我们学习Linux的线程管理,那么我们就会学习Linux用于描述线程的结构体和宏,例如:task_structcontainer_of……
  • 而后我们学习Linux线程管理相关的函数,例如:thread_yieldthread_blockswitch_to……
  • 最后我们学习Linux线程管理的相关策略,例如:多级队列调度、CFS调度器,以及根据实际应用场景进行优化的策略……

而针对每个模块的学习,其实就是搞清楚这个模块的宏和函数的作用,再搞清楚对应的调用逻辑。

2. 学习路线

Linux内核由五大主要子系统组成,它们之间有关系如下:

Linux内核五大主要子系统

对应的,我计划未来将要学习的模块有:

  • 进程管理模块
  • 内存管理模块
  • 网络模块
  • 文件系统
  • 进程通信模块

最后准备做一些机器人嵌入式相关的裁剪之类的项目

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/580430.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【使用ChatGPT制作视频】

内容目录 一、利用ChatGPT生成视频文案1. 打开ChatGPT:2. 输入需求:3. 复制: 二、制作生成思维导图1. 打开视频制作网站:2. 网页版下侧 - 一键成片 -粘贴Markdown内容,就会自动生成视频,这里放了其中一段&a…

【刷题之路Ⅱ】百度面试题——迷宫问题

【刷题之路Ⅱ】百度面试题——迷宫问题 一、题目描述二、解题1、方法1——暴力递归1.1、思路分析1.2、先将栈实现一下1.3、代码实现 一、题目描述 原题连接: 迷宫问题 题目描述: 定义一个二维数组 N*M ,如 5 5 数组下所示: int …

自学网络安全(黑客),一般人我劝你还是算了吧

一、自学网络安全学习的误区和陷阱 1.不要试图先成为一名程序员(以编程为基础的学习)再开始学习 我在之前的回答中,我都一再强调不要以编程为基础再开始学习网络安全,一般来说,学习编程不但学习周期长,而…

Fiddler抓包工具之fiddler设置抓HTTPS的请求证书安装

设置抓HTTPS的请求包 基础配置: 路径:启动Fiddler 》Tools》Options》HTTPS 注意:Option更改完配置需重启Fiddler才能生效 选中"Decrpt HTTPS traffic", Fiddler就可以截获HTTPS请求,如果是第一次会弹出证书安装提…

车载软件架构 —— 功能安全与基础软件

我是穿拖鞋的汉子,魔都中坚持长期主义的工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 在最艰难的时候,自己就别去幻想太远的将来,只要鼓励自己过好今天就行了! 这世…

node.js 学习 -- koa

一、搭建项目 1. 安装 Koa 框架 yarn add koa2. 引入 const Koa require("koa"); const app new Koa();3. 配置中间件 // ctx 所有http的上下文 // 配置中间件 app.use((ctx, next) > {ctx.body "hello api"; });4. 监听端口 app.listen(3000, …

TPO69 01|Why Snakes Have Forked Tongues|阅读真题精读|10:40-11:40+15:30-16:57

Why Snakes Have Forked Tongues 5/10 目录 Why Snakes Have Forked Tongues P1 P1生词 P1段落大意 无题目 P2 P2生词 P2段落大意 P2题目 【1】词汇题 secreteproduce ✅ 【2】事实信息题|考频高|难度高|定位错误​ P34​ P34生词 P34段落大意 P34题目 【3】词汇题 simultaneo…

入理解深度学习——正则化(Regularization):提前终止(Early Stopping)

分类目录:《深入理解深度学习》总目录 当训练有足够的表示能力甚至会过拟合的大模型时,我们经常观察到,训练误差会随着时间的推移逐渐降低但验证集的误差会再次上升。下图是这些现象的一个例子,这种现象几乎一定会出现。 这意味…

RT-Thread 学习笔记:memheap 死机问题的分析与解决

验证环境 NUCLEO-L476RG 开发板,板载 STM32L476RGT6(96K SARM1 32K SRAM2) Win10 64 位 Keil MDK 5.36 RT-Thread 5.0.1 版本(2023-05-28 master 主线) bsp : bsp\stm32\stm32l476-st-nucleo 功能描述 最近在研…

机器学习-线性代数-矩阵与空间映射

矩阵 文章目录 矩阵直观理解特殊矩阵矩阵的基本运算矩阵( A A A)乘向量( x x x)的本质:改变空间位置矩阵:空间映射关系矮胖矩阵对空间的降维压缩高瘦矩阵无法覆盖目标空间方阵映射矩阵的秩 直观理解 一个 m n m \times n mn的大小矩阵,直观…

fastjson与lombok一起用出现序列化问题

文章内部信息已脱敏。 有一次在测试环境调用网易电子签章平台的接口,用来生成印章图片。 首先用postman去测试接口,除了必传的固定请求头,请求体参数如下: {"userId": "***********","templateType&qu…

数据在内存中是如何存储的?(上)

C语言进阶——数据在内存中是如何存储的? 一. 整型数据的二进制表示二.数据类型详细介绍1.1 类型的基本归类1.2认识有无符号的区别( signed 和 unsigned )1.3代码理解一:1.4代码二理解:1.5代码三理解:1.6代…

【P40】JMeter 录制控制器(Recording Controller)

文章目录 一、录制控制器(Recording Controller)二、准备工作三、测试计划设计 一、录制控制器(Recording Controller) 可以理解为一个占位符,用来告诉代理服务器将脚本录制到何处,本身无任何逻辑作用&…

AI时代来临,新时代程序员如何紧追时代的风口浪尖?

文章目录 背景AI时代的背景和机遇抓住AI时代的机遇新时代程序员的技能和素质实践建议和资源总结 背景 在这个快速发展的AI时代,程序员们正置身于科技革新的前沿。随着人工智能技术的蓬勃发展和广泛应用,程序员的作用变得愈发重要和关键。他们不再是简单…

Doris之rollup上卷及物化视图

Rollup上卷 通过建表语句创建出来的表称为 Base 表(Base Table,基表) 在 Base 表之上,我们可以创建任意多个 ROLLUP 表。这些 ROLLUP 的数据是基于 Base 表产生的,并且在物理上是独立存储的。 Rollup表的好处: 和基表…

如何在华为OD机试中获得满分?Java实现【最长的连续子序列】一文详解!

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: Java华为OD机试真题(2022&2023) 文章目录 1. 题目描述2. 输入描述3. 输出描述…

如何在华为OD机试中获得满分?Java实现【滑动窗口】一文详解!

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: Java华为OD机试真题(2022&2023) 文章目录 1. 题目描述2. 输入描述3. 输出描述…

软件测试理论----接口测试中restful接口状态码规范

一、restful接口状态码总体分类 类别描述1xx:信息通信传输协议信息2xx:成功表示客户端的请求已成功接受3xx:重定向表示客户端必须执行一些其他操作才能完成其请求4xx:客户端错误此类错误状态码指向客户端5xx:服务器错…

在SPSS Statistics中使用R(插件)

date: 2018-10-30 09:26:33 在SPSS中使用R(插件) 谷歌或者百度“SPSS中调用R”, 最详细也是最靠谱的就是IBM SPSS社区的这两篇文章: https://www.ibm.com/developerworks/cn/data/library/ba/ba-1401spss-r/https://www.ibm.com/developerworks/cn/ana…

基于Open3D的点云处理6-点云去噪

当我们从扫描设备获取点云数据时,数据会包含噪声和伪影,点云噪声特性包括不真实的点、孤立点、不规则,基于噪声特性对器进行去除; 统计滤波 Statistical Outlier Removal(SOR)(去除离群点&…