rtos的核心原理简析
来源:互联网 发布:淘宝买家让加微信骗局 编辑:程序博客网 时间:2024/06/01 10:18
来自我的论坛
rtos的核心原理简析
rtos全称real-time operating system(实时操作系统),我来简单分析下:
我们都知道,c语句中调用一个函数后,该函数的返回地址都是放在堆栈中的(准确的说是栈中)。
rtos个人理解是一种黑客行为,他悄悄的修改了这个保存在栈中的返回这个地址,让调用函数返回到我们想让他返回的地方。
好了,这个返回什么时候返回呢?
一、 任务切换有两种:
1. 任务自己主动要求切换,这就是我们常用的sleep()函数了
2. 我的任务就是不想调用sleep()不切换,怎么呢? 好了,rtos中就有一个tick定时中断,定时中断后就跳转到另一个任务去了。为了保证实时性,外部中断以及其他外设中断也能够立刻切换。
二、 临界区
切换是可以了,但是现在我的任务运行一个东西就是不能够被打断的,怎么呢? 好了,rtos又有了一东西叫临界区,哈哈,加上就可以满足需求了。
三、 任务同步
从宏观上看,rtos的每个任务相对并发运行的,我怎么保证任务A运行到某个地方,任务B的继续向下执行? rots就有了信号量一说。
四、任务间数据处理问题
c开发的很多人常会用全局变量解决,由于个任务运行没有先后顺序,全局变量会带来相关隐行bug,必须慎用;rtos引入了队列、邮箱等解决问题。
以上就是rtos简单分析,不同的rtos还应该以具体源码为准。上面说了rtos,还有一个不得不说的OSAL,全称operating system abstraction layer用过TI的蓝牙,zigbee芯片的朋友都知道,TI用的蓝牙和zigbee协议栈中就有OSAL这个东西。他与rtos又有什么不同呢?
1. 任务与系统
rtos的任务和系统是独立的,也就是说rtos中的任务使用while(1);语句不会影响到系统以及其他任务。
OSAL则不同,任务和系统是耦合在一起的,也就是任务与系统都是运行在一个循环中的,即:
while(1){
系统
时钟Tick
事件信息
任务处理
...
}
2. 延时问题
rtos中很简单,直接调用系统sleep即可
OSAL则只能使用系统提供time来做大的延时,小延时不影响系统也可以使用while(delay--);
- rtos的核心原理简析
- 嵌入式系统的核心:RTOS
- SpringMVC 的核心原理
- SPRINGMVC的核心原理
- SpringMVC的核心原理
- JavaScript的核心原理
- Spring 核心组件工作原理简析
- RTOS的基本功能
- RTOS的ABC讨论
- 关于 RTOS 的选择
- 重复的轮子RTOS
- 关于 RTOS 的选择
- RTOS
- RTOS
- RTOS
- Android MediaPlayer的核心原理
- AVR单片机的RTOS-AVRX
- Rtos的调研分析报告
- 十年建站老司机带你十分钟搭建网站
- Linux redis 配置文件
- 【UVA1335】Beijing Guards
- 在IE或者360浏览器的兼容模式下页面错乱
- nginx不转发http header问题解决
- rtos的核心原理简析
- select socket
- 秋招的一些知识整理
- JVM(8):JVM知识点总览-高级Java工程师面试必备
- WebView不能下载apk文件
- < 笔记 > DOM
- 在Linux下安装CVS服务
- phped5.9开发工具
- 在虚拟机上安装需要的APK