RTOS学习笔记

news2024/9/23 1:39:59

前言

进程?线程?并发?并行?主线程?子线程?主线程中创建子线程?每个线程就是一个死循环?
进程 = 多个线程,每个线程可以写一个死循环处理一个需要循环执行的代码块!!
每个线程即一个任务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

关于参考文献

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/739711.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

leetcode-203.移除链表元素

leetcode-203.移除链表元素 文章目录 leetcode-203.移除链表元素题目描述代码提交 题目描述 代码提交 代码 class Solution { public:ListNode* removeElements(ListNode* head, int val) {ListNode *dummyhead new ListNode(0); // 设置一个虚拟头结点,堆上dummyhead->ne…

SOLIDWORKS、UG、Proe三款三维绘图软件哪个好?

提到制图,很多人可能会先想到AutoCAD,但它现在主要会被用来进行二维的平面制图。3DMAX是一款被广泛应用的三维制图软件。Proe也是一种比较好用的三维建模软件。而SW也就是SolidWorks更为知名,它是世界上第一个专为Windows系统开发的三维CAD建…

解决小程序 scroll-view 里面的image有间距、小程序里面的图片之间有空隙的问题。

1)小程序 image跟view标签上下会有间隙,解决方法如下: 在image那里设置vertical-align:top/bottom/text-top/text-bottom 原因:图片文字等inline元素默许是跟父级元素的baseline对齐,而baseline又和父级底边有必定间距…

web 前端 Day 3

伪类选择器 <title>伪类选择器</title> </head> <style>a:link {color: beige;} a:visited {color: aquamarine; } a:hover { 鼠标悬停cursor: cell; 鼠标样式font-size: 80px; } a:active {font-size: 70px; } div{width: 300px;height: 400…

813. 打印矩阵

链接&#xff1a; 打印矩阵 题目&#xff1a; 给定一个 rowcolrowcol 的二维数组 aa&#xff0c;请你编写一个函数&#xff0c;void print2D(int a[][N], int row, int col)&#xff0c;打印数组构成的 rowrow 行&#xff0c;colcol 列的矩阵。 注意&#xff0c;每打印完一整行…

JPA的saveAndFlush

#Stable Diffusion 美图活动一期# 关于MyBatis与JPA&#xff1a; 笔者初次接触这两个持久层框架的时候&#xff0c;那还是得从iBatis、Hibernate开始说起。那时候知道的一个很浅显、但最明显的区别就是&#xff1a;iBatis是半自动化的ORM框架&#xff0c;适用于表关联关系复杂的…

浅谈利用树莓派卡片电脑进行图像识别学习和研发

利用树莓派进行图像识别学习和研发是一个非常有前景和潜力的领域。树莓派是一款小巧且功能强大的单板计算机&#xff0c;具备较高的处理能力和丰富的接口&#xff0c;非常适合用于图像识别的应用开发。 在图像识别方面&#xff0c;树莓派可以利用其强大的计算能力和丰富的软件…

react知识点汇总四--react router 和 redux

react-router React-Router 是一个用于在 React 应用中实现页面导航和路由管理的库。它提供了一种方式来创建单页应用&#xff08;Single-Page Application&#xff0c;SPA&#xff09;&#xff0c;其中页面的切换是在客户端进行的&#xff0c;而不需要每次跳转都向服务器请求…

Mac上绿色软件怎么长期保存

1、找到想长期保存的绿色软件&#xff0c;右键拷贝 2、来到「应用程序」&#xff0c;点工具栏-操作-粘贴项目 3、这样绿色软件就长期保留下来了

华纳云:一台香港多IP服务器如何设置多个IP?

在一台香港多IP服务器上设置多个IP的步骤如下&#xff1a; 1.确认服务器支持多个IP地址&#xff1a;首先&#xff0c;确保你的服务器有多个网卡接口或虚拟网卡接口&#xff0c;以支持多个IP地址。 2.查看当前IP配置&#xff1a;运行以下命令来查看当前的IP配置信息&#xff1a;…

深度学习——神经网络参数的保存和提取

代码与详细注释&#xff1a; Talk is cheap. Show you the code&#xff01; import torch import matplotlib.pyplot as plt# 造数据 x torch.unsqueeze(torch.linspace(-1, 1, 100), dim1) # x data (tensor), shape(100, 1) y x.pow(2) 0.2*torch.rand(x.size()) # n…

unity 调用高德SDK

unity 2022.2.20f1c1 一、准备工作&#xff1a; 方式一&#xff1a;Unity打包arr 导入AndroidStudio &#xff0c;AndroidStudio打包 方式二&#xff1a;Unity通过MainActivity.java调用SDK &#xff0c;MainActivity.java 放入到Android Studio中编写代码 二、打包环境…

数字化时代,企业的数据指标体系

在社会节奏越来越快&#xff0c;处理的信息量越来越大的今天&#xff0c;传统的经营管理模式已经适应不了当下的环境。而由经验、情感组成的业务调整以及决策能力不再能正确指导企业走在正确的方向上&#xff0c;所以数据就成为了企业新的业务优化调整和支撑企业高层管理进行决…

关于saltstack的监控系统部署

环境 master 是centos7-linux 192.14.0.79 minios 是 windows11 192.14.0.207 下载saltstack主节点 sudo yum install salt-master下载saltstack 客户端 windows的minios配置Salt-Minion-3006.1-Py3-AMD64-Setup.exe 过程 master 端 vim /etc/salt/master.d/network.conf…

如何让一个盒子因为内容不同,而样式也不同呢

例如&#xff0c;每个盒子上面都有一个色块&#xff0c;静态&#xff0c;动态&#xff0c;岗位。如何让不同的内容就有不同的字体颜色和背景呢&#xff1f; 可以给每个盒子重复一样的步骤&#xff0c;但是显然最简单的方法是用一个循环。循环遍历数据&#xff0c;直接写一个盒…

《Pytorch深度学习和图神经网络(卷 1)》学习笔记——第八章

本书之后的内容与当前需求不符合不再学习 信息熵与概率的计算关系… 联合熵、条件熵、交叉熵、相对熵&#xff08;KL散度&#xff09;、JS散度、互信息 无监督学习 监督训练中&#xff0c;模型能根据预测结果与标签差值来计算损失&#xff0c;并向损失最小的方向进行收敛。无…

CRYPTO-36D-rsaEZ

0x00 前言 CTF 加解密合集&#xff1a;CTF 加解密合集 0x01 题目 给了一个秘钥&#xff0c;三个加密后的文件 0x02 Write Up 先获取n和e # 导入公钥 with open(r"C:\Users\wdd\Downloads\flag\fujian\public.key", "rb") as f:key RSA.import_key(f…

行业追踪,2023-07-10,汽车零部件如期调整,需要耐心等待第二波

自动复盘 2023-07-10 成交额超过 100 亿 排名靠前&#xff0c;macd柱由绿转红 成交量要大于均线 有必要给每个行业加一个上级的归类&#xff0c;这样更能体现主流方向 rps 有时候比较滞后&#xff0c;但不少是欲杨先抑&#xff0c; 应该持续跟踪&#xff0c;等 macd 反转时参与…

Vue简单使用及整合elementui

创建vue工程 在vue工程目录下npm install vue 下载离线vue https://v2.vuejs.org/v2/guide/installation.html 引入工程中 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" c…

C语言指针进阶

目录 0.指针初阶回顾&#xff1a; 1.字符指针 2.指针数组 3.数组指针 &#xff08;1&#xff09;数组指针的定义&#xff1a; &#xff08;2&#xff09;数组名和&数组名 &#xff08;3&#xff09;数组指针的使用 &#xff08;4&#xff09;数组指针的数组&#x…