![](https://img-blog.csdnimg.cn/1e08d67db0f64b92b1c935ba144af894.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Linux内核
文章平均质量分 82
记录linux内核层面的资料和个人学习心得。
龙赤子
15年开发猿,linuxer,分享经验,获得快乐. LCCZ_QRS
展开
-
学内核之二十一:系统调用栈结构分析
主要是内核栈占用两个页面,共8KB,一头上threadinfo,一头是内核栈栈底。关于汇编里的伪代码 标记 头文件引入 指令集选择 新旧ABI兼容处理 等等,就不记录了,可以结合最终汇编代码,确定一些条件编译的情况。r4 和 r5之后,使用r8保存系统调用表,使用7中的中断号,右移两位,每个调用占用4字节,修改pc寄存器,直接跳转到系统调用中。这个反汇编中,虚拟地址开始位置调整为c0000000了,且上述表的内容也有具体内容了。这个函数里,入栈7个位置,并预留9个位置,这也跟上述栈标记及栈回溯对应上了。原创 2023-09-17 17:45:40 · 438 阅读 · 0 评论 -
学内核之二十:关于Cache
宋宝华:深入理解cache对写好代码至关重要_宋宝华的博客-CSDN博客转载 2023-06-18 21:35:54 · 87 阅读 · 0 评论 -
学内核之十九:Linux文件系统结构大蓝图
个人整理的Linux文件系统结构大蓝图原创 2023-05-14 22:15:49 · 630 阅读 · 0 评论 -
学内核之十八:纸上得来终觉浅,绝知此事要躬行
大家都知道,内核开发跟应用开发,体验是完全不同的,尤其是驱动。一方面要掌握扎实的语言基础,另一方面还要对操作系统的基本概念深入理解。然后配合软硬件的一些知识,才能做好驱动的开发任务。博主最近做一个虚拟设备驱动,再次体验到了什么叫纸上得来终觉浅,绝知此事要躬行。现实中,大部分开发人员(包括博主本人)都是应用开发者,无论是做产品还是项目,主要都是面向特定的业务。而内核,毕竟是一个通用系统,很多情况下是拿来就用,开箱就用。专门做内核开发的人员还是少数。这其中的大部分,也都是主要做驱动开发的。原创 2023-04-09 13:37:16 · 681 阅读 · 0 评论 -
关于Linux下调试
关于CPU执行上下文的思考原创 2023-02-23 21:58:51 · 368 阅读 · 0 评论 -
内核调试之Panic-Oops日志分析
关于内核panic和oops错误日志信息的分析记录原创 2023-02-22 21:51:49 · 1960 阅读 · 0 评论 -
Linux系统之Uboot、Kernel、Busybox思考之四
继续介绍设备和文件方面的内容原创 2023-02-21 22:07:14 · 2149 阅读 · 0 评论 -
Linux系统之Uboot、Kernel、Busybox思考之三
继续介绍中断、上下文、锁、内存管理等内容原创 2023-02-21 21:31:09 · 643 阅读 · 0 评论 -
Linux系统之Uboot、Kernel、Busybox思考之二
继续内核的分析思考原创 2023-02-21 21:08:34 · 523 阅读 · 0 评论 -
Linux系统之Uboot、Kernel、Busybox思考之一
uboot kernel busybox 相关内容思考记录原创 2023-02-21 19:58:10 · 1559 阅读 · 0 评论 -
一文搞懂 | Ftrace 的实现原理
介绍用于内核观测的工具ftrace的实现原理转载 2023-02-16 18:11:40 · 243 阅读 · 0 评论 -
Linux内核Page Cache和Buffer Cache关系及演化历史
如果你对page cache和 buffer cache的关系总是搞不清的话,强烈建议看看本文。转载 2023-02-12 16:01:33 · 227 阅读 · 0 评论 -
《Linux是怎样工作的》干货整理
Linux是怎样工作的这本书知识点整理。原创 2023-02-07 22:04:06 · 2004 阅读 · 0 评论 -
一言不合就汇编--分析max宏的两种异常情况
通过汇编分析max宏的两种异常情况原创 2022-09-28 22:47:47 · 633 阅读 · 0 评论 -
深入思考:如何理解CPU的负载
思考CPU的负载到底代表了什么,如何评估CPU的负载。原创 2022-10-05 13:51:02 · 3286 阅读 · 0 评论 -
学内核之十七:基础的重要性怎么强调都不过分
关于内核里页表使用数组指针的一点探究原创 2022-12-25 22:00:25 · 675 阅读 · 0 评论 -
学内核之十六:linux内存管理结构大蓝图
Linux内存管理结构大蓝图整理原创 2022-11-19 22:38:59 · 408 阅读 · 0 评论 -
学内核之十五:应用层如何实现原子访问
探究应用层的原子访问如何实现原创 2022-10-30 22:22:31 · 510 阅读 · 0 评论 -
学内核之十四:三言两语说说锁
关于软件开发中的锁的实现原理,进行一个概括性的描述原创 2022-10-30 13:38:09 · 214 阅读 · 0 评论 -
从Linux内核学软件设计和开发
从Linux内核学习想到的软件设计和开发思想、方法原创 2022-10-16 18:27:00 · 986 阅读 · 0 评论 -
学内核之十三:关于RCU锁的一些思考
关于linux中读写-拷贝-更新(RCU)锁的一些思考原创 2022-10-16 14:39:34 · 590 阅读 · 0 评论 -
学内核之十二:从slab内存管理想到的
学内核slab感受随便谈谈原创 2022-09-14 22:55:16 · 319 阅读 · 0 评论 -
学内核之十二:从slab内存管理想到的----之前言
从内核的内存管理说开来原创 2022-09-14 22:27:19 · 236 阅读 · 0 评论 -
学内核之十一:ARM64屏障指令使用指南
介绍arm平台屏障指令原创 2022-08-28 23:10:40 · 1967 阅读 · 2 评论 -
学内核之十:实践一把,一个Oops问题的分析及解决
通过一个oops问题实践内核问题的分析原创 2022-08-25 08:41:35 · 462 阅读 · 1 评论 -
学内核之九:学会偷懒,善用内核的调试日志
使能内核early_param,获取保留日志,快速上手分析。原创 2022-08-21 18:39:35 · 276 阅读 · 0 评论 -
学内核之八:Linux内核的smp_processor_id是如何实现的
分析内核明确当前代码对应的CPU编号的过程原创 2022-08-18 23:02:23 · 2742 阅读 · 0 评论 -
学内核之七:问题三,全局变量加锁与每CPU变量
深入理解每CPU变量的锁处理。原创 2022-08-14 22:07:45 · 1117 阅读 · 0 评论 -
学内核之六:问题二,原子操作与锁
原子操作和锁的底层是如何实现的呢?原创 2022-08-05 21:07:59 · 297 阅读 · 0 评论 -
学内核之五:问题一,关于上下文切换
利用衔接图考虑上下文切换原创 2022-07-31 22:18:48 · 799 阅读 · 0 评论 -
学内核之四:关于内核与硬件的衔接
如果通过硬件辅助理解内核底层的一些功能点原创 2022-07-31 18:08:16 · 382 阅读 · 0 评论 -
关于Linux内核学习的思考
学内核方法的一些思考原创 2022-07-23 11:52:37 · 204 阅读 · 0 评论 -
分清概念十分重要之--Linux中的各种队列
先列个框架,后续丰富完善。提这个问题,是因为在Linux内核学习中,遇到过一个让人啼笑皆非的问题。这个问题是啥呢?提个引子,在实际生活中,可能每个人都有过这样的经历,就是总是将某两个明明完全不同的概念搞混。原因有可能是两个概念发音比较接近,或者字形相似,亦或者没有什么相似点,而只是在大脑中奇怪的产生了关联而已,就像量子作用。回到开头,说说我的这个问题。有一段时间,对于Linux中将wait_queue加入等待队列头,然后再等待被唤醒的逻辑总是想不清楚,直到后来有一天突然搞明白,我是将等待队列和工作队原创 2022-05-20 22:54:47 · 1502 阅读 · 0 评论 -
学内核之三:使用GDB跟踪内核调用链
学内核之一:基于QEMU搭建Linux内核启动调试环境_启动Linux内核学内核之二:基于QEMU搭建Linux内核运行调试环境_加载文件系统目录一 引子二 为什么选择Oops三 构建模拟环境四 触发问题 五 调试通过之前的两篇,我们利用QEMU构建了基于ARM平台的Linux调试系统。现在,我们就可以基于此对一些问题进行研究。最常用的,我想肯定是函数调用了。比如某个函数是怎么调用过来的。另外就是,产生某种问题或现象时,都调用了哪些函数。这里,我们以内核Oops为例,来看看产生异常后,内核是如何调用处理的。原创 2022-07-02 19:39:23 · 1058 阅读 · 0 评论 -
学内核之二:基于QEMU搭建Linux内核运行调试环境
在上一篇文章中,我们展示了通过QEMU仿真软件来运行Linux内核的过程。因为是仿真,所以我们可以构建不同架构平台的环境来进行调试,这对开发者学习内核非常友好。当然,为了简化过程且能够有一定代表性,平台选择了ARM。学内核之一:基于QEMU搭建Linux内核启动调试环境_龙城赤子的博客-CSDN博客显然,基于上文的环境,我们只能调试内核的启动过程。这是因为没有提供根文件系统,内核启动后,加载文件系统时就会异常停止,自然也无法执行shell等待用户输入。当我们想要调试一些运行过程中的内容时,就很不方便了,甚至原创 2022-06-01 23:28:36 · 1720 阅读 · 0 评论 -
学内核之一:基于QEMU搭建Linux内核启动调试环境
在正式开始之前,需要思考一个问题,如何搭建一个便捷的Linux内核调试环境。当然,你可以直接求助于搜索引擎。这没有错。但是,如果让搜索引擎代替了自己的思考,那么,其实是得不偿失的。这样一来,你就会永远处于低水平重复的境地,而别人则不断的给你提供着解决方案。在开始标题所述的工作之前,我也从搜索引擎找了很多现成方案,基本上大同小异。但是,一番搜索下来,大家提供的都是结果,对于为啥可以这样做,却鲜有提及。很可能第一个人提供了解决方案后,其他人都在上一个人的思路或者路线上,重新进行了微小的修改,并将其发布出原创 2022-05-29 22:16:18 · 2162 阅读 · 0 评论