实时操作系统(RTOS)基础框架梳理——快速入门(基础理论篇)

UCOS快速入门(基础理论篇)

简述

  文章主要使用通俗易懂的语言介绍了实时操作系统(RTOS)所涉及的核心部件知识,可以让你快速对ucos操作系统全方位有一定的了解。适合想入门操作系统或者在学习操作系统课程的小伙伴。
  然后文章会对STM32F103上的ucosII基础代码进行简单分析,并给出使用ucos的基本方法,能够让读者快速使用ucos进行开发。
注:该篇文章分为两部分发布,第一篇即RTOS基础框架构建(理论),第二篇则为如何在STM32平台上开发使用UCOS(应用)。

从“任务”开始一步步看清操作系统


1、任务机制

  和字面意思一样,即操作系统需要去执行的东西即为任务。正如你手机上使用的各种APP,假如现在你需要使用CSDN你的步骤应该是:
开机你的安卓手机(初始化操作系统)->下载CSDN(任务的创建)->打开CSDN(任务的运行)。
这就类似一个最简单的“单任务”操作系统的工作模式。

  当然,只要手机是保持开机状态,你就可以不断的下载APP,并同时运行多个应用程序。在宏观上ucos也可以做到这点,只不过灵活性没那么高而已。我们应当知道,普通单片机程序都是从头执行到尾,最多产生中断去紧急处理一下事情。而是ucos如何做到多任务“同时”运行的呢?

2、分时复用

  分时复用即将一个时间段分成若干个时间片,在不同的时间片里可以执行不一样的任务。(比如一秒钟分成一百份即十毫秒一个时间片,两个任务的话奇数时间片时执行a任务,偶数时间片时执行b任务)其中实现的原理也并不算复杂,粗暴都说就是中断与函数的配合使用,在此不做深究。
  我们知道多个人在一起总会存在各种各样的交集,任务也一样,多个任务同时存在时难免会需要互相协同,互相依赖,或出现互相竞争,争抢资源等情况。为了使系统有条不紊并且高效的运行下去,产生了任务优先级(即优先级越高的任务具有优先执行权)以及事件机制
在这里插入图片描述

3、事件(event)

  在ucos中事件包含很多种,我们分别按照任务间互相协同,互相依赖,互相争斗来进行简单介绍。
在这里插入图片描述

互相协同

邮箱(mbox)
  直译即消息盒子,即一个可以将自己的一些不同类型数据进行打包成一个邮件,发给其它任务的一种工具。
旗标(flag)
  即类似于标记,当你的电脑高速运转,cpu内核达到一定温度,用于检测cpu温度的任务就会在flag上的某个位进行标记,散热风扇察觉到这个标记后即加快散热。

互相依赖

即各事件的阻塞式访问。
  非阻塞:你给我的文章评论了,并且希望得到回复,然后立刻你就不等了打开了刺激战场。
  阻塞:我在等着回复你的评论,你还没有评论,我一直在CSDN等着你。直到你评论了我回复完才离开。


互相争斗

互斥锁(mutex)
  系统存在某些共享资源,所有任务都可以访问它。正如QQ和微信都需要获取手机的摄像头资源(外部设备)一样,摄像头资源就是系统的共享资源。你可以尝试在进行QQ视频同时再去打一个微信视频,显然是不能使用的。这就类似一把互斥锁,资源只有一把钥匙,当一个任务获取了某个共享资源(拿到钥匙),其他任务就无法得到它,必须等到钥匙被还回来才能继续去访问。
在这里插入图片描述


信号量(semaphore)
  信号量与互斥锁类似,都是起到对共享资源的保护作用。只不过信号量保护的共享资源存在多把钥匙,可同时被多个任务访问。当然,如果钥匙被拿光了,再想获取必须等到其他任务还回钥匙才行。


  由于每个任务被各种各样的事件(event)控制着,我们根据它们的主要特性对它进行了分类命名,因此任务状态出现了。

4、任务状态

运行态,就绪态,挂起态,休眠态。

就绪(Ready):该任务在就绪列表中,就绪的任务已经具备执行的能力,只等待调度器进行调度,新创建的任务会初始化为就绪态。 (已经有飞机票了,等待飞机来接你去旅游)

运行(Running):该状态表明任务正在执行,此时它占用处理器,调度器选择运行的永远是处于最高优先级的就绪态任务。 (已经在飞机上)

阻塞(Blocked):任务当前正在等待某个事件,比如信号量或外部中断。 (等待出飞机票,才能去等飞机,最后才能坐飞机)

挂起态(Suspended):处于挂起态的任务对调度器而言是不可见的。(没兴趣去坐飞机)
在这里插入图片描述


上文中有提到就绪列表及调度器,为保证文章的易懂性,在此我们也简单介绍一下。


就绪列表
可简单认为是一个表格,里面存放着处于就绪态的任务,当要调度是会从这里寻找优先级最高的那一个去运行。在ucosII中使用的技巧是静态内存加链表组合构建的。
调度器
负责自动进行任务分割、程序流折断、现场上下文保护等。

自此,一个简化版的操作系统在你的脑海里成型了。只有当某个事物在心中成型的时候,你才能够懂得如何去学习这个事物

注:有任何疑问或想深入学习ucos某个部分,并觉得本人语言表述还算OK,可在评论区留言,我将优先考虑发布该类文章。想尝试深入了解学习ucos,可关注我,UCOS文章正在实时更新中
在这里插入图片描述

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值