- 博客(16)
- 收藏
- 关注
原创 深入 RTOS 网络子系统:mBlk 缓冲区池的架构设计与零拷贝实现
摘要:RTOS网络缓冲区架构解析 本文深入分析了RTOS网络子系统中mBlk缓冲区池的设计原理。针对传统malloc在网络场景下的六大缺陷(性能、中断安全、引用计数、数据描述、内存碎片、对齐问题),RTOS采用三层架构实现高效网络数据处理: mBlk:描述数据位置和长度,支持链表串联实现scatter/gather clBlk:管理引用计数和释放回调,实现零拷贝 Cluster:预分配固定大小的数据存储池 通过快递站类比(快递单-mBlk、登记卡-clBlk、包裹箱-Cluster)生动解释了分层设计优势。
2026-05-20 15:09:22
377
原创 RTOS 内核设计精髓:32 级优先级工作队列的实现与移植
VxWorks 内核工作队列机制解析 本文深入剖析了 VxWorks 7 内核中 Job Queue 子系统的设计原理与实现机制。该系统采用生产者-消费者模型,通过32级优先级队列实现高效的任务调度,具有以下核心特性: 异步解耦设计:中断服务程序(ISR)作为生产者快速投递工作,服务任务作为消费者异步处理,保证系统实时性。 高效调度算法: 使用位图技术实现O(1)复杂度的优先级查找 32级优先级队列支持精细的任务调度 单消费者模式确保执行顺序确定性 关键实现技术: 零拷贝工作描述符直接入队 锁机制保障多平台
2026-05-20 09:53:12
572
原创 深入 VxWorks 内核:一个实时进程是如何诞生的
本文深入解析VxWorks实时进程(RTP)的加载与执行机制,涵盖ELF文件格式、内核加载器实现和用户态切换等核心内容。RTP作为VxWorks 7引入的进程模型,运行在用户态(EL0/Ring 3),通过独立地址空间和系统调用机制实现内存保护与故障隔离。文章详细剖析了ELF文件结构,包括Header验证、Program Header解析等关键步骤,并对比了RTP与传统内核模块(DKM)的差异。通过分析加载流程、共享库映射和特权级切换等底层机制,揭示了VxWorks实现进程隔离与保护的技术原理。
2026-05-19 14:00:41
443
原创 ARM64 函数打桩(Function Stubbing)机制深度剖析
│ 函数 A │──调用──▶│ 函数 B ││ (被测函数) │ │ (依赖函数) │访问真实硬件(如 VxBus 设备方法)依赖复杂的系统状态执行耗时操作在测试环境中不可用打桩(Stubbing)就是在运行时将函数 B 替换为一个"假函数"(stub),让你能控制 B 的行为和返回值。函数打桩是嵌入式内核单元测试的核心技术。原理简单:覆盖函数入口的第一条指令为B stub陷阱很多:内联、符号名变异、Cache 一致性、reentrant 竞态关键要素被测代码用-O0编译。
2026-05-18 18:13:18
268
原创 Linux 网络内核参数调优完全指南
本文是一份面向Linux新手的网络内核参数调优指南,通过工厂比喻通俗解释各项参数作用。主要内容包括: 基础概念:将内核参数比作工厂控制旋钮,介绍sysctl工具使用方法及永久生效配置方式。 核心参数详解: 接收/发送缓冲区大小(rmem/wmem):类比快递柜容量,建议普通服务器设为16MB 网卡接收队列(netdev_max_backlog):建议万兆网络设为10000-50000 监听队列(somaxconn):高并发服务建议设为65535 调优建议: 提供各参数的默认值和推荐值 强调先测试再永久生效的
2026-05-18 15:51:22
554
原创 一文搞明白的C函数调用方式与栈原理
当一个c函数被调用时,一个是如何被建立,又如何被消除的。这些细节跟操作系统平台及编译器的实现有关,下面的描述是针对运行在Intel奔腾芯片上Linux的gcc编译器而言。c语言的标准并没有描述实现的方式,所以,不同的编译器,处理器,操作系统都可能有自己的建立栈帧的方式。
2024-03-28 13:08:20
1360
原创 Markdown编辑器快捷指令
如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:撤销:Ctrl/Command + Z 重做:Ctrl/Command + Y 加粗:Ctrl/Command + B 斜体:Ctrl/Command + I 标题:Ctrl/Command + S
2024-03-27 15:15:20
1328
原创 高并发系统设计的15个锦囊
在计算机网络中,限流就是控制网络接口发送或接收请求的速率,它可防止DoS攻击和限制Web爬虫。限流,也称流量控制。是指系统在面临高并发,或者大流量请求的情况下,限制新的请求对系统的访问,从而保证系统的稳定性。可以使用。
2023-03-28 15:25:06
378
原创 Linux select/poll/epoll 实现原理剖析
select(2),poll(2) 以轮询的方式检查 fd 集合,轮询一遍没有就绪事件发生就会将自己挂起,等待监视的文件将自己唤醒(超时和信号都可以唤醒)。而 epoll(7) 是设备就绪时,调用回调函数,把就绪 fd 放入就绪链表中,并唤醒在 epoll_wait(2) 中进入睡眠的进程。虽然都要睡眠和交替,但是 select(2) 和 poll(2) 在“醒着”的时候要遍历整个 fd 集合,而 epoll(7) 在“醒着”的时候只要判断一下就绪链表是否为空就行了,这节省了大量的 CPU 时间。
2023-03-27 10:30:00
692
原创 Linux 进程间通信 pipe 实现原理
本文基于 Linux-5.10 版本分析,借助 pipe 分析等待队列,为了下篇文章分析 slect/poll/epoll 实现做准备。pipe 是 Linux 系统中一种比较常用的进程间通信方法,不过使用 pipe 通信的两个进行必须有亲属关系,通常是父子进程。pipe 和 pipe2 返回成功时,pipefd 保存两个文件描述符:pipefd[0] 用于读,pipefd[1] 用于写。
2023-03-26 13:45:00
1220
原创 C++ 智能指针万字总结一文搞懂
以引用计数为基础的智能指针,引用计数的管理逻辑如下:除了初始化对象本身外,每个构造函数(拷贝构造函数除外)还要在堆上创建一个引用计数,用来记录有多少个对象共享状态。当我们创建一个对象时,只有一个对象共享状态,因此将引用计数初始化为 1;拷贝构造函数不分配新的计数器,而是拷贝给定对象的数据成员,包括计数器。拷贝构造函数递增共享的计数器,标记给定对象的状态又被一个新用户所共享析构函数递减计数器,标记共享状态的用户少了一个。如果计数器变为 0,则析构函数析构对象,包括引进计数变量;
2023-03-25 10:15:00
503
原创 C++各类设计模式及实现详解
软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。
2023-03-24 14:32:27
815
原创 c++拷贝与引用讲解
解释:上述代码中,c的初始值是100,执行showValue函数以后,由于形参中没有const关键字,同时val使的是引用(即:val与c绑定在一起,地址相同),导致val修改了c的值为1000,所以最终c打印出来即为10000。解释:以上代码中,a与b的值相等,但是a与b的地址并不相等,原因是执行b=a时,相当于b又开辟了一块新的内存空间来存储a中的值。解释:以上代码中,同样a与b相等,同时a与b的地址也相等,这就免去了重新定义变量时要开辟新的内存空间。程序会提示,val不能被修改,也就是c不能被修改。
2023-03-24 13:56:54
956
原创 C++ 读写Json文件
JSON文件无论是在web开发、客户端开发、服务端等开发中都是应用比较广泛的的第一种轻量级数据交换格式,非常方便阅读和编写。也是开发、测试、运维人员必备的一项技能!!!JSON是一种用于共享数据的开放标准文件格式,它使用人类可读的文本来存储和传输数据。JSON 文件以 .json 扩展名存储。JSON 需要较少的格式,是 XML 的一个很好的替代方案。JSON 源自 JavaScript,但它是一种独立于语言的数据格式。许多现代编程语言都支持 JSON 的生成和解析。
2023-03-24 13:41:40
5871
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1