- 博客(305)
- 资源 (26)
- 收藏
- 关注
原创 hpatch 学习笔记系列
hpatch 学习笔记摘要 本文是hpatch补丁工具系列的学习笔记,包含多个技术文档链接。主要内容涉及后缀数组算法(libdivsufsort、SA-IS)、差分补丁原理(hdiffpatch、HPatch)以及相关工具实现(hpatch_lite、tinyuz)。笔记详细记录了各种算法的实现细节,如divsufsort、sssort、trsort等排序方法,适合对二进制补丁技术和高效差异算法感兴趣的开发者参考学习。
2025-10-06 07:49:23
656
原创 [Linux]学习笔记系列
这篇Linux学习笔记整理了ARM架构和驱动开发相关的学习资料。主要内容分为两部分:第一部分是ARM架构相关,包括汇编、启动流程、调试、内存管理等核心模块;第二部分是Linux驱动开发,涵盖了基础驱动框架、时钟管理、串口驱动等常见驱动模块,以及设备树、GPIO、I2C等硬件接口相关内容。这些笔记以Markdown格式存储在GitHub仓库中,适合Linux内核和驱动开发者参考学习。
2025-08-28 09:35:58
725
原创 u-boot学习笔记系列
这是一个关于U-Boot学习笔记的GitHub仓库,主要包含ART-Pi开发板的构建命令和U-Boot源码分析资料。内容按功能模块分类,包括API、架构(arm)、启动流程(bootm/bootz)、命令系统(cmd)、通用功能(common)、设备驱动模型(dm)等核心组件。每个模块都有对应的Markdown文档,详细记录了U-Boot的关键技术点,如ARM架构、设备树、时钟管理、外设驱动等底层实现原理。该项目适合嵌入式开发者系统学习U-Boot启动流程和驱动开发。
2025-02-27 08:26:55
2071
原创 rtthread学习笔记系列
本文是一个RT-Thread实时操作系统的学习笔记合集,包含44个技术文档,涵盖了RT-Thread系统的核心组件和驱动开发。主要内容包括:文件系统(FATFS、LittleFS)、通信协议驱动(CAN、I2C、SPI、USB)、内核机制(线程调度、内存管理、IPC)、系统工具(FINSH、ULOG)以及底层开发(汇编、链接文件)等。该笔记系统整理了RT-Thread的各个功能模块,为开发者提供了全面的技术参考。
2025-01-16 11:56:57
1089
原创 [Linux]学习笔记系列 -- [fs]buffer
Linux内核中的fs/buffer.c实现了缓冲区管理机制,主要用于优化块设备I/O性能。该技术通过内存缓存磁盘块内容,显著减少物理I/O操作。其核心是struct buffer_head数据结构,代表磁盘块在内存中的映像,提供块级缓存管理。随着Linux发展,缓冲区缓存与页缓存深度整合,主要服务于文件系统元数据和原始块设备访问,而文件数据则由页缓存主导。该机制适用于文件系统元数据I/O、块设备访问等场景,但不推荐直接用于文件数据读写或需要自管理缓存的高性能应用。相比页缓存和直接I/O,缓冲区缓存在块级管
2025-12-18 11:07:50
479
原创 Ubuntu 虚拟机根文件系统损坏故障的深度分析与修复
Ubuntu虚拟机根文件系统损坏修复摘要 本文详细分析了Ubuntu虚拟机因异常关机导致的根文件系统损坏故障。系统启动时检测到/dev/sda5分区目录inode损坏,进入initramfs环境要求手动执行fsck修复。通过多阶段检查(e2fsck)修复了extent树优化、目录校验缺失、特殊条目('.','..')丢失等问题。修复后系统可正常引导,但遗留AppArmor服务启动失败和dpkg状态库损坏问题。故障链分析表明非正常关机是主因,导致ext4日志未完整提交和元数据不一致。文章提供了完整的故障诊断流
2025-12-18 10:57:37
609
原创 [Linux]学习笔记系列 -- [fs]binfmt_script
本文详细解析了Linux内核中ELF文件头的数据结构定义和相关常量。主要内容包括:1) 32位ELF文件头结构体(Elf32_Ehdr)各字段含义,如e_ident魔数数组、文件类型e_type、目标架构e_machine等;2) ELF文件类型常量(ET_EXEC/ET_DYN等);3) e_ident数组各索引定义及取值常量,包括魔数值(ELFMAG)、文件类别(ELFCLASS32/64)、字节序(ELFDATA2LSB/MSB)等;4) 程序头表项类型(p_type)的常量定义。这些结构体和常量是L
2025-12-02 09:06:02
589
原创 [Linux]学习笔记系列 -- [fs]anon_inodes
Linux内核中的匿名inode文件系统(anon_inodes)为内核事件驱动机制提供轻量级文件描述符接口。该技术起源于2007年,旨在解决内核子系统需要为无实体文件的对象(如eventfd、timerfd等)创建标准化文件描述符的问题。其核心原理是创建全局共享的伪文件系统,所有匿名文件共享同一个inode,通过file_operations实现特定行为。优势包括内存效率高、代码复用性好,广泛应用于epoll、signalfd等机制。该技术是Linux异步I/O模型的基础组件,但不适用于需要持久化存储或真
2025-12-02 09:02:03
742
原创 [Linux]学习笔记系列 -- [block][mq-deadline]
MQ-Deadline I/O调度器是Linux内核中一个兼顾吞吐量与延迟的经典算法。它通过红黑树按LBA排序优化吞吐量,同时使用FIFO队列和截止时间机制防止请求饥饿,确保低延迟。最初为单队列HDD设计,后适配多队列框架(mq-deadline.c),成为数据库等I/O敏感场景的推荐选择。相比none调度器,它提供延迟保障;相比BFQ,它更轻量但缺乏QoS控制。适用于HDD/SATA SSD服务器环境,但在超高速NVMe或桌面交互场景可能不是最优选择。
2025-12-01 08:43:30
808
原创 [Linux]学习笔记系列 -- [block]kyber-iosched
Kyber I/O调度器是针对高速NVMe SSD设备设计的现代I/O调度器,通过基于反馈循环的令牌桶算法,主动控制I/O请求派发速率来管理设备队列深度。其核心目标是确保请求延迟低于可配置的目标值(如读2ms/写10ms),特别适合对延迟敏感的数据库、云存储等场景。相比传统调度器,Kyber在延迟可预测性方面表现突出,但可能牺牲部分吞吐量。它自Linux 4.12起成为标准选项,虽非默认但广泛应用于需要严格SLA保证的数据中心环境。Kyber通过动态调整令牌发放速率实现自适应控制,简单配置仅需设置延迟目标值
2025-12-01 08:42:12
786
原创 [Linux]学习笔记系列 -- [block]genhd
本文介绍了Linux内核中块设备管理的核心模块genhd.c。该技术通过struct gendisk数据结构实现了对各类块存储设备(如硬盘、U盘、RAID卷等)的统一抽象与管理。其主要功能包括设备注册与命名、分区扫描、sysfs集成和udev通知等。 genhd.c的发展经历了与设备模型集成、支持GPT分区表、增强热插拔等关键演进。作为Linux块设备层的基石,它被所有块设备驱动使用,代码稳定但社区活跃度有限。 该技术的核心优势在于高度抽象和自动化管理,但其仅适用于块设备场景。与字符设备(cdev)和网络设
2025-11-29 09:16:30
845
原创 [Linux]学习笔记系列 -- [block]fops
本文介绍了Linux内核中block/fops.c模块的核心功能与重要性。该模块实现了块设备文件操作接口(file_operations),为用户空间提供了直接访问块设备的标准文件接口,是存储管理的基础设施。 关键点包括: 历史背景:源自UNIX"一切皆文件"思想,支持分区、格式化、裸数据传输等底层操作 核心原理:通过blkdev_fops结构将VFS操作映射到块设备I/O,处理打开、读写、控制等操作 主要优势:统一接口、强大灵活、抽象底层细节 使用场景:存储初始化、系统备份、数据库存储
2025-11-29 09:15:42
961
原创 [Linux]学习笔记系列 -- [block]elevator
本文介绍了Linux内核中的I/O调度器框架block/elevator.c,重点分析了其核心功能、发展历程及当前状态。该框架最初为解决机械硬盘(HDD)性能瓶颈而设计,通过请求排序和合并来优化寻道时间,并采用可插拔架构支持多种调度算法(如Deadline、CFQ等)。随着多核CPU和SSD的普及,该单队列模型因锁竞争问题被blk-mq多队列框架取代,目前仅用于兼容旧驱动。文章详细对比了两代框架的差异,指出elevator.c在现代系统中已处于维护状态,同时解析了其注册机制的核心实现原理。
2025-11-28 08:43:42
432
原创 [Linux]学习笔记系列 -- [block]brd
是 Linux 内核中的一个驱动程序,它实现了一个基于 RAM 的块设备,通常被称为 RAM disk。这个驱动程序会分配一块系统内存,并将其模拟成一个标准的块设备(如/dev/ram0),使其可以像硬盘或 U 盘一样被格式化、挂载文件系统和进行读写操作。由于所有操作都在内存中完成,其 I/O 速度极快,但存储的数据是易失的,会在系统重启后丢失。关键特性总结:块设备模拟brd.c在内存中创建一个功能完整的块设备,这是其与tmpfs最本质的区别。高性能:基于 RAM 的特性使其读写速度极快。易失性。
2025-11-28 08:42:58
378
原创 [Linux]学习笔记系列 -- [block]block
Linux内核block目录:块设备I/O的核心框架 block目录是Linux内核I/O栈的核心部分,负责管理HDD、SSD等块设备的数据交换。它通过抽象硬件细节,为文件系统提供统一接口,并利用I/O调度器优化性能。从早期的单队列模型发展为支持多核的blk-mq框架,显著提升了现代存储设备的性能。该层与文件系统、虚拟内存系统及设备驱动紧密协作,通过bio和request等数据结构处理I/O请求。用户可通过sysfs调整I/O调度器,使用工具如iostat监控性能。随着NVMe、ZNS等新技术发展,bloc
2025-11-27 08:59:27
635
原创 [Linux]学习笔记系列 -- [block]blk-mq
本文介绍了Linux内核中的多队列块层框架blk-mq,该技术通过两级队列架构解决了传统单队列设计在现代高速存储设备上的性能瓶颈问题。blk-mq采用CPU核心专属的软件队列和硬件分派队列,显著减少了锁争用,提升了I/O性能和扩展性。自Linux 5.0起已成为内核唯一块层实现,广泛应用于NVMe SSD、多核服务器等高并发场景,是当前Linux I/O栈的性能基石。
2025-11-27 08:52:38
867
原创 [Linux]学习笔记系列 -- [block]blk-ioc
Linux块设备层的I/O上下文管理机制(blk-ioc.c)通过为进程关联io_context结构,实现了I/O优先级的精细控制。该技术起源于CFQ调度器时代,旨在解决多任务环境下I/O资源公平分配问题。核心原理是按需创建I/O上下文,存储进程优先级信息,并在I/O请求时传递给调度器。其主要优势在于高效的管理和继承特性,但也存在进程级控制粒度较粗、依赖特定调度器等局限。典型应用场景包括后台任务降级、关键应用优先级提升等,但在容器化环境中已被更强大的cgroup I/O控制器所取代。这项技术代表了Linux
2025-11-26 09:23:55
737
原创 [Linux]学习笔记系列 -- [block]blk-core
本文介绍了Linux内核中块层核心(blk-core.c)的技术背景、原理和应用。作为I/O请求的派发与管理中心,blk-core.c解决了上层I/O请求者与下层块设备驱动之间的高效对接问题,通过请求抽象、排队调度、合并拆分等机制实现高性能存储访问。 文章详细梳理了blk-core.c的发展历程,从早期的单队列模型演进到支持多队列的blk-mq架构,以适配现代高速SSD设备。其核心工作原理包括I/O提交、队列管理、请求转换和调度派发等流程,具有高性能、模块化和通用性等优势。 blk-core.c是所有块设备
2025-11-26 09:17:27
656
原创 [Linux]学习笔记系列 -- [block]bio
本文介绍了Linux内核中bio.h头文件定义的BIO迭代器与数据段访问接口。该API为块设备驱动提供了高效安全的struct bio操作机制,核心功能包括:1) 通过迭代器模式访问当前数据段的物理页、偏移和长度;2) 支持遍历所有数据段;3) 精确更新处理进度;4) 提供状态查询功能。实现上采用分层设计,底层直接操作bvec_iter结构,上层封装为简洁的bio_*宏,并特殊处理无数据请求类型。所有函数均被定义为static inline以优化性能,这些接口位于I/O处理的热路径上,对块设备驱动开发至关重
2025-11-25 08:31:00
585
原创 [Linux]学习笔记系列 -- [block]bfq-iosched
BFQ I/O调度器是Linux内核中专注于公平性和交互响应性的重量级调度器。它通过预算分配、时间片轮转和智能启发式算法,为每个进程创建独立队列,优先保障交互式应用的I/O请求。作为CFQ的继承者,BFQ经过blk-mq重构后成为主流Linux发行版的默认选择,特别适合桌面和移动设备场景。其优势在于卓越的交互响应性和精细的QoS控制,但存在CPU开销较高、不适用于超高速NVMe设备的局限。通过cgroups深度集成,BFQ实现了多租户环境下的公平资源分配,成为解决I/O密集型任务影响系统响应问题的首选方案。
2025-11-25 08:30:20
421
原创 [Linux]学习笔记系列 -- [kernel]workqueue
内核工作队列(Workqueues)摘要 工作队列是Linux内核中通用的后台任务处理框架,主要用于将需要睡眠或耗时较长的任务从原子上下文(如中断处理)推迟到安全的进程上下文中执行。其发展经历了从单一线程(keventd)到Per-CPU线程,再到并发管理工作队列(CMWQ)的演进。CMWQ采用动态线程池管理,自动调整工作者线程数量以平衡性能和资源消耗。 核心工作原理是通过work_struct结构表示任务,使用queue_work将其加入工作队列,由内核线程kworker在进程上下文中执行。主要优势包括上
2025-11-24 08:47:02
953
原创 [Linux]学习笔记系列 -- [kernel]wait
Linux内核中的等待队列(Wait Queues)是用于实现进程阻塞与唤醒的核心同步机制,解决了CPU资源高效利用问题。其核心原理是通过wait_queue_head_t和wait_queue_entry_t数据结构实现"等待-唤醒"协议:进程在条件不满足时加入队列睡眠,条件满足后被生产者唤醒。主要优势在于高效性、通用性和灵活性,支持可中断/不可中断睡眠及独占/广播唤醒。广泛应用于I/O多路复用、驱动开发及构建高级同步原语。但不适用于原子上下文,编程复杂度较高。相比自旋锁适用于长时间等
2025-11-24 08:43:18
899
原创 [Linux]学习笔记系列 -- [kernel]utsname_sysctl
本文分析了Linux内核中utsname_sysctl.c文件的功能与实现,该模块负责通过sysctl接口管理UTS命名空间中的系统标识信息。文章从历史背景出发,介绍了该技术为解决系统标识动态查询和修改需求而诞生,并随着UTS命名空间的引入实现容器隔离功能。核心原理部分详细阐述了其作为UTS命名空间数据与sysctl接口桥梁的工作机制,包括数据存储结构、请求处理流程和命名空间隔离特性。文章对比了sysctl接口与系统调用的异同,指出其在脚本友好性方面的优势,同时分析了固定长度限制等局限性。典型应用场景包括系
2025-11-22 09:33:05
858
原创 [Linux]学习笔记系列 -- [kernel]usermode_helper
摘要: Linux内核中的usermode_helper机制提供了内核与用户空间程序交互的桥梁。该技术主要用于内核需要执行用户空间程序完成特定任务的场景,如固件加载、模块动态加载、设备热插拔处理等。其核心原理是通过异步工作队列和kernel_execve()实现用户空间程序的调用,具有解耦内核与用户空间、保持内核简洁的优势。然而,由于进程创建开销大,不适用于高频交互场景。与netlink、sysfs等其他内核-用户空间通信方式相比,usermode_helper更适合执行复杂的用户空间任务,而非简单状态通知
2025-11-22 09:31:58
1121
原创 [Linux]学习笔记系列 -- [kernel]sysctl
摘要: Sysctl是Linux内核提供的运行时参数调整接口,通过/proc/sys文件系统实现动态修改内核行为(如网络、虚拟内存等)。其核心是ctl_table注册机制,将内核变量映射为可读写的文件,支持层次化命名空间(如net.ipv4.ip_forward)。相比直接编译内核或引导参数,Sysctl提供统一、易用的动态调优能力,但仅适用于全局参数调整,设备控制需用sysfs,进程信息需通过procfs。主要应用于网络优化、内存管理及安全加固等场景,是系统管理员的核心工具之一。
2025-11-21 23:45:00
1553
原创 [Linux]学习笔记系列 -- [kernel]trace
文章摘要 include/linux/ptrace.h 定义了Linux内核中ptrace()系统调用的接口,用于进程跟踪(Process Tracing)。该技术起源于早期Unix,旨在解决调试器与内核交互的需求,允许一个进程(tracer)观察和控制另一个进程(tracee)的执行。核心功能包括调试(如GDB)、系统调用追踪(如strace)和动态分析。 ptrace的工作原理基于tracer-tracee模型,通过建立追踪关系、暂停进程执行、检查/修改寄存器与内存,并恢复执行。其优势在于强大的控制力和
2025-11-21 23:45:00
1424
原创 [Linux]学习笔记系列 -- [kernel]sys
Linux内核的kernel/sys.c文件实现了重要的系统信息与控制接口,包含一系列基础但关键的系统调用。这些系统调用解决了系统状态监控(如sysinfo)、系统标识管理(如uname)、生命周期控制(如reboot)等核心问题。该文件继承UNIX传统,经历了prctl()功能扩展和sysctl()废弃等重要演进。kernel/sys.c为系统工具提供了标准化接口,所有Linux管理工具都依赖其功能。其设计采用系统调用分发中心模式,通过SYSCALL_DEFINE*宏定义函数,具有标准化和集中化优势,但也
2025-11-20 10:32:24
1254
原创 [Linux]学习笔记系列 -- [kernel]signal
Linux内核中的信号处理机制为进程间异步通信提供了一种轻量级解决方案。kernel/signal.c实现了信号生成、排队和递送的核心逻辑,每个进程通过task_struct中的信号描述符管理信号状态。当信号触发时,内核会中断进程执行并调用注册的处理函数,处理完毕后再恢复原执行流。该技术源自Unix系统,经历了不可靠信号、POSIX可靠信号、实时信号等多个发展阶段,广泛应用于进程管理、异常处理等场景。相比管道、套接字等IPC机制,信号的优势在于低开销异步通知,但存在信息量有限、可能打断正常执行流等局限性,不
2025-11-20 10:31:28
1147
原创 [Linux]学习笔记系列 -- [kernel]secomp
Seccomp:Linux系统调用防火墙 Seccomp(Secure Computing Mode)是Linux内核的安全机制,用于限制进程可用的系统调用,减少攻击面。它分为两种模式:严格模式(仅允许4个基础系统调用)和过滤模式(通过BPF程序动态过滤系统调用)。Seccomp广泛应用于容器(Docker/K8s)、浏览器沙箱(Chrome/Firefox)和系统服务(systemd/OpenSSH)中,遵循最小权限原则。其优势包括低性能开销、高灵活性和防御TOCTOU攻击的能力,但策略配置复杂且存在跨架
2025-11-19 08:58:35
1103
原创 [Linux]学习笔记系列 -- [kernel]resource
本文探讨了Linux内核中的资源管理机制(kernel/resource.c),重点分析了其硬件资源管理功能。该技术通过树状结构管理I/O内存和I/O端口资源,防止硬件资源冲突。文章概述了其发展历程、核心原理、优势局限性和适用场景,并与中断管理、DMA等子系统进行了对比。作为内核基础组件,它为设备驱动提供资源仲裁,确保硬件访问的有序性,并通过/proc接口提供系统资源分配的可视化功能。
2025-11-19 08:57:28
829
原创 [Linux]学习笔记系列 -- [kernel]reboot
这段代码注释描述的是register_restart_handler()函数,它用于在内核中注册一个系统重启处理器。以下是关键点的解析: 功能:该函数允许内核模块或驱动程序注册一个回调函数,当系统需要重启时会被调用。 优先级机制: 0:最低优先级,作为最后的重启手段 128:默认优先级,适用于大多数通用重启处理器 255:最高优先级,会抢占其他所有处理器 调用时机: 在系统重启序列的最后阶段,由machine_restart()调用 通过do_kernel_restart()触发已注册的处理器 典型使用场景
2025-11-18 10:30:26
505
原创 [Linux]学习笔记系列 -- [kernel]printk
文章摘要 Linux内核打印机制printk是内核最基础、最稳定的日志记录组件。它解决了内核在受限环境中可靠输出诊断信息的问题,尤其适用于系统启动早期、中断异常处理等场景。printk采用生产者-消费者模型,通过环形缓冲区实现调用者与控制台的解耦,保证消息可靠存储。其优势在于简单易用、健壮性强,但也存在性能开销大、可能引发日志风暴等问题。相比其他机制如Tracepoints和procfs,printk更适合低频重要事件的记录,而非高频性能敏感路径。作为内核开发的标准日志接口,printk被广泛应用于驱动初始
2025-11-18 10:29:46
972
原创 [Linux]学习笔记系列 -- [kernel]power
Linux电源管理核心(kernel/power)实现了系统休眠、唤醒和运行时电源管理框架,解决了移动设备续航、服务器节能等关键问题。它由系统级休眠/唤醒、运行时电源管理和唤醒源机制三大组件构成,通过统一API和分层设计提供灵活管理。该框架是现代Linux设备必备的核心功能,广泛应用于笔记本电脑休眠、手机锁屏等场景。其优势在于标准化接口和精细化控制,但对驱动质量要求较高,在实时系统等场景可能存在延迟问题。
2025-11-17 08:31:28
1269
1
原创 [Linux]学习笔记系列 -- [kernel]pid
本文分析了Linux内核中的PID管理机制(kernel/pid.c),重点介绍了其核心数据结构struct pid及其在进程虚拟化和生命周期控制中的作用。该技术主要解决了容器化隔离、检查点恢复等场景下的PID管理问题,通过将PID抽象为独立的内核对象,支持多命名空间下的PID虚拟化。文章详细阐述了struct pid的设计原理、优势与局限性,并与旧的扁平化PID模型进行了对比。作为Linux进程模型的核心组件,该机制是容器技术的基础支撑,所有进程相关操作都依赖于这一实现。
2025-11-17 08:30:03
1057
2
原创 Xshell终端连接Ubuntu/Debian无颜色的解决方案
本文针对Xshell连接Linux服务器后终端无彩色显示的问题,提供了系统性的解决方案。首先通过tput colors命令诊断问题根源:若输出异常,需检查Xshell的终端类型设置,建议改为xterm-256color并选用彩色配色方案;若终端支持颜色但显示异常,则需编辑Linux用户的.bashrc文件,取消force_color_prompt和ls命令相关颜色配置的注释。文章详细说明了客户端和服务端的配置步骤,并给出标准.bashrc精简模板,帮助用户快速恢复终端彩色显示功能,提升工作效率。
2025-11-14 17:17:20
1243
1
原创 [Linux]学习笔记系列 -- [kernel[params
Linux内核模块参数机制实现模块加载时的灵活参数传递,解决了传统硬编码参数需要重新编译的问题。该技术的核心原理基于编译时元数据生成和加载时参数解析,通过module_param宏将参数变量定义到特殊ELF段,加载时解析用户传递的键值对并赋值。模块参数是内核驱动开发的基础功能,支持通过sysfs在运行时动态修改参数值,提供类型安全检查和标准化的接口。 主要适用于模块配置场景,如调试开关、硬件资源指定、工作模式选择等。相比ioctl、sysfs等机制,模块参数更适合静态配置而非高频数据交换。该技术自Linux
2025-11-14 09:24:54
543
原创 [Linux]学习笔记系列 -- [kernel]nsproxy
摘要 kernel/nsproxy.c 是 Linux 内核中负责管理进程命名空间视图的核心模块,通过 struct nsproxy 结构集中管理进程所属的多个命名空间(如 mount、UTS、IPC、PID、network、user、cgroup 等)。该技术的诞生解决了命名空间高效管理和生命周期控制的复杂性,支持引用计数和写时复制(COW)机制,使得进程在 fork() 时可共享命名空间,而在 unshare() 或 setns() 时能原子化更新命名空间视图。 nsproxy 是容器化技术的基石,被
2025-11-14 09:23:32
1015
原创 [Linux]学习笔记系列 -- [kernel]notifier
内核通知链(Kernel Notifier Chains) 摘要 内核通知链是Linux内核中实现子系统间解耦通信的发布-订阅机制,主要用于异步事件广播。它通过链表结构(struct notifier_block)实现,包含四种类型:原子型(中断上下文)、阻塞型(进程上下文)、原始型(无锁保护)和SRCU型(可睡眠RCU变体)。典型应用包括网络设备状态变化、CPU热插拔、模块加载卸载和系统关机等事件通知。 主要优势是实现了完全解耦,支持多路广播和优先级控制。但存在同步执行、缺乏返回值处理、调试复杂等局限性。
2025-11-13 08:36:01
912
原创 [Linux]学习笔记系列 -- [kernel]memory_barrier
内存屏障(Memory Barrier)是解决多核处理器中指令重排序问题的关键技术,通过强制内存操作顺序和可见性来确保并发编程的正确性。它诞生于多核CPU普及背景下,主要应对编译器优化和CPU乱序执行导致的数据竞争问题。内存屏障分为写屏障、读屏障和全功能屏障,广泛应用于操作系统内核同步原语、无锁数据结构和设备驱动开发。虽然性能开销较高且使用复杂,但它是实现高性能并发的基础工具。普通应用开发推荐使用高级同步抽象,仅在底层性能优化时才直接使用内存屏障。
2025-11-13 08:33:34
789
原创 [Linux]学习笔记系列 -- [kernel]kthread
文章摘要: 本文深入剖析了Linux内核中的kthread机制,重点解读了kernel/kthread.c和include/linux/kthread.h的核心实现。kthread作为内核后台任务的关键基础设施,解决了中断上下文无法睡眠、用户进程不可靠等核心问题。文章从历史背景切入,分析其发展历程及标准化API演进,详细阐述kthread的创建流程、生命周期管理和停止机制,并对比了workqueue/tasklet等方案的适用场景。通过kthread_init_work等宏的源码解析,展现了工作线程的初始化
2025-11-12 09:06:27
748
e-LinkS使用方法-3.1 (1)
2018-07-25
液晶显示板revc-20141009-sch-r
2018-07-25
LM324四重运算放大器TI数据手册中文版
2020-09-20
CUBE+STM32F7+FREEMODBUSV1.5 多从机
2022-01-21
STM32F1必备参考书
2018-07-25
RoboMaster M3508直流无刷减速电机
2018-07-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅