MZ Blog

Thinking will not overcome fear but action will.

EidosOS实现(6)-事件组

EidosOS实现(5)-事件组 1、摘要 ​ 本文主要讲解RTOS的事件组,为了实现一个事件通知多个任务,或者多个事件通知一个任务,RTOS不得不提供一种高效的机制来解决这一问题。但在介绍EidosOS的事件组之前,先对信号量与互斥量的操作进行回顾并提取它们的操作中的公共部分,统一成事件,以便后续扩展。 2、抽象层 ​ 回顾信号量和互斥量的等待操作和释放操作,发现其中都要去操作链表...

EidosOS实现(5)-互斥锁

EidosOS实现(4)-互斥锁 1、摘要 ​ 在前文中,我们通过信号量机制实现了任务之间的等待与唤醒,并利用二值信号量对临界资源进行了简单保护。然而,这种方式并未对资源的“所有权”进行约束,也无法处理优先级反转等问题。在实际实时系统中,这些问题会直接影响系统的正确性与实时性。为此,引入了互斥量(Mutex)机制,对临界资源访问进行更加严格的管理。 2、互斥锁的实现 ​ 互斥量结构...

EidosOS实现(4)-信号量机制

EidosOS 实现之信号量机制 从零实现实时操作系统EidosOS系列! 1、摘要 ​ 本文介绍实时操作系统(RTOS)中实现等待和唤醒机制的一种重要手段——信号量机制。信号量是操作系统中任务(线程)用于协调任务(线程)之间对共享资源访问以及实现同步的一种核心机制。 ​ 在多任务系统中,任务协作过程中不可避免会涉及对共享资源的竞争与协调。本文将从经典的生产者-消费者问题出发...

EidosOS实现(3)-等待与唤醒理论说明

EidosOS实现之任务的等待与唤醒理论说明 1、摘要 ​ 本文介绍实时操作系统(RTOS)的核心机制之一——等待与唤醒机制。 ​ 对于一个最小RTOS而言,需要解决两个基本问题:一是“下一个运行的是谁”,即调度器;二是“哪些任务需要等待,以及何时被重新唤醒”,即等待与唤醒机制。前一问题已在任务切换中讨论,本文将重点分析后者。 ​ 在没有等待机制的情况下,最直接的方式是忙等待(bus...

EidosOS实现(2)-任务管理结构的演进

EidosOS 实现之任务管理结构的演进——从数组到链表 从零实现实时操作系统EidosOS系列! 1、摘要 ​ 在实现信号量之前,必须先解决任务的组织方式问题,即如何用合适的数据结构表达任务状态。这一问题的解决,正是从全局任务表向链表调度结构转变的核心动机。 2、单数组的问题 ​ 在上一篇文章中,我们通过全局指针数组统一管理所有任务的TCB。在这种实现方式下,无论是在时钟...

EidosOS 实现(1)-任务切换

EidosOS 实现(1)-任务切换 从零实现实时操作系统EidosOS系列! 1、摘要 ​ 在一个抢占式实时操作系统中,任务调度机制决定了系统的整体运行效率与响应能力,而任务控制块(Task Control Block,TCB)则是这一机制的核心载体。它不仅描述了任务的基本属性,还承担了任务切换、状态管理以及阻塞控制等关键职责。在实际实现过程中,TCB 并非一开始就具备完整结...

深入理解计算机系统篇之链接(6):PIC可执行目标文件与RAM运行实现

深入理解计算机系统篇之链接(6):PIC可执行目标文件与RAM运行实现 1.摘要 ​ 在学习了PIC位置无关代码后,想要做一个位置无关代码的APP跑起来的测试,通过添加编译选项变成PIC代码,然后存入Flash中,编写Boot加载该APP程序,看看效果如何 2.APP ​ APP程序很简单,用cubeMX生成后直接用cmake进行编译,不过cmake文件有几行需要修改,首先是开启位置...

深入理解计算机系统篇之链接(5):PIC位置无关代码

深入理解计算机系统篇之链接(5):PIC位置无关代码 1.摘要 ​ 本章讲解PIC位置无关代码的引入动机,使用方法及原理。 2.动机 ​ 引入PIC的动机是共享库(动态库)的使用方式决定的,共享库只有一份被放入Flash中,每个应用程序如果要链接共享库,就需要讲其搬移到RAM中链接,可是每个应用程序在RAM中的地址不同,引入的共享库地址也就不一样,不能再采用静态的固定的地址获取方式去...

深入理解计算机系统篇之链接(4):重定位

深入理解计算机系统篇之链接(4):重定位 1.摘要 ​ 本文讲解链接过程中最核心的步骤之一:重定位。介绍重定位的工作原理。 2.重定位的主要工作 ​ 链接器完成符号解析后,就把符号引用与符号定义关联起来了。然后就可以开始重定位的步骤了,重定位的目的就是==确定每个符号定义的运行时内存地址,然后修改符号引用,使之指向符号定义的运行时内存地址==。 ​ 重定位由两步组成: 重定...

深入理解计算机系统篇之链接(3):符号解析

深入理解计算机系统篇之链接(3):符号解析 1.摘要 ​ 本文讲解链接中最重要的步骤之一:符号解析相关的内容,包括链接器如何进行符号解析,解析规则是什么,这种解析规则可能会产生什么问题等,还有如何使用静态库以及动态库进行符号解析等。 2.链接器的符号解析方法 ​ 链接器解析符号的方法是将每个符号引用与输入的可重定位目标文件中的符号表中的一个符号定义关联起来。通俗的讲就是链接器从后面的...