![](https://img-blog.csdnimg.cn/20190927151053287.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Linux内核360度剖析
文章平均质量分 86
全面深度地解读Linux内核地设计运行机制,覆盖现代Linux内核。包含:
1)Linux内核架构地设计
2)Linux内核数据结构地设计和实现原理剖析
3)Linux内核各个重要子系统地实现
ichdream
这个作者很懒,什么都没留下…
展开
-
【Linux内核思辩】kmallo VS vmalloc,谁与争锋?
kmalloc()函数的操作与用户空间的malloc()函数非常相似,不同之处在于多了一个flags参数。kmalloc()函数是获取内核内存的简单接口,以字节为单位分配内存。如果需要整页内存,之前讨论的接口可能是更好的选择。然而,对于大多数内核分配,kmalloc()是首选的接口。该函数返回一个指向至少size字节长度的内存区域的指针。分配的内存区域是物理连续的。出错时,它返回NULL。内核分配总是成功的,除非可用内存不足。因此,在所有调用kmalloc()后,必须检查NULL并适当处理错误。原创 2023-04-11 18:15:21 · 293 阅读 · 0 评论 -
【Linux内核解剖】内核问题之softlockup以及应对之法
操作系统(Operating System, OS)是管理计算机硬件和软件资源、协调计算机系统中各个任务执行的基本软件。操作系统的核心组件是内核(Kernel),它负责处理系统调用、内存管理、进程调度等基本功能。内核是操作系统的基石,其稳定性和性能对整个系统至关重要。Linux内核中有两种类型的lockup:softlockup和硬lockup。它们都会导致系统无响应,但原因和表现有所不同。softlockup通常是由于内核中的一个或多个任务长时间占用CPU,导致其他任务无法得到执行;原创 2023-04-09 15:59:10 · 2275 阅读 · 0 评论 -
【shell高级特性】shell参数扩展
我们在编程生涯中,打交道最多的便是shell脚本了,帮助我们批量完成任务。但是,很多人对bash的使用其实是比较浅的,很多shell的高级特性没有涉入到。这节介绍下shell中的参数扩展。原创 2023-04-01 11:16:00 · 183 阅读 · 0 评论 -
【理论与实战篇】操作系统,从理论到实战:篇一,多系统引导
这一篇我们先来实现引导程序,即一个bootloader,用于引导后续的操作系统。为了方便,我们的程序设计遵循多系统引导协议,更加通用化。原创 2023-03-31 15:05:31 · 623 阅读 · 0 评论 -
【Linux内核动态追踪】kprobes深度剖析和实战
当你尝试加载一个未经验证的内核模块时,内核会输出 “module verification failed: signature and/or required key missing” 的错误信息,并且内核会被 “taint”,表示内核已经不再是干净的状态。这需要一些额外的步骤,包括生成公钥和私钥、使用私钥为内核模块创建数字签名、将公钥添加到系统的信任列表等。在 Linux 系统中,数字签名可以用于验证内核模块的完整性和真实性,从而防止未经验证的内核模块对系统的安全性和稳定性产生威胁。原创 2023-03-30 17:29:01 · 265 阅读 · 0 评论 -
【性能工具专题】内存分析工具之smem使用深度解析
PSS和USS可以帮助您识别和调试共享内存问题,而RSS可以帮助您了解进程实际使用的物理内存量。如果您需要更深入地了解进程的内存使用情况,则可以查看PSS、USS和RSS值的详细报告,以识别问题并进行调试。因此,PSS表示进程当前使用的内存量,其中包括共享库和代码的内存;RSS表示进程当前在RAM中驻留的物理内存总量,它包括进程所使用的所有内存,包括共享内存、私有内存和页缓存。当使用smem命令时,它将返回一个内存使用情况报告,其中包括一些缩写词,如PSS、USS和RSS。它可以统计的比较详细。原创 2023-03-27 17:39:32 · 692 阅读 · 0 评论 -
中断线程化,洞悉万象-从理论抽象级到代码实现级
尽管存在这些问题,中断线程化在很多实时和嵌入式系统领域已经变得非常普遍。许多驱动程序和系统已经成功地采用了线程化中断处理程序,从而改善了系统的实时性能和响应性。为了充分利用中断线程化的优势并减少潜在问题,驱动开发人员和系统设计者需要考虑以下因素:仅对需要实时性能和响应性的中断使用线程化处理程序。对于不需要实时性能的中断,可以继续使用传统的硬件中断处理程序。仔细权衡线程化中断处理程序的优先级,以确保高优先级任务可以及时抢占执行。在选择使用线程化中断处理程序时,注意避免不必要的上下文切换和调度开销。原创 2023-03-22 11:05:02 · 901 阅读 · 0 评论 -
ARM64异常模型之系统错误异常System Error
系统错误异常(System Error Exceptions)是处理器在遇到系统级别错误时引发的异常。这些错误通常与硬件故障、外部信号或系统总线错误有关。系统错误异常通常需要特殊的处理程序来诊断和处理,因为它们通常表明硬件设备、内存子系统或其他关键系统组件中存在问题。以下是一些常见的系统错误异常类型和相关说明:Synchronous External Abort(同步外部终止):这种异常在处理器试图访问发生错误的外部存储器位置时触发。原创 2023-03-20 22:24:37 · 1263 阅读 · 0 评论 -
精品品读:I’ll Do It Later: Softirqs, Tasklets, Bottom Halves, Task Queues, Work Queues and Timers
中断是对设备驱动程序的信号,表示有工作需要完成。然而,如果驱动程序在中断处理程序中做太多的工作,系统响应性能将会降低。直到Linux 2.3.42之前,避免这个问题的标准方法是使用bottom half或者task queue将一些工作调度到以后再做。这些处理程序在中断启用的情况下运行,处理时间较长对系统响应性的影响较小。为了实现更好的SMP可扩展性,用于softnet的工作引入了两个新的延迟工作的方法:softirq和tasklet。原创 2023-03-20 14:18:18 · 83 阅读 · 0 评论 -
中断延迟处理机制之Tasklet,从理论到实践
作为Linux内核中的下半部工作机制之一,tasklet有它存在的价值和意义,和其它的中断延迟工作机制互补。Tasklet是在I/O驱动中实现延迟执行函数的首选方法。如前所述,Tasklet是建立在两个名为HI_SOFTIRQ和的软中断之上。多个Tasklet可以与同一个软中断相关联,每个Tasklet都包含自己的函数。实际上,这两个软中断并没有什么区别,只是在函数中,它先执行HI_SOFTIRQ的Tasklet,再执行的Tasklet。Tasklet和高优先级Tasklet存储在和数组中。原创 2023-03-20 10:17:19 · 630 阅读 · 0 评论 -
Ftrace深度解析之篇一,开创者
Ftrace广泛应用于Linux内核的调试、性能分析和优化工作,为内核开发者提供了动态、低开销、灵活且易于使用的跟踪工具。此外,Ftrace还提供了过滤器和触发器功能,使得用户可以仅捕获感兴趣的数据,降低了分析和调试的难度。动态跟踪需求:内核开发者需要一种可以在运行时插入和移除探针的方法,以便在不修改内核代码或重新编译内核的情况下进行跟踪和分析。可扩展性:Ftrace是一个可扩展的框架,开发者可以为其添加新的跟踪器和事件,以满足未来的需求。这使得Ftrace成为了一个持续发展、适应不断变化需求的跟踪工具。原创 2023-03-19 18:46:55 · 91 阅读 · 0 评论