
操作系统
文章平均质量分 80
非典型技术宅
这个作者很懒,什么都没留下…
展开
-
STM32上使用POSIX接口 (基于freertos)
STM32上使用POSIX接口 (基于freertos)絮絮叨叨:如果不是博客粉丝,我都快要遗忘公众号这回事了,感谢所有认真阅读的读者的支持!FreeRTOS 和 POSIX 接口简介POSIX 接口的全称是:可移植性操作系统接口(Portable Operating System Interface, POSIX)。它是由电器和电子工程师协会(IEEE)开发的开放操作系统接口标准,并且得到 IOS 和 ANSI 的认可。其主要目的是提升应用程序在各种 UNIX 系统环境之间的可移植性。使用 PO原创 2021-07-06 02:25:21 · 5302 阅读 · 6 评论 -
时间片轮询的任务调度方法(二)
时间片轮询的任务调度方法(二)调度器设计思路在上篇文章末,对时间调度的基本结构进行抽象。一个时间片轮询任务调度器(定时器调度),包括任务函数(func)、任务执行间隔(interval)、上次执行时间(last_time)三个核心参数。然后将所有待执行的任务节点(time_node)放到任务链表中。由上面的几个参数组成了调度器的数据结构:struct time_task{ uint32_t last_time; //上次执行时间 uint32_t interval;原创 2021-02-28 23:50:15 · 1673 阅读 · 0 评论 -
时间片轮询的任务调度方法(一)
时间片轮询的任务调度方法(一)使用场景在MCU开发的时候肯定会碰到和时间有关的任务,例如:每10ms刷新屏幕数据,每20ms检测按键状态,每100ms读取传感器数据,电机每1分钟运行10s后关闭。这些都是基于时间的任务,在未使用操作系统的时,有两种常见的做法:1. 使用flag记录当前任务执行状态(推荐指数:⭐)基本思路为:在开启一个定时器中断中,作为时钟源,在中断中判断时间是否到达,时间到达后将任务标志为置位。然后在main函数的超级循环中检查标志位状态。具体实现方式代码如下:int原创 2021-02-27 01:16:20 · 4128 阅读 · 0 评论 -
Ctrl OS设计随笔
Ctrl OS设计说明CPU抢占问题问题:系统任务调度核心使用协程进行处理,在处理CPU密集(大量数据运行)任务时,并不会主动出让CPU资源,会导致其他协程被饿死!解决这个问题不是协程关心的问题,更不是协程应该解决的问题。使用协程的核心是不用关心临界区并且提高任务切换效率。协程适合的是IO密集型任务,有大量任务需要等待IO数据,并且进行阻塞。在这种情况下CPU的占用率是很低的,主要时间是在IO等待上。对于上述问题的解决方法是使用线程,线程和协程并不是互斥关系,在需要进行对低优先级、高CP原创 2020-11-19 23:10:07 · 137 阅读 · 0 评论 -
Ctrl OS开发之libaco协程库
Ctrl OS开发之libaco协程库前言(废话)在linux环境搭建Ctrl OS的协程库是在网上找了几个协程库,现在发现两个协程库。一个是腾讯的libco,另一个是开源大佬的libaco。简单对比两个库之后,libco的功能比较完善,同时相对比较复杂,目前只需要使用协程的基本接口。无需太多的功能,故使用libaco库。libaco简介下面引自libaco的readme :下面是这个项目的简要介绍:除了一个生产级别的C协程库实现,还包含了一个详细的文档描述了如何实现一个 最快且正确原创 2020-10-27 22:55:26 · 809 阅读 · 0 评论