
Linux内核分析
文章平均质量分 94
Lion 莱恩呀
一个热爱分享高性能服务器后台开发知识的博主,目标是通过理论与代码实践的结合,让世界上看似难以掌握的技术变得易于理解与掌握。技能涵盖了多个领域,包括C/C++、Linux、Nginx、MySQL、Redis、fastdfs、kafka、Docker、TCP/IP、协程、DPDK等。
展开
-
你对工作队列了解多少?深入了解 Linux Workqueue 的工作原理与应用
在 Linux 内核中,workqueue 是一个重要的机制,用于处理那些不紧急且适合异步执行的任务。本文将详细介绍 workqueue 的基本概念及其在中断处理中的作用,揭示其如何通过后台线程提高系统的响应速度和性能。我们将探讨 workqueue 的实现原理、创建与销毁过程,并讨论如何通过该机制优化系统任务调度。掌握这些知识将有助于提升系统的效率和可靠性。原创 2023-06-26 21:31:06 · 1417 阅读 · 3 评论 -
【社区图书馆】操作系统的经典书籍
《操作系统》的知识结构比较清晰,按照操作系统的不同模块进行分类和讲解,便于读者理解各个模块之间的关系;《操作系统》的内容全面,包含了操作系统的各个方面,包括进程管理、内存管理、文件系统、输入输出等。知识点讲解清晰,通俗易懂,附加了大量的图表和实例,方便读者理解。首先,从内容深度上,《计算机操作系统》相对来说更加深入全面,涉及到了更多的操作系统设计原理、实现细节以及相关技术,适合专业人士和高级学者阅读;其次,《操作系统》的相对来说通俗易懂,注重将抽象的概念转化为具体的例子和实践操作,让读者能够轻松理解;原创 2023-04-24 09:47:46 · 1102 阅读 · 0 评论 -
深入解析Linux内核网络协议栈以及套接字sk_buff
网络协议在传输数据的过程中,数据要进入内核的网络协议栈,通过协议族(TCP、UDP等),每一层之间当作比特流传输到网络中,而且,每一层收到数据都会封装相应的协议首部。分用:当目标主机收到以太网数据帧时,数据信息开始从内核网络协议栈中由底向上进行操作,同时要去掉各个层次协议上的报文首部,每一层协议都会检查报文首部当中的协议标识(比如IP有IP首部、TCP有TCP首部),确保接收数据信息能上上层协议。发送数据时顺序相反,各种协议产生的数据(首部和净荷)依次向更低的层传递,直至最终发送。原创 2023-04-17 19:31:28 · 2628 阅读 · 1 评论 -
Linux内核模块实现内存池(mempool_t)
函数 mempool_alloc(mempool_t *pool,gfp_t gfp_mask) 功能:直接从内存池当中分配一个内存元素。实际使用中可根据具体场景进行内存池创建和使用,内存池的使用调用mempool_alloc函数。(4)kmem_cache_destroy():释放内存缓存。(1)kmem_cache_create():创建内存缓存。(3)mempool_destroy():释放内存池。(2)mempool_create():创建内存池。通过自旋锁保护对象字段。原创 2023-03-30 18:05:48 · 1914 阅读 · 4 评论 -
从内部看Linux内核:理解页表和页表缓存的工作原理
【页表缓存】:CPU 内存管理单元(MMU),处理器制造厂商在内存管理单元中增加的一个高速缓存(称为页表缓存)。作用将虚拟地址转换成物理地址。【页表】:特殊数据结构,存放系统空间的页表区域(存放逻辑页与物理页帧的对应关系)。每个进程都有自己的页表,PCB 表中有指针指向页表。(1)逻辑地址(页号,偏移量),逻辑地址就是虚拟地址。(2)物理地址(页框号,偏移量)。【页框】:内存中的块。【页】:进程中的块。原创 2023-03-29 21:24:01 · 1861 阅读 · 1 评论 -
实战教程:使用vmalloc和kmalloc系统调用开发可靠的Linux内核模块
本实战教程将详细介绍如何使用vmalloc和kmalloc系统调用来开发可靠的Linux内核模块。我们将深入探讨vmalloc和kmalloc系统调用的功能和用法,解释它们在内核模块开发中的重要性。通过具体的示例和代码演示,读者将学习如何正确地使用这两个系统调用来进行内存分配和管理,以确保内核模块的可靠性和性能。本教程适用于那些希望深入了解Linux内核模块开发,并希望通过使用vmalloc和kmalloc系统调用来构建可靠的内核模块的开发人员。原创 2023-03-28 09:28:42 · 2075 阅读 · 13 评论 -
Linux内核模块开发之创建slab内存缓存(kmem_cache_*)
本文将深入探讨Linux内核中的内存管理机制和slab内存缓存的概念。我们将解释内存管理机制在操作系统中的作用,介绍slab内存缓存的结构和特点,并讨论创建专用的内存缓存编程接口的方法。通过详细的实现步骤和示例代码,读者将能够深入了解内存缓存的数据结构和实际应用。本文将为初学者和有经验的开发人员提供有关内存管理和slab内存缓存的全面指南,帮助他们优化系统性能并构建高效的应用程序。原创 2023-03-27 16:26:01 · 1413 阅读 · 1 评论 -
Linux 内核内存管理:虚拟地址空间、伙伴系统和块分配器
Linux 内核内存管理是一个复杂而强大的系统,它负责管理计算机的物理内存并为进程提供虚拟地址空间。本文介绍了 Linux 内核内存管理的三个关键组件:虚拟地址空间、伙伴系统和块分配器。虚拟地址空间允许每个进程拥有自己的私有地址空间,其中包含代码、数据和堆栈。这提供了内存隔离,防止进程相互干扰。伙伴系统是一个内存分配器,它将内存划分成不同大小的块。当进程需要内存时,伙伴系统会找到一个合适的块并将其分配给进程。伙伴系统高效且可扩展,可以处理大内存系统。块分配器用于分配和释放小块内存。原创 2023-03-09 10:22:36 · 1179 阅读 · 0 评论 -
理解 Linux 调度机制:从优先级到调度类
Linux 内核调度机制是 Linux 系统的核心组件,它负责管理和分配 CPU 资源给各个进程。本文深入剖析了 Linux 内核调度机制,包括进程优先级、调度策略和调度类。文章首先介绍了进程优先级,它决定了进程获得 CPU 时间的优先级。然后,文章讨论了不同的调度策略,包括完全公平调度器 (CFS)、实时调度器和 I/O 调度器。接下来,文章深入探讨了调度类,它是 Linux 内核用来对进程进行分组和管理的机制。文章解释了不同的调度类,包括 CFS 调度类、实时调度类和 I/O 调度类。原创 2023-03-06 09:52:37 · 3529 阅读 · 0 评论 -
Linux 进程原理剖析:深入内核源码,揭开进程运作机制
深入探讨了 Linux 进程的内部运作原理,从内核源码的角度提供了对进程管理的全面理解。本文从进程的基本概念开始,逐步深入到内核数据结构和算法,揭示了 Linux 如何创建、调度、同步和终止进程。原创 2023-03-04 17:11:18 · 1640 阅读 · 1 评论