- 博客(91)
- 收藏
- 关注
原创 Linux内核进程调度实战案例分析
一、基础知识一、基础知识1.current在内核中的含义2. printk与dmesg-cdmesg-cdmesg -cdmesg -cprintkprintkdmesgprintkKERN_DEBUGKERN_INFOKERN_ERRKERN_DEBUGKERN_ERR3. unlikely宏的作用unlikelyrootunlikelyunlikely4.kthread_create和kthread_create_on_node的区别5.Linux中创建内核线程、用户线程和LWP的API。
2025-04-02 19:08:21
711
原创 Linux内核内存布局与堆管理
一、Linux内核内存布局一、Linux内核内存布局64位Linux一般使用48位来表示虚拟地址空间,45位表示物理地址。通过命令: cat /proc/cpuinfo。
2025-04-02 09:57:43
298
原创 Linux内核调度器以及CFS调度器
1.调度:就是按照某种调度的算法设计,从进程的就绪队列当中选取进程分配CPU,主要是协调对CPU等等相关资源使用。进程调度的目的:最大限度使用CPU。2.如果调度器支持就绪状态切换到执行态,同时支持执行态切换到就绪态,就成该调度器为抢占式调度器。
2025-04-01 12:47:35
910
原创 进程原理以及系统调用
一、进程\进程生命周期一、进程\进程生命周期1.进程操作系统作为硬件的使用层,提供使用硬件资源的能力,进程作为操作系统使用层,提供使用操作系统抽象出的资源层的能力。进程:是指计算机中已运行的程序。进程本身不是基本的运行单位,而是线程的容器。程序本身只是指令、数据及其组织形式的描述,进程才是程序(那些指令和数据)的真正运行实例。Linux 内核把进程叫做任务(task),进程的虚拟地址空间可分为用户虚拟地址空间和内核虚拟地址空间,所有进程共享内核虚拟地址空间,每个进程有独立的用户虚拟地址空间。
2025-03-31 21:54:02
770
原创 进程间通信的7种方式
它提供了一种网络编程接口,通过创建套接字,绑定地址,监听连接(服务器端),发起连接(客户端)等操作,实现进程间数据传输。:特殊类型文件,在文件系统中有实际路径名,允许不同进程通过读写这个文件来实现通信,可用于有亲缘关系或无亲缘关系的进程间通信。:在一个日志监控系统中,日志生成进程将日志信息写入命名管道,日志分析进程从命名管道中读取日志信息进行分析处理。:父进程创建匿名管道,向管道写入数据,子进程从管道读取数据。:多个进程要访问同一文件,用信号量控制,保证同一时刻只有一个进程能写入文件,避免数据混乱。
2025-03-31 16:26:36
683
原创 Linux内核perf性能分析工具案例分析
通过perf top的输出,可快速定位系统中资源消耗最大的函数。例如图中内核函数和占据较高比例,若系统存在 CPU 利用率过高的问题,就可优先分析这些函数的逻辑是否存在优化空间。
2025-03-30 22:28:48
1402
原创 保存中断上下文
【保存中断上下文】【保存中断上下文】处理器总是处于如下状态当中的其一:1.用户态:运行域用户空间。2.内核态:运行于进程的上下文,内核代表进程运行于内核空间。3.内核态:运行域中断上下文,内核代表硬件运行于内核空间。
2025-03-30 14:44:09
819
原创 中断管理常用API(四)
一、request_irq(...)一、request_irq(...)函数主要用于硬中断相关操作,它的核心作用是把一个中断处理函数和特定的中断号进行绑定。当硬件设备触发该中断号对应的中断时,内核就会调用绑定的中断处理函数,像这类。此函数在多种硬件设备驱动中都会被使用,不只是系统时钟(GP Timer)驱动。在驱动开发里,只要涉及到硬件中断处理,一般都会借助来注册中断处理函数。如果函数申请中断成功,会返回 0;若申请失败,则返回一个负的错误码,以此来表明具体的错误原因。
2025-03-29 18:44:09
770
原创 中断管理常用API详解(三)
该函数会暂时禁止给定的tasklet被tasklet_schedule调度,知道这个tasklet被再次enable。若这个tasklet正在当前执行,这个函数忙等到这个tasklet退出。该函数主要功能为增加tasklet_struct结构体变量中的count字段的值,此结构体描述的软中断不能被调度执行,使其处于睡眠状态。该函数的主要功能是增加软中断描述符的count成员的值,让软中断处于睡眠状态(不能响应对应的中断)。一、tasklet_disable_nosync(...)结束后再禁用后续执行,而。
2025-03-29 17:18:08
507
原创 中断管理常用API详解(二)
一、__tasklet_hi_schedule(...)一、__tasklet_hi_schedule(...)该函数的主要功能是将软中断具有比较高的优先级的任务优先调度处理。具体Linux内核源码设计如下:参数t:表示软中断的描述符添加到tasklet_hi_vec的尾部,获取CPU资源,被调度执行。
2025-03-29 16:47:59
436
原创 中断管理常用API详解(一)
通过此 tasklet_schedule () 函数修改中断状态值,设置 state 字段的值为 1,证明此中断被调用,将它加入中断等待队列当中。然后调用函数 __tasklet_schedule 将中断加入 tasklet_vec 中断向量链表的尾部,等待获取 CPU 资源并被调度处理。不管动态还是静态,都需要传递一个函数地址,此函数就是每个 tasklet 自己需要实现的处理函数 func 来改变一个 tasklet 对象状态。一、tasklet_init(...),本质是一个 per-CPU 的。
2025-03-29 15:37:48
528
原创 Linux内核审计规则及其数据结构
一、基本概念一、基本概念在Linux内核中,是一种安全机制,用于跟踪和记录系统中发生的安全相关事件,例如用户操作、文件访问、系统调用等。其核心目标是提供对系统活动的透明监控,便于事后审查、入侵检测或合规性检查。Linux内核审计机制的核心功能在于实时监控和记录系统中的安全关键事件(如系统调用、文件访问和用户操作),通过动态规则管理允许管理员在不重启系统的条件下灵活调整监控策略,结合内核级高效过滤和异步日志处理,确保对生产环境性能影响最小;
2025-03-28 22:25:00
981
原创 Linux中断处理流程
结构体作用irq_chip提供 GIC 操作方法(ackeoimask等),直接控制中断控制器硬件行为。irq_domain管理硬件中断号到 Linux 中断号的映射,确保内核正确识别中断来源。irq_desc存储中断描述符,维护irqaction链表,是中断处理的核心管理结构。irqaction包含网卡驱动的中断处理函数,执行数据读取、协议处理等业务逻辑。
2025-03-28 16:42:14
930
原创 中断控制器及域
一、中断控制器一、中断控制器外围设备不是把中断请求直接发给处理器,而是发给中断控制器,由中断控制器转发给处理器。ARM公司提供一种标准的中断控制器,称为通用中断控制器,如GIC v2。GIC架构规范有四个版本:V1-V4。GIC v2最多支持8个处理器,GIC v3最多支持128个处理器,GIC v3和GIC v4只支持ARM处理器。厂商研发自己的ARM处理器,向ARM公司购买GIC的控制权,ARM公司提供的GIC型号有:GIC-400,GIC-500,GIC-600。
2025-03-27 01:18:45
971
原创 网络相关知识总结2
将一种网络协议的数据包封装在另一种网络协议的数据包中进行传输。比如,把 IPv6 数据包封装在 IPv4 数据包里,让它能在仅支持 IPv4 的网络中传输 。在这个过程中,源网络与传输网络边界、传输网络和目的网络边界,会用网关创建跨网络的隧道端点。发送端的隧道端点将待传输的数据包加上隧道协议的包头等进行封装后发送,接收端的隧道端点收到数据包后,去除隧道协议相关部分,还原出原始数据包,再按正常流程转发到目标设备。 这种技术通常用于连接不同网络间的互联互通,比如若两个 IPv6 网络被 IPv4
2025-03-26 18:47:56
944
原创 Tasklet_等待队列_工作队列
tasklet实际上就是一个内核定时器,在一个“软中断”的上下文执行(以原子模式),在使能硬件中断执行异步任务的一个内核机制。软中断是将操作推迟到未来执行的最有效的办法。但该延期机制处理起来非常复杂,因为多个处理器可以同时且独立处理软中断,同一个软中断的处理程序例程可以在几个CPU上运行。 各个tasklet中的数据结构称作tasklet_struct,内核源码如下: tasklet_schedule将一个tasklet的任务注册到系统中: tasklet的生命周期
2025-03-26 00:14:41
1081
原创 网络相关的知识总结1
一种分布式介质访问控制协议,设备在发送数据前监听信道是否空闲。若空闲则发送,否则随机退避后再尝试。冲突避免通过随机等待时间实现69。
2025-03-25 21:30:51
1105
原创 epoll原理以及系统调用案例分析
一、epoll原理一、epoll原理二、epoll系统调用使用c库封装的3个epoll系统调用,具体源码如下:此系统调用对文件描述符epfd引用的epoll实例执行控制操作,它要求操作op对目标文件描述符fd执行。op参数有效值为:EPOLL_CTL_ADD/EPOLL_CTL_MOD/EPOLL_CTL_DEL.等待 epoll 文件描述符上的 I/O 事件。epfd 引用的 epoll 实例上的事件,事件所指向的存储区域将包含供调用者使用的事件。
2025-03-23 21:20:36
1171
原创 iptables和netfilter内部报文处理
nat 表:实现地址转换,用于共享上网、端口转发。mangle 表:修改数据包元数据或打标记,支持高级网络管理。filter 表:核心过滤功能,控制流量进出。raw 表:优化性能,豁免连接追踪。netfilter是防火墙真正的安全框架,netfilter位于内核空间。iptables其实为一个命令行工具,位于用户空间。netfilter功能(NAT、数据包内容修改、数据包过滤的防火墙功能)。
2025-03-22 21:30:40
1189
原创 RDMA栈架构
特性InfiniBand传统 PCI/PCI-X传输模式全双工(双向同步)半双工(单向交替)延迟极低(微秒级)较高扩展性支持大规模集群互连限于本地总线连接适用场景高性能计算、分布式存储传统服务器内部设备连接2.InfiniBand硬件组件_编址InfiniBand根其他互联技术一样,它的规范页描述多种硬件组件,其中一些事数据包端点(数据的始发站或者目的地),有些会在子网或子网之间转发数据包。常见组件 :主机信道适配器(HCA)、交换机、路由器。
2025-03-22 20:04:27
841
原创 内核无线子系统模块
定义与功能Mesh Point(MP)是网状网络中的基础节点,仅专注于数据路由和中继功能,不具备客户端接入能力。它通过无线链路与其他节点(如MP、MAP或MPP)连接,扩展网络覆盖范围并优化数据传输路径。MP的核心作用是解决信号覆盖盲区,适用于需要长距离传输或复杂环境下的网络扩展。示例解析:户外无线中继器在大型户外场景(如公园、农田或矿区),MP可作为中继节点部署在信号难以穿透的区域。例如,某品牌户外中继器通过定向天线连接远处的MPP(网关),再将信号转发至另一区域的MP,形成“接力”网络。
2025-03-22 15:53:50
461
原创 VLAN:逻辑隔离冲突网络的详细讲解
是一种将物理网络划分为多个逻辑独立网络的技术。通过VLAN,不同逻辑网络可以在同一物理网络基础设施上运行,彼此隔离,互不影响。通过VLAN将A和B划分到不同的逻辑网络中,即使IP地址相同,也能实现逻辑隔离。:即使设备连接到同一台交换机,不同VLAN的设备无法直接通信。即使物理连接在同一交换机上,不同VLAN的设备无法直接通信。网络A和网络B使用不同的逻辑IP段(如。部门A划分到VLAN 10,使用IP段。:设备无法区分目标网络,导致路由混乱。:减少广播风暴的影响,提升网络性能。:分配到VLAN 10。
2025-03-21 18:33:54
888
原创 Linux内核IPv4路由选择子系统
有时路由选择条目可能是次优的,在这种情况下将发送ICMP重定向消息。次优条目的主要判断标准是:输入设备和输出设备相同。
2025-03-20 22:02:46
1071
原创 Linux内核epoll系统调用以及内核实现
一、epoll基本知识一、epoll基本知识epoll 是 Linux 系统下实现 IO 多路复用的关键技术,用于网络编程中高效管理大量文件描述符(fd)。它能监听多个 fd 的事件(如读取、写入事件),当特定事件发生时,内核会主动通知应用程序处理,无需像传统 select/poll 那样轮询所有 fd,还支持非阻塞监听,极大提升 IO 处理效率。二、应用层api。
2025-03-20 17:58:12
771
原创 Linux内核Netfilter框架分析
入站数据包先经过,路由选择后:若发往本地,进入,交付本地应用;若需转发,进入,再经发送。本地生成的出站数据包先经过,再通过发送。这些挂接点为 Netfilter 实现数据包过滤、NAT、流量控制等功能提供了核心支撑。NF_HOOK数据包在内核网络栈中传输时,会在某些地方调用NF_HOOK宏使用挂接函数。pf:协议簇,对于 IPv4 用;对于 IPv6 用。hook:表示 5 个 Netfilter 挂接点之一,如。skb。
2025-03-19 19:59:56
1121
原创 Linux内核Netfilter使用实战案例分析
该代码是演示案例,丢弃ICMP包并打印,可以用ping命令查看。挂接点捕获数据包并进行复制分析,同时阻止原数据包继续传输的功能。将数据包送入用户空间队列,由用户空间程序(如。发现ping已经被拦截。NF_QUEUE演示。
2025-03-19 19:22:15
509
原创 互联网安全协议IPsec
一、IPsec基础知识一、IPsec基础知识IPsec(Internet Protocol Security,缩写为IPsec,即互联网安全协议),是一个协议包,通过对IP协议的分组进行加密和认证来保护IP协议的网络传输协议族(一些相互关联的协议的集合)。
2025-03-18 17:41:42
1082
原创 内核ICMP协议分析
一、发送、接收ICMPv4消息一、发送、接收ICMPv4消息ICMP主要作用是发送有关网络层错误和控制消息的机制,让你能够通过发送ICMP消息来获取有关通信环境中问题的反馈。由于ICMP协议是TCP/IP协议栈的核心组成部分,用于传递网络层的控制信息,是网络通信的底层基础已被深度集成到内核代码中,因此不能构建为内核模块动态加载和卸载。ICMP也可以被用来发起各种安全攻击。
2025-03-18 15:22:30
861
原创 Linux内核传输层DCCP分析
一、数据包拥塞控制协议DCCP一、数据包拥塞控制协议DCCPDCCP 是一种不可靠的拥塞控制传输协议,它借鉴 UDP 和 TCP,并添加新功能,与 UDP 一样,它是面向消息且不可靠的,与 TCP 一样,它是面向连接的,且将使用三次握手机制来建立连接。每个 DCCP 数据包开头都是一个 DCCP 报头。DCCP 报头最短 12 字节。DCCP 使用 12-2020 字节的变长报头,具体长度取决于使用的是否是短序列号以及包含哪些 TLV 数据包选项。
2025-03-17 18:40:12
1074
原创 Linux内核传输层TCP源码分析
tcp_v4_rcv函数是 Linux 内核中用于处理 IPv4 TCP 数据包接收的核心函数。它负责接收来自网络的 TCP 数据包,进行一系列的有效性检查,如数据包类型、头部长度、校验和等,查找对应的套接字,根据套接字的状态进行不同的处理,最后将数据包传递给合适的处理函数进行进一步处理。
2025-03-16 16:59:33
1159
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人