OSAL(操作系统抽象层)

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值