- 博客(435)
- 资源 (5)
- 收藏
- 关注
原创 【AI学Linux】04 - 源码目录深度解读
Linux内核源码目录结构解析 Linux 6.x内核包含约3000万行代码,7万多个文件,主要分为以下几个核心目录: arch/:架构相关代码,包含ARM64/x86/RISC-V等不同CPU架构的支持 drivers/:设备驱动,占内核代码量的60%以上 fs/:文件系统实现,包括VFS、ext4、xfs等 include/:内核头文件,定义API接口 kernel/:核心子系统,包含调度器、锁机制、中断管理等 mm/:内存管理,实现buddy system、slab分配器等 net/:网络协议栈 其他
2026-03-29 18:47:37
79
原创 【AI学Linux】03 - 子系统全景与依赖关系
Linux内核子系统概览 Linux内核由多个相互依赖的子系统构成,形成层次化架构。最基础的是"三件套地基":内存管理(负责物理/虚拟内存分配与回收)、进程调度(管理CPU资源分配)和中断/同步/时间(处理硬件中断与并发控制)。在这之上构建了设备驱动框架(包括总线/设备模型)、硬件基础设施(如时钟/DMA)以及各类设备驱动。 中间层包含块设备层(处理磁盘I/O)、网络栈(实现TCP/IP协议)和VFS(提供统一文件系统接口)。最上层是用户空间接口,通过系统调用、proc/sysfs等机制
2026-03-29 18:46:38
28
原创 【AI学Linux】02 - 子系统全景与依赖关系
Linux内核子系统概览 Linux内核由多个相互依赖的子系统组成,形成分层架构: 基础三件套:内存管理、进程调度、中断/同步/时间管理构成内核运行基础 设备驱动框架:包含总线/设备模型、硬件基础设施框架(时钟/电源/GPIO等) 功能子系统: VFS提供统一文件系统接口 块设备层处理磁盘I/O 网络栈实现TCP/IP协议 设备驱动直接管理硬件 用户接口:通过系统调用、procfs、sysfs等向用户空间暴露功能 各子系统间存在清晰的依赖关系:上层功能依赖下层基础设施,最终都建立在内存/调度/中断三大基础之
2026-03-29 18:45:45
31
原创 【AI学Linux】01 - 内核的角色:两个边界的仲裁者
内核角色与边界摘要 内核作为硬件资源管理者和用户程序服务提供者,核心功能包括硬件抽象、隔离保护和资源复用。它位于两个关键边界之间: 用户态-内核态边界:通过系统调用/异常/中断实现交互,严格隔离用户程序与内核空间 内核-硬件边界:通过MMIO/中断/DMA等方式与硬件通信 以read系统调用为例,完整穿越过程涉及用户态参数准备、特权级别切换、内核函数分派和结果返回,整个过程包含硬件状态保存、权限检查和数据拷贝等关键步骤。内核通过这种机制既保护系统稳定性,又为应用程序提供统一的服务接口。
2026-03-29 18:43:31
355
原创 【AI学Linux】内核架构总览
Linux内核架构概览 Linux内核作为硬件资源管理者和用户程序服务提供者,处于用户空间与硬件层之间。其主要架构特点包括: 核心子系统:内存管理、进程调度、VFS、网络栈和安全框架构成内核基础 分层结构:用户空间通过syscall与内核交互,内核通过MMIO/中断/DMA控制硬件 关键基础设施:包含设备模型、中断处理、DMA等底层支持系统 执行流程:以read()系统调用为例,完整穿越VFS、文件系统、块设备、驱动等多个子系统 调试方法:针对不同问题(性能、内存、IO等)需检查对应的子系统层 内核通过统一
2026-03-29 18:41:25
378
原创 【内存管理】mimalloc 深度解析:架构设计、核心创新与主流分配器对比
mimalloc(发音:mee-malloc)由微软研究院的 Daan Leijen 设计,2019 年在 ISMM 会议上发表论文,随后开源(MIT 协议)。项目地址:https://github.com/microsoft/mimalloc截至 v2.x,mimalloc 核心代码约8,000 行 C 代码,远比 jemalloc(~90K 行)和 tcmalloc(~40K 行)精简,却在多数 benchmark 中超越或持平它们。分配器开发者首发年份主要应用ptmalloc。
2026-03-24 16:30:19
203
原创 【Linux网络基础】TCP 数据包传输全流程深度解析
本文全面解析TCP协议工作机制,涵盖连接建立、数据传输和释放全过程。通过Wireshark抓包分析,详细讲解TCP头部结构、三次握手/四次挥手流程、可靠传输机制(序列号确认、超时重传)以及流量/拥塞控制(滑动窗口、拥塞算法)。文章还对比TCP与UDP差异,提供性能优化建议和常见面试题,是一份深入的技术指南,帮助读者全面理解TCP协议的核心原理和实现细节。
2025-12-20 10:53:20
1093
原创 【Linux网络基础】UDP (用户数据报协议) 数据传输全流程深度解析
摘要:本文深入解析UDP协议全流程,包括8字节精简头部结构、无连接传输特性及其与TCP的核心差异。详细阐述UDP数据从发送端应用层分片、网络层封装到接收端解复用的完整路径,分析内核协议栈处理函数(如udp_sendmsg/udp_rcv)和典型DNS交互场景。通过Wireshark抓包示例和Python代码演示,揭示UDP无可靠性保障但高效传输的特性,特别说明MTU限制(建议1472字节)及乱序处理需应用层自行实现。
2025-12-20 10:49:55
962
原创 【Linux网络基础】详解网络字节序与大小端模式 (Network Byte Order & Endianness)
本文详细介绍了计算机系统中的字节序概念,包括大端模式(Big-Endian)和小端模式(Little-Endian)的区别。大端模式将数据的高位字节存储在内存低地址端,符合人类阅读习惯;而小端模式则将低位字节存储在低地址端,是x86架构的标准。网络通信统一采用大端模式作为网络字节序,并通过htons/htonl等函数进行转换。文章还提供了检测系统字节序的C代码示例,强调了网络编程中必须遵守字节序转换规则的重要性。
2025-12-19 20:42:27
1180
原创 【Linux网络基础】详解 TCP 面向连接 vs UDP 无连接
摘要:本文详细对比了TCP和UDP两种传输协议的核心差异。TCP是面向连接的可靠协议,通过三次握手建立连接,提供确认、重传和排序机制,适合要求数据完整性的场景(如网页浏览、文件传输)。UDP是无连接的不可靠协议,直接发送数据包,不保证送达或顺序,但效率高、延迟低,适用于实时应用(如视频流、在线游戏)。文章还通过代码示例展示了两种协议在Socket编程中的不同实现方式,并建议根据应用需求选择协议:TCP保证可靠性,UDP追求传输效率。
2025-12-19 20:40:01
1234
原创 【Linux驱动开发】USB技术问题详解汇总
本文深入解析USB技术中的核心概念与实现机制,涵盖Host/Device架构、DWC控制器、Gadget子系统等关键技术。重点对比了Host端和Gadget端的USB Class Driver实现差异,并详细介绍了Function Endpoint的动态分配原理。特别探讨了Host端Gadget模拟机制(Dummy HCD)的虚拟测试方案,为USB驱动开发提供调试参考。文章还包含OTG功能详解和常见问题解答,是理解USB协议栈底层实现的实用指南。
2025-12-15 16:45:19
1506
原创 【Linux C/C++开发】Linux C/C++ volatile关键字深度解析
何时使用 volatile访问内存映射硬件寄存器 (MMIO)。信号处理函数中修改的变量。setjmplongjmp中需要保留的局部变量。何时不使用 volatile多线程同步(请使用, 或内核的spin_lock作为一种“轻量级锁”的替代品。内核开发建议避免直接声明volatile变量。使用进行受控访问。配合mb()rmb()wmb()处理硬件乱序。
2025-12-15 11:28:55
1324
原创 【Linux驱动开发】Linux Wakelock 机制技术详解
Linux Wakelock机制深度解析:从Android到Mainline的电源管理演进 Wakelock是Android引入的关键电源管理机制,允许应用/驱动显式阻止系统休眠。文章详细剖析了其技术背景、实现原理及演进历程:从Android专用补丁到Mainline的Wakeup Sources重构。核心分析了wakeup_source数据结构、电源管理子系统架构,以及典型应用场景如媒体播放和网络处理。同时提供了性能优化建议(推荐使用超时锁)和调试方法(PowerTop/Sysfs节点检查),帮助开发者解
2025-12-15 11:28:19
772
原创 【Linux C/C++开发】Linux环境下C/C++语言中extern修饰符全面技术指南
本文全面介绍了Linux环境下C/C++语言中extern修饰符的技术要点。extern用于声明变量或函数的外部链接性,实现跨文件共享数据/代码。文章详细解析了extern的核心特性、典型应用场景,以及在Linux系统编程中的特殊注意事项,包括与static的对比、动态库使用和GCC链接过程。通过完整代码示例展示了基础用法和C++中的extern "C"应用,并提供了常见问题排查方法和最佳实践建议,强调应合理使用全局变量并注意多线程安全问题。
2025-12-12 04:55:55
1085
原创 【Linux C/C++开发】Linux环境C/C++ static修饰符全面技术指南
本文深入解析Linux环境下C/C++中static修饰符的技术细节与应用。从基础概念入手,阐述static在不同上下文中的语义差异(函数内局部变量、文件作用域、类成员),包括存储期、链接属性和作用域控制。重点分析static在ELF符号表中的表现、内存模型(.data/.bss段)以及线程安全性问题。特别探讨了static在C++类中的应用(静态成员变量/函数)和模板类中的特性。文章还介绍了static在动态库开发中的作用,以及如何通过工具(readelf/nm)验证static符号的链接属性。适合需要深
2025-12-12 04:55:38
1036
原创 【Linux C/C++开发】Linux C/C++ 编程:声明、定义与前置声明深度解析
**Linux C/C++ 编程中,声明、定义与前置声明是核心概念。声明仅告知符号类型和名称(不分配内存),而定义会分配内存或生成代码。通过ELF文件分析可见,定义变量分别位于.data(已初始化)、.bss(未初始化)或.text(函数)节区,声明则生成Undefined符号。前置声明可解决循环依赖问题,特别适用于指针/引用场景。使用nm和objdump工具可验证符号表与内存布局。C++相比C在符号修饰和ODR规则上更为严格。常见错误包括访问不完整类型的成员,需确保前置声明仅用于指针/引用场景。
2025-12-11 19:09:00
744
原创 【Linux C/C++开发】Linux C/C++ 全局符号表(Global Symbol Table)技术详解
本文详细解析了Linux环境下ELF文件中的全局符号表技术。主要内容包括:1) ELF文件中符号表的位置与结构,重点分析.symtab和.dynsym节区及Elf64_Sym数据结构;2) 符号解析机制,涵盖静态链接期的强弱符号规则和动态链接期的全局符号介入与延迟绑定;3) 动态链接器ld.so的工作流程及符号版本控制机制。通过理论阐述结合可视化图表,全面展示了符号解析与动态链接的核心原理,为开发者深入理解Linux程序链接机制提供了系统性的技术参考。
2025-12-11 19:05:57
832
原创 【Linux C/C++开发】Linux 环境下 C/C++ 程序 strip 命令使用指南
Linux C/C++程序strip命令使用指南 本文详细介绍了Linux环境下strip命令的技术原理和实战应用。strip命令用于移除ELF二进制文件中的非必要信息,包括符号表和调试数据,从而减小文件体积但不影响程序运行性能。文章解析了ELF文件结构,对比了不同strip参数的效果,并提供了文件大小对比数据。最佳实践建议分离调试符号,便于后续调试。同时强调了动态库和静态库strip的区别,以及生产环境中结合gcc编译选项的使用策略。通过示意图直观展示了strip操作前后ELF文件结构的变化。
2025-12-11 18:02:06
1046
原创 【Linux C/C++开发】Linux C/C++ 编译参数详解:-I, -l, -L
本文详细解析了GCC/G++编译器中的三个核心编译参数:-I(头文件搜索路径)、-l(链接库文件)和-L(库文件搜索路径)。通过原理说明、流程图解和实战演示,展示了如何正确使用这些参数进行编译和链接。重点包括:-I参数的头文件查找优先级、-l参数的库命名规则和链接顺序要求、-L参数与运行时库查找的区别。最后通过完整示例演示了从编译库到链接运行的全过程,并解答了常见问题,如-L与LD_LIBRARY_PATH的区别、运行时找不到库的解决方法等。掌握这些参数对Linux C/C++开发至关重要。
2025-12-11 18:00:43
1050
原创 【Linux网络基础】Linux 路由表技术深度解析与实战指南
路由表 (Routing Table) 是 Linux 内核网络协议栈的核心组件,位于网络层 (Layer 3)。它的主要职责是根据数据包的目标 IP 地址,决定数据包的下一跳 (Next Hop) 去向。路由表和 NAT (网络地址转换) 是 Linux 网络栈中两个独立但紧密协作的子系统。Linux 支持多张路由表,通过策略路由可以根据源 IP、端口等条件选择不同的路由表。在多网卡或复杂网络环境中,Linux 内核遵循特定的流程来决定数据包的去向。(图 3: 多网卡环境下的路由决策流程图)
2025-12-11 15:23:27
799
原创 【Linux网络基础】计算机网络核心技术详解:网关与子网掩码
网关(Gateway)被称为“网络连接器”或“协议转换器”,是连接两个不同网络协议、架构或传输机制的网络的设备。:它像一把尺子,告诉电脑“前 24 位是不准动的网络号,剩下的位才是你可以分配给电脑的主机号”。当需要将一个大网络划分为多个小网络时(如前文案例),子网掩码从。子网掩码是一个 32 位的二进制数,必须结合 IP 地址使用。(Default Gateway),即路由器接口。每减少 1 位掩码,可用主机数大约翻倍。当主机数需求 > 254 时,子网掩码从。(即“向左借位”),这通常被称为。
2025-12-11 11:06:20
1188
原创 【Linux网络基础】全面系统解析 TCP/IP 协议栈:原理、核心协议与实战
本文系统解析了TCP/IP协议栈的分层架构和核心协议。协议栈采用五层模型:应用层(HTTP/FTP等)、传输层(TCP/UDP)、网络层(IP/ICMP等)、数据链路层(Ethernet/Wi-Fi)和物理层。详细介绍了数据封装/解封装流程,并重点剖析了IPv4报文结构、地址分类、子网划分实例,以及TCP的三次握手和四次挥手连接管理机制。通过类图、流程图和实例演示了协议工作原理,并提供了相关网络命令验证方法。
2025-12-11 04:10:38
1175
原创 【Linux网络基础】Linux SDIO网卡与TCP/IP协议栈交互深度解析 (ESP32C6实战)
本文深入解析了Linux系统中SDIO网卡(以ESP32C6为例)与TCP/IP协议栈的交互机制。首先分析了Linux网络子系统的分层架构,包括硬件层、驱动层、协议栈层和接口层。重点阐述了ESP32C6的双协议栈工作模式,包括本地lwIP协议栈和Linux协议栈透传模式,以及DMA零拷贝优化等性能提升技术。文章详细介绍了关键数据结构(sdio_driver、net_device、sk_buff等)的关联关系,并提供了驱动初始化和注册的代码示例。最后提出了中断合并、总线带宽监控等优化方案,以及调试验证方法。通
2025-12-11 04:10:03
815
原创 【Linux网络基础】Linux 内核网络设备驱动开发详解
Linux 网络子系统是内核中最为复杂和关键的部分之一。网络设备驱动程序位于硬件和内核网络协议栈之间,负责数据的接收、发送以及硬件的控制。本文档将全面解析 Linux 网络驱动的架构、核心数据结构、关键机制以及实现细节。
2025-12-11 04:09:44
755
原创 【Linux 文件系统】嵌入式 Linux Ext4 分区挂载技术详解
本文详细介绍了嵌入式Linux系统中Ext4分区的挂载技术。首先分析了Ext4文件系统的关键特性(日志功能、大文件支持等)及其在嵌入式系统中的特殊考量(写放大、掉电保护)。接着提供了从分区创建到格式化、手动/自动挂载的完整操作指南,并重点讲解了性能优化方法(如noatime选项)和错误处理策略(remount-ro等)。文章还包含Ext4挂载自检流程、常见故障处理方案以及术语对照表,为嵌入式开发者提供了Ext4文件系统配置与优化的全面参考。
2025-12-11 04:08:03
1183
原创 【Linux】Linux常见命令完整指南
A: 这是 Linux 的安全机制。密码输入是隐形的,不会显示星号或圆点。Linux 命令是与系统交互的核心工具。类似 Windows 的任务管理器,动态显示 CPU、内存占用最高的进程。是 Linux 界的核武器,会强制删除根目录下所有文件,导致系统崩溃。Linux 是多用户系统,严格的权限控制是其安全核心。最基础的日常操作,包括查看、移动、复制和删除。A: 表示系统找不到你输入的命令。将前一个命令的输出,作为后一个命令的输入。的输出对比,展示隐藏文件和详细属性。可以强制中断大多数前台运行的命令。
2025-12-10 20:05:47
814
原创 【Linux系统调用】Linux system() 函数 API 技术详解
Linux system() 函数技术解析 摘要:本文详细解析了Linux标准库中的system()函数API。主要内容包括:函数原型与头文件说明、参数command的格式与特殊处理、返回值含义及解析方法。深入剖析了其底层实现原理(fork-exec-waitpid流程)和安全风险(命令注入、环境变量问题)。提供了典型应用场景的代码示例,对比分析了system()与exec系列的性能差异,并给出适用场景建议。最后说明了POSIX兼容性和不同发行版的Shell差异。文章强调在使用system()时需特别注意安
2025-12-10 19:56:09
1217
原创 【Linux C/C++开发】Buildroot 在嵌入式 Linux 开发中的全流程应用指南
Buildroot 是一个简单、高效且易于使用的工具,用于通过交叉编译生成嵌入式 Linux 系统。它使用 Makefile 脚本和 Kconfig 配置系统,能够自动化地构建出包含Toolchain(工具链)Bootloader(引导加载程序)Kernel(内核)和RootFS(根文件系统)的完整镜像。与 Yocto Project 相比,Buildroot 更轻量级,适合中小型嵌入式项目,学习曲线更平缓。图1:Buildroot 自动化构建工作流程图。
2025-12-10 19:53:29
1171
原创 【Linux C/C++开发】Docker在嵌入式Linux交叉编译中的完整应用方案
本文介绍了使用Docker构建嵌入式Linux交叉编译环境的完整方案。通过Docker容器化技术,可以解决传统交叉编译环境搭建复杂、版本冲突等问题。文章详细说明了基础镜像选择、Dockerfile编写、镜像构建方法,以及如何在容器内进行编译操作和常见错误处理。该方案支持ARM架构交叉编译,能确保开发环境一致性,并可与CI/CD系统无缝集成。最后还提供了版本兼容性说明,适用于32位和64位ARM架构的嵌入式开发需求。
2025-12-10 19:48:06
970
原创 【Linux内存管理】 Linux内核红黑树(Red-Black Tree)实现原理与应用详
Linux内核中的红黑树是一种高效的平衡二叉查找树,通过颜色规则和旋转操作维持近似平衡,确保O(log n)的操作复杂度。内核采用侵入式设计,将rb_node嵌入宿主结构以优化性能,并通过位操作压缩存储空间。红黑树广泛应用于进程调度(CFS)、内存管理(vm_area_struct)等场景,相比AVL树在插入/删除时性能更优,是工程实践中平衡效率与维护成本的典范实现。
2025-12-10 19:42:02
993
原创 【Linux驱动开发】SDIO (Secure Digital Input Output) 设备协议技术详解
本文详细介绍了SDIO(Secure Digital Input Output)设备协议技术。SDIO协议在SD存储卡协议基础上扩展,提供标准化的I/O接口,支持1-bit和4-bit两种总线模式,电压范围2.7V-3.6V,时钟频率最高208MHz。协议栈分为物理层、总线核心层和功能驱动层。SDIO通过CMD52/CMD53命令实现单字节和多字节数据传输,并采用DAT1复用线实现中断机制。文章还提供了驱动开发指南,包括关键数据结构、驱动注册示例和性能优化建议,最后附有术语对照表。
2025-12-10 17:17:58
1185
原创 【Linux驱动开发】Linux MMC 子系统深度解析
Linux MMC子系统架构解析与开发指南 本文深入剖析Linux MMC(MultiMediaCard)子系统的技术架构和开发要点。系统采用三层设计:Host层负责硬件控制,Core层实现协议逻辑,Card层提供设备接口。重点介绍了主机控制器驱动开发流程,包括mmc_host结构体注册、mmc_host_ops回调实现以及性能优化方法。文章还对比了MMC、SD和SDIO协议差异,并提供了调试技巧。通过命令传输时序图、响应格式解析和代码示例,全面展示了Linux下MMC设备的驱动开发与优化实践。
2025-12-10 17:15:18
1175
原创 【Linux C/C++开发】深入剖析 Linux C/C++ 动态链接中的 GOT 与 PLT 机制
本文深入剖析了Linux动态链接中的GOT(全局偏移表)和PLT(程序链接表)机制。GOT存储外部函数和变量的运行时地址,PLT处理函数调用的重定向。文章详细解释了位置无关代码(PIC)原理、延迟绑定技术及其内存布局,通过工具分析和示例代码展示了32位与64位架构的差异。同时介绍了RELRO安全机制防止GOT劫持攻击,强调理解这一机制对系统编程、性能优化和安全防护的重要性。GOT/PLT作为动态链接核心,平衡了灵活性与性能需求。
2025-12-10 15:32:09
1195
原创 【Linux内存管理】Linux Kernel LRU 页面置换算法深度解析
本文深入解析了Linux内核中的LRU页面置换算法实现。首先介绍了LRU的基本原理及其在Linux中的双链表实现(Active/Inactive Lists),包括页面老化和二次机会机制。然后详细分析了关键数据结构lruvec和页面标志位,以及mark_page_accessed()等核心函数的运作流程。文章还阐述了页面状态的生命周期、二次机会法的具体实现,并提供了swappiness参数调优等性能优化建议。最后总结了Linux LRU机制通过双链表、NUMA感知等技术在保证命中率的同时降低系统开销的特点,
2025-12-10 15:26:47
969
原创 【Linux】Linux Kernel MIPS 架构 `show_stack` 函数深度解析
本文深入解析了Linux内核中MIPS架构的show_stack函数实现。该函数用于内核调试时打印调用栈信息,位于arch/mips/kernel/traps.c文件中。文章详细分析了函数参数、调用场景、MIPS特有的堆栈回溯机制和内存安全访问策略,包括基于代码分析的unwinding方法和原始堆栈转储方式。重点解读了show_stack如何根据不同情况获取栈指针、安全读取内存数据,并通过show_stacktrace函数实现最终的堆栈信息格式化输出。文章还提供了函数执行流程图,帮助理解从初始化到打印的完整
2025-12-10 10:52:45
663
原创 【Linux】Linux Kernel Panic 深度技术指南
本文档深入探讨了Linux Kernel Panic的技术原理与应对策略。主要内容包括:Kernel Panic的概念解析及其在系统架构中的定位,与Oops的区别;常见触发原因如硬件故障、驱动问题、文件系统错误等;内核panic()函数的执行流程;实战诊断方法包括错误日志分析和工具链使用;预防措施如内核参数调优、Kdump配置和硬件监控。最后提供了常用调试命令速查表,为系统管理员和内核开发者提供全面的排查指南。
2025-12-09 21:13:37
1324
原创 【Linux】Linux Kernel `die_if_kernel` 函数深度技术解析
Linux内核中的die_if_kernel函数用于处理内核态致命错误,检查异常是否发生在内核模式。如果是,则触发内核崩溃流程(Oops或Panic);用户态异常则发送信号给进程。文章详细解析了该函数的机制、调用场景(如空指针引用、段错误等)、执行流程以及MIPS和ARM架构的实现差异,包括寄存器检查、安全机制和CRASH_DUMP处理。该函数是内核异常处理的关键组件,确保系统在严重错误时能安全响应。
2025-12-09 21:10:16
903
原创 【Linux】Linux内核 `force_sig` 函数深度技术解析
本文深入解析Linux内核中的force_sig函数,该函数用于强制发送进程无法忽略的同步异常信号。文章从技术原理、函数调用层级、与同类函数的对比分析、关键数据结构等方面进行阐述,详细介绍了其核心作用:强制解除信号阻塞并重置为默认处理,主要用于CPU异常处理路径。通过代码逻辑分析,展示了force_sig如何获取锁、重置信号处理动作、清除UNKILLABLE标志等关键步骤。文章还讨论了内存屏障与锁机制、线程组信号处理等特殊场景,为理解Linux内核信号处理机制提供了技术参考。
2025-12-09 21:00:59
793
原创 【Linux】Linux Kernel Oops 深度技术分析文档
Linux Kernel Oops 技术摘要 Linux Kernel Oops是内核检测到非致命错误时的异常处理行为,表现为系统可能继续运行但状态不稳定。与Kernel Panic不同,Oops通常只终止当前进程而非整个系统。主要触发条件包括非法内存访问、指令异常、内核断言失败和分页错误等。 Oops信息包含错误描述、寄存器状态、进程信息、调用栈和代码段等关键部分。其处理流程从硬件异常触发开始,经过寄存器保存、C语言处理函数判断,最终进入Oops打印流程。符号解析通过kallsyms机制实现,可定位具体出
2025-12-09 20:59:35
1088
原创 【Linux 进程管理】Linux内核与应用层通信机制详解
本文详细解析了Linux内核与应用层之间的多种通信机制。主要内容包括:系统调用的实现原理与常见接口,虚拟文件系统(/proc和/sys)的功能与使用场景,设备文件(字符设备和块设备)的交互方式,Netlink套接字实现的双向通信机制,以及共享内存的高效零拷贝技术。文章还提供了代码实例,展示如何通过LKM模块创建自定义/proc节点并与用户态程序交互。这些机制为Linux系统提供了灵活高效的内核态与用户态通信手段,是理解Linux系统架构的关键。
2025-12-09 20:02:27
684
蓝牙开发基于Python与BlueZ的Linux低功耗外设开发指南:实现GATT服务、连接管理与安全权限控制
2025-11-04
蓝牙开发基于Python与BlueZ的Linux低功耗蓝牙中央设备开发指南:设备发现、连接管理与GATT服务交互
2025-11-04
【Linux蓝牙开发】基于BlueZ与D-Bus架构的蓝牙应用编程接口设计:实现GAP/GATT通信系统集成
2025-11-04
【Linux开发】蓝牙低功耗技术基础:GAP/GATT/ATT协议栈解析与开发者学习指南
2025-11-04
【Linux系统编程】基于Python的DBus基础方法调用与信号处理:实现主机名获取及计算器服务开发
2025-11-04
【Linux蓝牙开发】基于BlueZ的BLE应用开发指南:DBus与Python在GAP/GATT角色实现中的技术解析与实践指导
2025-11-04
【Linux蓝牙开发】BlueZ安装配置指南:GAP/GATT与蓝牙Mesh应用部署及Python D-Bus集成方案
2025-11-04
基于物联网技术的快递易投递箱
2016-06-01
Qt软件开发 完整项目代码
2016-06-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅