linux内核
文章平均质量分 96
分享linux内核各模块底层实现机制
码农hbk
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Linux uprobe 图文详解(一)uprobe实现原理
本文详细介绍了arm64下uprobe的详细实现原理!原创 2025-01-18 09:32:04 · 1504 阅读 · 0 评论 -
linux ptrace 图文详解(五) gdb设置硬断点、观察点
本文详细介绍了armv8中硬断点、观察点的实现原理,以及相关debug寄存器中各字段的含义。原创 2025-04-04 14:06:19 · 1094 阅读 · 0 评论 -
Linux signal 图文详解(二)信号发送
Linux中,信号(signal)是进程间通信的一种重要机制,用于通知进程、线程、进程组发生了某种事件。1)kill 系统调用/** - pid:目标进程 ID,特殊值含义:* pid > 0:发送信号给 ID 为 pid 的进程* pid = 0:发送信号给与当前进程同组的所有进程* pid = -1:发送信号给所有有权限发送的进程(除了 init 进程)* pid < -1:发送信号给进程组 ID 为 |pid| 的所有进程。原创 2025-09-01 23:34:42 · 1250 阅读 · 0 评论 -
Linux uprobe 图文详解(四)uretprobe 针对 longjmp/setjmp 的处理
本文介绍了 setjmp/longjmp 的实现原理、使用陷阱,以及uretprobe中针对 longjmp导致程序流改变 后的相应处理细节!原创 2025-02-15 12:05:49 · 738 阅读 · 0 评论 -
linux ptrace 图文详解(七) gdb、strace跟踪系统调用
本文介绍了gdb、strace通过ptrace监控被调试程序的所有系统调用的实现原理。原创 2025-04-25 23:43:16 · 1115 阅读 · 0 评论 -
linux ptrace 图文详解(四) gdb设置软断点
本文介绍了gdb中软断点的实现原理,以及软断点触发后内核的处理逻辑。原创 2025-03-29 16:04:35 · 1858 阅读 · 1 评论 -
linux ptrace 图文详解(三) PTRACE_ATTACH 跟踪程序
本文讲述了gdb attach的底层实现原理。原创 2025-03-22 09:01:54 · 1079 阅读 · 0 评论 -
Linux signal 图文详解(三)信号处理
信号处理在内核中的实现,主要就是获取pending信号,为pending信号设置好用户栈、寄存器上下文。当用户态信号处理完毕后,会借助sigreturn通过svc的方式再次陷入内核,进而恢复到原本的用户态上下文。原创 2025-09-05 01:26:35 · 1151 阅读 · 0 评论 -
Linux signal 图文详解(一)信号简介、信号注册
信号机制是在软件层面上对中断机制的一种模拟。两者之间不仅是概念上类似,实现上也相类似。就像中断机制中有一个“中断向量表”一样,在每个进程的task_struct中都有指针sig,指向一个signal_struct结构。在中断机制中,每种中断请求都可以加以屏蔽而不让处理器对之做出响应,在信号机制中也有类似手段。在所有进程间通讯机制中,只有信号是异步的。对信号的检测与响应总是发生在内核态task由于系统调用、中断或异常陷入内核后,从内核态返回到用户态的前夕;原创 2025-08-30 00:25:11 · 682 阅读 · 0 评论 -
Linux copy_from_user/copy_to_user 底层原理
在Linux中,用户空间(User Space)和内核空间(Kernel Space)是相互隔离的,用户空间的程序无法直接访问内核空间的内存,反之亦然。然而,在实际应用中,用户程序经常需要与内核进行数据交换,比如通过系统调用(System Call)传递参数或读取内核数据。为了安全高效地完成这种跨空间的数据拷贝,Linux内核提供了copy_from_user和copy_to_user这两个关键接口。它们的主要作用是::将数据从用户空间安全地拷贝到内核空间。:将数据从内核空间安全地拷贝到用户空间。原创 2025-06-21 18:37:18 · 1158 阅读 · 0 评论 -
linux ptrace 图文详解(九) gdb如何判断被tracee唤醒的原因
前序文章中,讨论了绝大多数 ptrace系统调用 在 gdb 中的使用场景,这些场景中有一个共同点:被调试程序(即:tracee)最终都会给父进程GDB发送SIGCHLD信号,并唤醒GDB的wait系统调用。这其中有一个很重要的点,前序文章中并没有展开详细讲解:GDB被唤醒后,是如何判断自己是被什么事件唤醒的、以及是被哪个调试任务唤醒的,被调试程序发生了什么事情?原创 2025-05-23 20:53:03 · 1164 阅读 · 0 评论 -
linux ptrace 图文详解(八) gdb跟踪被调试程序的子线程、子进程
本文介绍了gdb调试程序时,如何跟踪被调试程序创建的子进程/子线程。原创 2025-05-09 22:43:27 · 890 阅读 · 0 评论 -
linux ptrace 图文详解(一)基础介绍
ptrace 是 linux内核 提供的一个系统调用,并非一个标准的posix接口,ptrace 主要用于进程跟踪和调试。它运行一个用户态进程(通常称为跟踪器, Tracer)控制和监视另一个进程(称为被调试进程, Tracee)的执行。ptrace是许多调试跟踪工具(如:GDB、strace 等)的 “基座”,其函数原型如下:用于标识一个需要执行的操作;标识目标线程ID一个内存地址和附加信息,其语义因选择的操作而不同;原创 2025-03-08 14:09:02 · 2068 阅读 · 0 评论 -
Linux uprobe 图文详解(三)fork/spawn/exec针对uprobe的处理
在前面两篇文章中,详细介绍了 uprobe、uretprobe 的实现原理。本文将针对 fork、spawn、exec 系统调用中对uprobe的相关处理进行介绍。我们知道,uprobe/uretprobe可以对用户态程序进行实时打桩进行探测,而被打桩的用户态程序,在执行的过程中有可能会调用到 fork、spawn、exec 这一系列系统调用。这些场景下,同样需要针对uprobe进行相关处理。原创 2025-02-08 23:16:46 · 784 阅读 · 0 评论 -
Linux coredump原理 图文详解
本文介绍了coreudmp文件的组成内容,以及一个程序发生crash后的完整处理流程。用户态程序crash后,主要借助内核的信号机制,完成所有线程的同步、以及各种corner case的处理,最终由触发crash的线程,在内核态中完成coredump文件的生成工作,完成后所有线程都会走常规的退出流程。原创 2025-08-24 12:51:39 · 819 阅读 · 0 评论 -
Linux uprobe 图文详解(二)uretprobe实现原理
上篇文章中介绍了uprobe的实现原理,本篇将继续讲述uretprobe的实现原理。uretprobe是一种基于uprobe的函数级别探测技术,用于探测用户态程序某个具体函数的入口点、返回点。在函数的入口、返回时,会调用响应的钩子函数,该技术一般用于获取:函数运行时间函数返回值等信息。原创 2025-01-25 21:05:54 · 973 阅读 · 0 评论 -
linux ptrace 图文详解(六) gdb单步调试
本文介绍了gdb单步调试的底层实现原理以及代码细节。原创 2025-04-18 21:52:13 · 1099 阅读 · 0 评论 -
Linux rmap反向映射 实现原理 图文详解 【硬核干货】
本文结合源码、图文,深度剖析了 linux rmap 反向映射技术的底层实现原理。原创 2025-01-12 16:36:01 · 1403 阅读 · 0 评论 -
linux ptrace 图文详解(二) PTRACE_TRACEME 跟踪程序
本文介绍了gdb加载被调试程序进行调试运行的底层实现原理:PTRACE_TRACEME 的实现细节。原创 2025-03-14 23:56:26 · 1724 阅读 · 0 评论
分享