
底层软件开发
文章平均质量分 90
Mr_-G
嵌入式软件开发工程师
展开
-
“Software Stack Testing Closed Loop“(软件堆栈闭环测试)
"SoftwareStackTestingClosedLoop"(软件堆栈闭环测试)在智能网联汽车和自动驾驶领域中扮演着至关重要的角色。这种测试方法系统地验证从硬件到软件的完整堆栈,确保系统在复杂工况下的功能安全性和可靠性。文章详细解析了闭环测试的概念、分层架构、核心思想及其在汽车电子开发中的必要性。同时,探讨了闭环测试的方法与工具、实施流程,并通过实际案例分析展示了其应用。原创 2025-04-20 19:50:25 · 789 阅读 · 0 评论 -
汽车行业软件开发与电子工程师入门知识:非易失性存储器(EEPROM/NVM)在汽车电子中的应用与实现
随着汽车电子技术的进步,非易失性存储器(NVM)在车载系统中的应用越来越广泛,其中EEPROM(电可擦可编程只读存储器)因其数据持久性、低功耗和高可靠性成为关键组件。本文探讨了EEPROM的工作原理、存储介质特性及其在汽车电子中的应用,如车载诊断系统(OBD)、车身控制模块(BCM)和信息娱乐系统。文章还分析了EEPROM在实现技术上的优化方法,包括存储器选型、电源管理和数据可靠性技术,并指出了当前面临的技术挑战,如数据擦写次数限制和高温环境下的可靠性问题。原创 2025-04-21 09:33:34 · 539 阅读 · 0 评论 -
Looper Thread in Linux
LooperThread是Linux系统多线程编程中的核心概念,主要用于处理异步事件和消息,确保系统的高效响应和稳定运行。它通过一个消息队列和循环机制工作,不断检查并处理队列中的消息。LooperThread在图形界面编程、网络编程和事件驱动编程中广泛应用,能够处理用户输入、网络数据包和各种系统事件。实现LooperThread可以利用Linux的原生支持或开源框架,如Android的Handler机制。为了优化性能,需要减少消息等待时间、合理使用多线程和优化内存管理。原创 2025-04-30 08:16:08 · 1157 阅读 · 0 评论 -
等待队列完全指南
资源高效利用:通过休眠 - 唤醒机制,避免忙等待,让 CPU 在等待时处理其他任务。异步编程基石:是实现驱动 IO、同步原语、事件通知的底层核心机制。灵活性与通用性:通过可中断 / 不可中断模式、独占 / 共享模式,适应内核几乎所有等待场景。原创 2025-05-08 08:19:42 · 667 阅读 · 0 评论 -
等待相关事件的进程非互斥性
事件是 “通知” 而非 “资源”:多个进程可以同时订阅同一个事件,就像多人同时关注同一个快递通知。等待队列是 “观察者集合”:操作系统维护等待同一事件的进程列表,事件触发时批量通知。唤醒后需处理竞争:虽然等待时非互斥,但处理事件关联的资源可能需要互斥锁等额外机制。原创 2025-05-08 08:19:24 · 881 阅读 · 0 评论 -
Linux 进程资源限制的深度剖析
Linux 的进程资源限制机制,本质是通过一套 “规则系统” 确保每个进程在合理范围内使用资源,就像家长管理孩子一样:既给予足够的自由度,又防止过度索取导致家庭(系统)崩溃。从基础的ulimit到强大的 cgroups,从单个进程到进程组的管理,这套机制是系统稳定性、安全性和公平性的核心保障。能预防 “进程失控” 导致的故障(如内存泄漏、文件句柄耗尽)。能为不同服务分配合理的资源配额(如数据库服务需要更多内存,Web 服务需要更多文件描述符)。能在容器化、微服务架构中实现细粒度的资源隔离。原创 2025-05-08 08:19:05 · 876 阅读 · 0 评论 -
Linux 进程切换的技术内幕
定义:进程运行时的所有状态信息,包括:CPU 寄存器:如通用寄存器(保存临时数据)、程序计数器(PC,指向下一条要执行的指令)、状态寄存器(记录 CPU 当前状态,如是否溢出)。内存状态:页表基址(MMU 用于虚拟地址转换)、当前栈指针(SP)。资源句柄:打开的文件描述符、信号处理状态、线程局部存储等。类比:上下文相当于进程的 “存档文件”,记录了进程运行到哪一步、用了哪些 “工具”。阴(代价)原创 2025-05-08 08:18:46 · 676 阅读 · 0 评论 -
Linux之硬件上下文
硬件上下文是 CPU 在处理特定任务(如进程、线程、中断)时,所有硬件状态的总和。这些状态必须被保存和恢复,才能确保任务切换后执行的连续性和正确性。它是操作系统实现多任务处理、中断响应、虚拟化等功能的底层基石。从硬件视角看,上下文是一组与 CPU 执行环境直接相关的可读写状态参数,其核心作用是在任务切换时提供 “断点续传” 的能力 —— 就像游戏存档记录玩家的位置、血量、装备,以便读档时恢复进度。硬件上下文是 CPU 执行环境的 “快照”,是多任务、中断、虚拟化等技术的底层支撑。原创 2025-05-08 08:18:21 · 736 阅读 · 0 评论 -
具有链表的散列法比从PID到表索引的线性转换更优越
/ 哈希表桶数,定义为质数,减少冲突// 每个桶是双向链表头// 链表节点结构,包含pid和对应的task_structint pid;// 链表节点空间效率:不预设最大范围,按需分配,杜绝浪费。查找速度:通过哈希函数将查找范围从 “全空间” 缩小到 “单个桶”,配合短链表实现近似 O (1) 查找。动态性:增删操作仅涉及链表节点,无需重建整个结构,适合高频变更场景。原创 2025-05-07 21:27:30 · 809 阅读 · 0 评论 -
为什么说由中断或异常处理程序执行的代码不是一个进程
定义:由硬件设备(如键盘、硬盘、网卡)或软件(如定时器)发起的异步事件,用于通知 CPU “有紧急事件需要处理”。分类硬件中断:如网卡收到数据时触发的中断(IRQ),键盘按键触发的中断。软件中断:如 Linux 中的 “软中断”(Softirq,用于延后处理的批量任务,如网络包处理)、定时器中断(周期性触发,用于进程调度)。核心作用:让 CPU 从当前任务中跳出,转向处理紧急事件,实现 CPU 与外部设备的异步通信。原创 2025-05-07 21:15:46 · 778 阅读 · 0 评论 -
中断系统的技术本质与实现原理
从计算机体系结构角度,中断(Interrupt)是指:由硬件设备、软件程序或处理器内部状态变化引发的异步事件,该事件导致处理器暂停当前程序的执行,转而执行预先定义的中断处理程序(Interrupt Handler),处理完毕后返回原程序继续执行的机制。异步性:中断事件的发生时间不可预测,与 CPU 当前执行流程无关(如键盘按键、硬盘读写完成)。强制性:CPU 必须响应中断(除非处于中断屏蔽状态),无法拒绝。可恢复性。原创 2025-05-07 17:49:26 · 631 阅读 · 0 评论 -
从数据结构到操作系统实践
线性转换法像 “用空间换时间的土豪”,在 PID 范围小且连续时有效,但面对真实场景(稀疏、动态、大范围)时力不从心;带链表的散列法像 “精打细算的管家”,通过数学映射将大范围数据 “压缩” 到合理空间,用链表优雅处理冲突,在时间和空间上实现了近乎完美的平衡。这正是 Linux 内核选择它的原因 —— 在资源有限的计算机世界里,效率永远是第一法则。原创 2025-05-07 17:32:03 · 593 阅读 · 0 评论 -
pidhash 表的技术内幕
pidhash 表是 Linux 内核中用于管理进程 ID(PID)的数据结构,本质是一个哈希表(Hash Table),键(Key)是 PID,值(Value)是进程描述符指针(struct task_struct*)。它的核心目标是:O (1) 平均时间复杂度:通过哈希函数将 PID 映射到表中的特定位置,实现快速查找、插入和删除进程。处理 PID 唯一性:确保每个 PID 在系统中唯一,并高效处理 PID 循环重用(比如 PID 耗尽后从 30000 + 回绕到 1)。// 哈希表数组。原创 2025-05-07 17:02:36 · 573 阅读 · 0 评论 -
Linux之哈希表和链表
哈希表:利用 “快递站智能分桶” 思想,通过哈希函数快速定位,用链表解决冲突,实现高效的键值对操作。链表:像 “动态排队的糖葫芦”,适合频繁增删场景,Linux 内核通过list_head实现了与数据类型解耦的双向链表,成为驱动、文件系统等模块的基石。理解这两个数据结构,不仅能掌握编程的核心工具,还能深入理解 Linux 内核、数据库、编程语言(如 Python 的字典、C++ 的)的底层实现逻辑。原创 2025-05-07 16:51:23 · 868 阅读 · 0 评论