嵌入式实时操作系统μC OS原理与实践 [卢有亮] 第一章 笔记

在STM32 使用的ARM Cortex处理器中,具有主堆栈MSP和进程堆栈PSP。
具有PendSV和Systick中断
这些很明显是配合了 ucos 操作系统的。
在这里插入图片描述

第1章 实时操作系统基础

本书详细讲解了ucos 2.91 并分析了最新的ucos3.0 ,还给出了在嵌入式环境下的移植和应用的实例。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
任务有睡眠,就绪,运行,阻塞,挂起等多种状态。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
信号量的含义,就是 消费者 等待 信号处于休眠,当生产者准备好资源的时候,消费者任务,立马进入最高优先级的调度序列。立马进行系统切换。

信号量的PV操作
线程池不也是这样 5个线程池 满了就等待

你实现一下,线程池,里面有互斥量,条件变量,

比如是 来了 3辆车 ,想停车 ,这样会启动3个线程,负责停车这个任务,每个线程都是等待信号量,得到信号量之后,进入停车这个动作

仔细思考一下 停车场 停车问题?

多个不同的车,在同一个停车场的 不同的 多个入口,进入停车场。
停车场的车位数是确定的。
这个系统怎么设计呢 ?

参考一下 线程池源码 和 《操作系统》 这本书中的 信号量 有关讨论章节。

互斥信号量 优先级反转

互斥信号量 优先级反转的问题:
假设系统中有3个任务:A,B,C
初始化的时候,A的优先级为1,B的优先级为2,C的优先级为3.
数字越小 优先级 越高。
A > B > C

有一个互斥资源BUFF。
A任务功能是 : 休眠2s中,访问一下 BUFF,耗时5s,
B任务功能是 : 休眠3s,执行打印log 操作。
C任务功能是:休眠4s,访问一下BUFF,耗时5s。

那么,A,B 都处于休眠的时候,任务C得到执行。访问BUFF,的时候。
此时 来了 一个tick中断,正好可以唤醒 任务B。
那么任务B得以执行,任务B执行的时候,来了一个tick中断,唤醒A,
A继续执行,去访问BUFF,此时由于BUFF被任务C占用,任务只能是阻塞在这里。
由于任务B的优先级高,就运行任务B,等任务B执行完,进入休眠,才能运行任务C。
任务C继续执行,只有等待任务C执行完之后,任务A ,才能得以继续执行。

在这里插入图片描述
消息邮箱 有 保存的是 一个 全局变量 数组的地址。
类似malloc 申请的 内存的指针,放入消息邮箱中。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

时钟中断

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

任务

在这里插入图片描述
(这个任务 有空做一下)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值