logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

os操作系统—— 第10讲:实战与展望

从第 1 讲定时器驱动的“假并发”,到第 10 讲亲手写出的双核调度器,我们走过了操作系统内核最动人的一段进化史。并发不是魔法,而是一套环环相扣的软硬件契约—— 从硬件定时器、缓存、中断,到 TCB、调度算法、信号量、屏障,每一层都在为“同时做好多件事”这个朴素愿望服务。你现在的知识体系,已经足以去阅读 FreeRTOS、Zephyr、Linux 内核的多核调度代码。当你再遇到奇怪的并发 bug

#spring
os操作系统——第9讲:缓存一致性协议

在多核下不足以保证同步(它只防止编译器优化,不涉及缓存),为什么自旋锁要配合内存屏障,以及为什么把两个无关变量安排在一起会无故拖慢系统。因为每个核心都在“自以为是”地保留私有缓存副本,当它们同时修改相邻的变量时,硬件不得不在核心之间来回“踢皮球”同步缓存行。反过来,如果你通过普通指令直接访问共享变量(不经过锁或原子操作),硬件不会触发 MESI 的一致性动作,就会读脏数据。即使两个变量在逻辑上毫无

#缓存#java#spring
os操作系统——第8讲:多核并发与内存屏障

即使代码顺序正确,每个核心的私有缓存仍可能导致数据不一致——一个核心改了变量,另一个核心却读到旧值,连锁都救不了(因为锁变量本身也可能被缓存)。我们将深入 CPU 缓存架构,了解 MESI 协议如何保证多核缓存一致性,以及“伪共享”这个性能杀手是如何悄悄拖慢你的系统。x86 是强内存模型,通常不会重排 StoreStore,但仍有其他类型的乱序(如 StoreLoad)。今天我们从“加了锁还出错”

os操作系统——第7讲:多核启动与核间中断(IPI)

AP 被唤醒后,从指定的入口地址开始执行(通常是内核的一个函数),进行自初始化:设置自己的栈、页表、GIC CPU 接口、定时器,然后进入空闲循环或开始运行任务。而且缓存不友好:一个核心取走任务后,可能另一个核心的缓存里还留着这个任务的 TCB。IPI(Inter-Processor Interrupt)是一种特殊的中断,由一个核心发送给另一个核心(或所有其他核心),用来通知对方做某件事。调度器在

#spring#java#spring boot
os操作系统——第6讲:函数调用也是任务

本文介绍了RTOS中系统调用的实现原理,重点讲解了通过软中断(SVC)实现用户态与内核态隔离的方法。主要内容包括:1) 单体内核的安全性问题,提出用户态与内核态分离的必要性;2) ARM Cortex-M架构下SVC指令的工作原理;3) 具体实现步骤,包括系统调用号定义、用户态封装函数和SVC中断处理函数;4) 系统调用的性能开销与安全性优势;5) 如何将现有内核API改造为系统调用。文章最后预告

os操作系统——第5讲:任务间的鹊桥

调查发现:系统中有一个低优先级的“气象数据收集任务”持有了互斥量,被一个中优先级的“通信任务”抢占,而高优先级的“总线管理任务”等待互斥量——优先级反转!这种实现方式避免了显式的关中断,只使用信号量,代码清晰,且可扩展至多核(只要信号量本身支持多核,第8讲会进入多核锁)。的逻辑会检查:如果锁已被占用,且当前请求者的优先级高于持有者的优先级,则提升持有者的优先级(继承)。有了信号量,我们可以同步数据

#网络
os操作系统——第4讲:不要独占CPU

当无事可做时,CPU会跑一个特殊的“空闲任务”,甚至可以进入低功耗模式。空闲任务是一个普通的 TCB,在系统初始化时创建,并且永远不会被阻塞。有了阻塞机制,我们的操作系统才能真正做到“无任务时不空转”,为后续更复杂的同步和通信原语打下基础。我们将学习如何在任务之间传递数据、同步动作,并解决经典的“优先级反转”问题,让任务间协作更加优雅。指令(等待中断),直到下一个 Tick 中断到来,它又被抢占,

#单片机#嵌入式硬件
os操作系统——第3讲:让任务学会“等待”

如果在执行完第2步(ADD)后,定时器中断发生,调度器切换到TaskB,TaskB也执行同样的三步,那么当TaskA恢复时,它手里还捏着旧值,写回去就会覆盖TaskB的修改。如果我们能阻止中断的发生,调度器就不会被触发,当前任务就可以放心地独占CPU,执行完整个临界区。),那就不能简单地用关中断——因为睡眠意味着主动让出CPU,但中断关了,调度器永远无法运行。如果一个函数已经关了中断,调用的另一个

#单片机#嵌入式硬件
汽车电子嵌入式常见Os对比

FreeRTOS从早期的V7、V8,到目前主流的V10,以及最新的V11/LTS版本,在功能、性能和编程规范上都有显著演进。对于需要运行图形界面、复杂网络服务或大量计算的设备(如智能网关、工控面板、高端POS机),通常会选择嵌入式Linux。前者适用于资源受限的微控制器(MCU),后者用于处理能力更强的应用处理器。这里汇总了常见汽车操作系统的核心对比和获取方式。设备功能复杂如需要运行多个应用,则直

#汽车
os操作系统——第2讲:任务的三六九等

但那个代码里,每个任务只是一个裸函数,调度器只知道“下一个是谁”。如果系统里有 10 个任务,有的需要紧急响应,有的只是后台统计,有的正在等待数据……为了让第一专栏节奏适中,本讲我们先实现“就绪”、“运行”、“阻塞(延时)”三个状态。真实操作系统(如 FreeRTOS)还会有“就绪态挂起”、“阻塞态挂起”等细分,但核心就是这四大状态。可以用一个按唤醒时间排列的有序链表,或者用一个简单的“延时滴答计

    共 31 条
  • 1
  • 2
  • 3
  • 4
  • 请选择