OSAL为Operating System Abstraction Layer,即操作系统抽象层,支持多任务运行,所有的应用程序(app)都在其上运行,它并不是一个传统意义上的操作系统,但是实现了部分类似操作系统的功能。

OSAL是一种基于事件驱动的轮询式"操作系统"。

现有的嵌入式操作系统可以分为两类,即通用的多任务操作系统(General purpose Multi-tasking OS)和事件驱动的操作系统(Event-driven OS)。前者能够很好地支持多任务或者多线程,但是会随着内部任务切换频率的增加而产生很大的开销,这类操作系统有:uC/OS-II、嵌入式Linux、WinCE等。后者支持数据流的高效并发,并且考虑了系统的低功耗要求,在功耗、运行开销等方面具有优势,典型的代表如TinyOSl291。

OSAL的调度机制分为三部分:1、任务调度;2、时间管理;3、原语通信。

1、任务调度:osal采用一个链表结构来管理协议栈各层相应任务。相关操作函数有,添加任务到链表中;获取下一个活动任务;根据taskID查找下一个任务。osal采用轮询任务调度队列(任务链表),通过两个函数:调度程序主循环函数和设置事件发生标志函数。

在任务轮询过程中,系统将会不断查询每个任务是否有事件发生,如果有事件发生,就执行相应的事件处理函数,如果没有事件发生,则查询下一个任务。

事件发生 ->

被打包为消息 ->

存放到消息队列 ->

OSAL轮寻任务中的事件状态 ->

有事件发生 ->

事件处理函数执行对应功能

2、时间管理:通过为事件设置超时等待时间,一旦等待时间结束,便为对应任务设置事件发生标志,从而达到对事件进行延时处理目的。

3、原语通信:请求响应原语操作:一旦调用了下层相关函数后,就立即返回。下层处理函数在操作结束后,将结果以消息的形式发送到上层并产生一个系统事件,调度程序发现这个事件后就会调用相应的事件处理函数对它进行处理。两个相关函数:向目标任务发送消息的函数;消息提取函数。

当有一个事件发生的时候,OSAL负责将此事件分配给能够处理此事件的任务,然后此任务判断事件的类型,调用相应的事件处理程序进行处理。
————————————————
原文链接:https://blog.csdn.net/woshidytgg/article/details/72827972

OSAL(操作系统抽象层)相关推荐

  1. CC2540/CC2541/CC254x之OSAL操作系统抽象层

    测试环境 协议栈版本:BLE-CC254x-1.4.0 开发环境IAR版本:IAR 8.20 硬件设备:CC2540/CC2541开发板 示例测试Demo工程:simpleBLEPeripheral工 ...

  2. ZigBee学习之7——OSAL(操作系统抽象层)API解读

    根据Z-Stack1.4.3-1.2.0中OSAL API_F8W-2003-0002_.pdf文档翻译. Z-Stack1.4.3及以后的版本中引入了一个OS的概念,把应用层和堆栈层进行了分离,但是 ...

  3. WSF操作系统抽象层学习笔记 (五)---事件处理及运行方式

    事件处理 事件管理会创建一个OS的事件,用于进行WSF无运行需求时任务的阻塞. //事件管理结构 typedef struct {uint16_t param; //参数uint8_t event; ...

  4. WSF操作系统抽象层学习笔记 (一) ---简介和内存管理

    一.简介 WSF(wireless software foundation)是对操作系统的一个简单的封装,提供对操作系统的简单编程,提供简单的系统服务 功能简介: 事件.消息传递和处理. 定时器功能. ...

  5. WSF操作系统抽象层学习笔记(三)---消息列队

    消息 WSF的消息服务用于传递消息到对应的事件处理句柄. 实现机制和使用方法 基于内存管理,从内存中申请sizeof(wsfMsg_t) + 消息长度的内存.添加头部描述,返回给申请者除去头部的指针位 ...

  6. WSF操作系统抽象层学习笔记(二)---列队(单向链表)

    队列 队列的管理使用单向链表结构.个人认为使用双向链表更易于维护. 注意: 每个以列队为基础管理的结构都必须将第一个元素设定为列队元件的指针. 进行列队操作时都需要关闭任务调度,防止多线程操作的信息同 ...

  7. WSF操作系统抽象层学习笔记(四)---定时器

    定时器 定时器的实现方式: 使用OS自带的定时器模块,建立一个定时器,定时间隔为自定义TICKS,定时器的回调函数中设置定时器到时的事件. 定时器模块定义了一个定时器的链表,用于定时器的管理. 操作定 ...

  8. zigbee之OSAL操作系统

    概述 OSAL(Operating System AbstractionLayer),即操作系统抽象层. OSAL是一种基于事件驱动的轮询式操作系统,所提供的管理功能有: (1)任务登记.任务初始化. ...

  9. OSAL操作系统实验学习笔记04

    相信很多人接触了OSAL操作系统之后对它的任务资源分配机制还是很模糊,我细看了很多遍也还是略知一二,现在分享一篇我觉得写得特别好的文章. 深入浅出Z-Stack OSAL多任务资源分配机制 一 概述 ...

最新文章

  1. DSP学习 -- cJSON使用教程
  2. 均值滤波 中值滤波 高斯平滑滤波
  3. 架构师之路:从码农到架构师你差了哪些
  4. “局域网聊天”开始了
  5. Cuyahoga 添加模块
  6. 打磨锤子计算机专业,工大金课 | 在北工大校园里,磨一把“工大锤”
  7. 台积电:无法回应检调中的案件,不评论单一客户特定订单
  8. 计算机仿真电路实验感想,电路计算机仿真 实验报告.doc
  9. 使用 imitator 实现前后端分离开发中的数据模拟与静态资源映射
  10. Python 爬虫从入门到进阶之路(四)
  11. 毕业生登记表特长填写计算机,大学生毕业登记表中有何特长该怎么填啊。
  12. 视频编解码硬件加速器分类
  13. 三维点云——数据标注
  14. Bagging你真的懂吗
  15. 全国计算机软考网络管理员考试大纲(2012)
  16. java内存模型浅析_浅谈java内存模型
  17. androidQ系统新特性
  18. 疫情过去女朋友想去重庆玩,python批量爬取小猪短租重庆民宿信息
  19. 纸上谈兵: 图 (graph)
  20. CES展会的技术亮点奠定2017年各个行业的基调

热门文章

  1. 中国悍马“猛士”登场,国产电动车为啥掀起了硬派越野风?
  2. 深入浅出Mybatis-分页
  3. 聊聊ThoughtWorks面试(郑大版 社招)+ PS:应届生简单流程介绍
  4. OPPO A59s刷机包_OPPOA59s线刷包刷机教程
  5. PWM 实现调光——测试pwn的功能
  6. 伯克利摘得最佳论文,陈丹琦、杨笛一等华人团队获杰出论文,ACL2022奖项公布...
  7. 初识HTML,最基础走起~
  8. 2022版u-boot启动分析笔记之一(start.S与lowlevel_init.S)
  9. 12-机械键盘和普通键盘的区别
  10. QSlider功能作用和信号