[Android稳定性] 第036篇 [原理篇] 理解中断上下文、进程上下文以及进程调度之间的关系 2月前查看 评论
[Android稳定性] 第036篇 [原理篇] 理解中断上下文、进程上下文以及进程调度之间的关系

一、三者概念的梳理 1.1 进程上下文(Process Context) 当内核代码是在为一个具体进程执行某项任务(比如响应系统调用)时,就是在“进程上下文”。 是普通用户或内核线程运行的上下文。 可以被调度、休眠、阻塞。 拥有完整的进程信息(task_struct)。 可以执行阻塞操作,比如 sl

【深入内核】Linux 内核栈详解:你所需要知道的一切 2月前查看 评论
【深入内核】Linux 内核栈详解:你所需要知道的一切

这篇文章详细介绍了Linux内核栈的概念、重要性以及在使用过程中可能遇到的常见问题。以下是摘要总结: 文章首先解释了内核栈的定义及其在内核代码运行时的作用,强调每个线程都有一块独立的内核栈。在ARM64架构下,内核栈大小默认为16KB,不可扩展。内核栈中保存了函数调用链、局部变量、寄存器上下文等信息。 文章还探讨了内核栈的常见错误操作,如分配过大的数组或返回栈上变量的地址,可能导致栈溢出等问题。并对比了内核栈与用户栈的差异。 最后,文章提供了调试内核栈的方法和内核栈溢出的日志示例,给出了避免内核栈溢出的建议,包括避免在内核栈上分配大数组、使用kmalloc分配大缓冲区以及开启DEBUG_STACK_USAGE检测等。

[Android稳定性] 第031篇 [原理篇] Linux内核内存检测工具KASAN 2月前查看 评论
[Android稳定性] 第031篇 [原理篇] Linux内核内存检测工具KASAN

本文介绍了Kernel Address Sanitizer (KASAN) 的功能、原理和配置方法。KASAN 是一个动态检测内存错误的工具,主要用于检测内存越界访问和使用已释放的内存等问题。它通过使用“额外”的内存来标记内存的状态,并在每次内存访问时检查对应影子内存的值是否有效,从而实现内存错误的检测。KASAN 集成在 Linux 内核中,可以在编译内核时通过添加相应的配置项来启用。