RTOS学习笔记

前言

进程?线程?并发?并行?主线程?子线程?主线程中创建子线程?每个线程就是一个死循环?
进程 = 多个线程,每个线程可以写一个死循环处理一个需要循环执行的代码块!!
每个线程即一个任务task,任务调度器进行任务调度,即线程调度。
task可以认为自己独占一颗CPU,所以可以实现为一个死循环。
为什么要任务调度(线程调度)??因为每一个线程中都有需要循环执行的代码即死循环,所以需要给所有任务分配CPU的使用时间。
在这里插入图片描述
在这里插入图片描述

参考:https://baijiahao.baidu.com/s?id=1666649642161715999&wfr=spider&for=pc

RTOS的基本概念与线程基础知识

https://blog.csdn.net/qq_43460068/article/details/126896489

RTOS基础知识

https://blog.csdn.net/Chase_xkx/article/details/127227335

实时系统与分时系统?硬实时?软实时?

https://blog.csdn.net/Ivan804638781/article/details/114239343

实时性操作系统的特点

①异步的事件响应;
②切换时间和中断延迟时间确定;
③优先级中断和调度;
④抢占式调度。

RTOS原理与实现01:RTOS基础知识

前后台式编程(裸机、单机、一个main函数包一个while循环)?缺点?
基于RTOS的编程?区别?

  • 任务函数不需要返回,任务函数中有一个死循环,task可以认为自己独占一颗CPU,所以可以实现为一个死循环。
    在这里插入图片描述
  • 提供资源管理与通信组件
    提供一些组件用于简化任务对资源的访问,事件的处理,以及任务之间的通信,有效降低任务之间的代码耦合
    在这里插入图片描述
    https://blog.csdn.net/chenchengwudi/article/details/115473104

基于RTOS的线程开发 概述

int a;
喂饭() 栈A
{
    int b=2;
    int c;
    c = a+b;==>1.b+2,2,c=new val 
    while(1) 线程A要执行的循环代码
    {
        喂一口饭();
    }
}
回信息() 栈B
{
    int b;
    while(1)  线程B要执行的循环代码
    {
        回一个消息();
    }
}
void main() 主线程
{
    create_task(喂饭); 创建线程A
    create_task(回信息); 创建线程A
    start_scheduler(); 开始任务调度(线程调度)
    while(1) 线程B要执行的循环代码
    {
        sleep();
    }
}

要点:

  • 一般main函数会被创建成一个线程,即主线程;
  • 三个线程:主线程,线程A,线程B,AB是主线程的子线程;
  • 主线程创建了AB线程;
  • 线程函数一般不会有返回return,因为有需要循环执行的代码,即while或for;
  • 主线程与子线程的关系??共享一些东西?可以相互访问一些东西??此结论待确定!!
  • 为什么要任务调度(线程调度)?因为每一个线程中都有需要循环执行的代码即死循环,所以需要给所有任务分配CPU的使用时间。

实时操作系统组件

  • 计划进程:保证最高优先级线程正在运行的抢占式计划进程。
  • 通信机制:信号量、消息队列、队列等。
  • 关键区域机制:互斥体、门、锁等。
  • 计时服务:时钟、定时器等。
  • 电源管理:对于低功耗设备,电源管理通常是RTOS的一部分,因为它知道设备的状态。
  • 内存管理:可变大小的堆、固定大小的堆等。
  • 外设驱动器:UART、SPI、I2C等。
  • 协议栈:蓝牙、无线网络等。
  • 文档系统:FatFs等。
  • 设备管理:异常处理、启动等。

POSIX

POSIX(Portable Operating System Interface):可移植操作系统接口
SimpleLink SDK在TI-RTOS和FreeRTOS之上提供POSIX支持。这允许应用进程独立于底层RTOS。
POSIX API是底层实时操作系统之上的一个小填充码。创建POSIX线程时,将创建基础TI-RTOS(或FreeRTOS)任务。同样,在创建。POSIX线程信号量时,将创建TI-RTOS(或FreeRTOS)信号量。
POSIX支持的一个很好的功能是能够从网络上获取基于POSIX的代码并快速使其正常工作。
POSIX不是实时操作系统。它是一个操作系统兼容性层,允许应用进程在操作系统之间轻松移植。

线程通信:信号量、消息队列

  • 信号量允许资源管理。任务可以在sem_wait()上阻塞,直到资源变得可用(通过sem_post())。一个常见的用例是Hwi接收数据并发布信号量,以便任务可以处理它。这是可取的,因为它可以最大限度地减少中断的持续时间。大多数RTOS都支持二进制和计数信号量。
  • 消息队列对于在线程之间发送数据非常有用。

信号量

https://blog.csdn.net/weixin_43914272/article/details/108317212

消息队列

https://blog.csdn.net/qq_33471732/article/details/129372965

关于参考文献

文中的所有网址都是参考文献,请自行参阅

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值