摘要:
什么是协程 协程(Coroutines)是一种比线程更加轻量级的存在,协程可以理解为一个特殊的函数,这个函数可以在某个地方挂起去执行别的函数,并且可以返回挂起处继续执行。一个线程内可以由多个协程来交互运行,但是多个协程的运行是绝对串行的,也就是说同一时刻只有一个协程在运行,当一个协程运行时,其它的协 阅读全文
摘要:
1、在链接脚本,输出段data内新增一个输入段 2、设置代码的段属性为data段,而不是text 阅读全文
摘要:
最少剩余可用任务栈 函数 uxTaskGetStackHighWaterMark() 可用于获取任务的最少剩余可用栈 #if ( INCLUDE_uxTaskGetStackHighWaterMark == 1 ) UBaseType_t uxTaskGetStackHighWaterMark( T 阅读全文
摘要:
基本概念 操作系统中CPU使用率是在软件架构设计中必须要考虑的一个重要性能指标。它直接影响到程序的执行时间以及优先级更高的任务能否实时响应的问题。而CPU使用率也不能过低,避免资源浪费。 统计方法 FreeRTOS操作系统是使用任务的累计运行时间来统计每一个任务自系统开始运行到当前时刻的CPU占用时 阅读全文
摘要:
运行队列 Linux采用的是每个CPU都有自己的运行队列,这样做的好处:(1)每个CPU在自己的运行队列上选择任务降低了竞争;(2)某个任务位于一个CPU的运行队列上,经过多次调度后,内核趋于选择相同的CPU执行该任务,那么上次任务运行的变量很可能仍然在这个CPU缓存上,提高运行效率。 __sche 阅读全文
摘要:
https://blog.csdn.net/weixin_45030965/article/details/126372601 阅读全文
摘要:
如下为唤醒进程的API,执行内容如下: 给待唤醒进程选择一个合适的CPU 将待唤醒进程放入选定CPU的运行队列,每个CPU都有一个运行队列 判断当前进程是否应该被待唤醒进程抢占,如果应该,置位当前进程的 TIF_NEED_RESCHED 标志 int wake_up_process(struct t 阅读全文
摘要:
preempt_disable() local_irq_disable()/local_irq_save(flags) spin_lock() spin_lock_irq()/spin_lock_irqsave(lock, flags) spin_lock()会调用preempt_disable() 阅读全文
摘要:
关调度器 void vTaskSuspendAll( void ) { /* A critical section is not required as the variable is of type BaseType_t. Please read Richard Barry's reply in 阅读全文
摘要:
互斥锁相比于二值信号量,有以下特点: 1、通过优先级继承,防止优先级反转 2、只有互斥锁持有的线程可以释放互斥锁 3、FreeRTOS 提供支持递归版本的互斥锁 创建互斥锁 互斥锁使用的描述符是队列的描述符,不单独定义互斥锁描述符。 初始化时,指定队列的长度 pxNewQueue->uxLength 阅读全文