Rt-thread入门第一章 全局理解(个人理解)

news/2024/11/17 22:45:01/

这里是阅读文档的一些个人总结,因为是个人总结,所以肯定会有偏差

线程是什么呢?

理解为独立的,死循环的,函数个体

操作系统意味着线程切换,线程切换需要做些什么?

需要保存当前寄存器的值,堆栈地址

便于理解:当前寄存器代表内核的通用寄存器和特殊寄存器!!!

保存在哪?

保存在每个线程单独的内存空间(栈区)
可以通过堆栈地址访问到这块栈区

裸机运行时寄存器的值放到了统一的栈空间,这个栈定义在了启动文件,而多线程每个线程都有独立的栈空间

如何跳转到别的线程?

不考虑具体流程,将要跳转的地址设置到PC寄存器中完成跳转,PC寄存器属于内核寄存器中的特殊寄存器

如何跳转回当前的线程?

不考虑具体流程,从栈区取得返回地址,且恢复寄存器的值完成返回
这里值得注意的是!!!
刚才主动保存的并没有返回地址
因为保存返回地址是由程序执行流程自动触发的,而不需要进行显式的操作

补充

上面聊的并不全面,细品还得看文档,比如文档会聊到线程控制块如何创建,初始化,链表的插入删除,线程调度等

在这个板块以后分享的也只是API的用法,比如线程创建,切换,队列,邮箱,锁的使用


http://www.ppmy.cn/news/35155.html

相关文章

论文解读:PP-LiteSeg: A Superior Real-Time Semantic Segmentation Model

发表时间:2022 论文地址:https://arxiv.org/abs/2204.02681 项目地址:https://github.com/PaddlePaddle/PaddleSeg PP-LiteSeg,一个新的轻量级实时语义分割任务模型,在分割精度和推理速度之间实现了一种最先进的权衡…

(算法基础)朴素版的Dijkstra算法

适用情景在最短路问题当中的单源最短路(一号点到其他所有点之间的距离)的只有正权边的情况。时间复杂度O(N^2)算法解释(朴素版的Dijkstra)首先是关于这个图的存储,图的话主要是分为稠密图与稀疏图。稠密图就是说n的平方与m是一个量级的&#…

C++分析以下关于指针的操作有什么问题

代码一:按值传递/按引用传递 按值传递是指,在函数调用时,将参数的值复制一份传递给函数,函数中对参数值的修改不会影响到原始值 对于指针类型的参数,在按值传递的情况下,传递给函数的是指针变量的值(即指针变量所存储的地址),而不是指针所指向的内存地址。因此,当在…

一文看懂数据仓库

数据仓库数据仓库的概念数据仓库的主要特征数据仓库的分层数据仓库的分层介绍原始数据层:ODS(Operational Data Store)数据仓库层:DW(Data Warehouse)数据明细层:DWD(Data Warehouse…

进阶C语言——字符函数和字符串函数【详解】(二)

文章目录1. strtok2. strerror3. memcpy4. memmove5. memcmp6. memset1. strtok sep参数是个字符串,定义了用作分隔符的字符集合第一个参数指定一个字符串,它包含了0个或者多个由sep字符串中一个或者多个分隔符分割的标记strtok函数找到str中的下一个标记…

算法训练:贪心与回溯

目录 1.手套(贪心算法) 2.字符串通配符(回溯算法) 1.手套 题目描述: 在地下室里放着n种颜色的手套,手套分左右手,但是每种颜色的左右手手套个数不一定相同。A先生现在要出门,所以…

【redis】redis缓存更新策略

目录一、缓存更新策略二、主动更新策略三、Cache Aside Pattern3.1 删除缓存还是更新缓存?3.2 如何保证缓存与数据库的操作同时成功或失败?3.3 先操作缓存还是先操作数据库3.3.1 先删缓存再删库3.3.2 先删库再删缓存一、缓存更新策略 1.内存淘汰:不用自…

Flutter-Scaffold组件

在Flutter开发当中,我们可能会遇到以下的需求:实现页面组合使用,比如说有悬浮按钮、顶部菜单栏、左右抽屉侧边栏、底部导航栏等等效果。Scaffold组件可以帮我们实现上面需求说的效果。这篇博客主要分享容器组件的Scaffold组件的使用&#xff…