rtos基础知识1:PendSV异常
一、本文内容与前置知识点
1. 本文内容
介绍freertos中任务切换中PendSV的作用
2. 前置知识点
有使用过rtos操作系统
二、PendSV简介
SVC-SupervisorCall:系统调用
PendSV:可挂起的系统调用
和SVC不同,可以在高级的异常内进行设置,但不会立刻执行该异常,而是会在所有的中断处理完成后在执行。对于上下文切换非常重要。
根据以下三个场景的迭代可以看到PendSV的用处。
1. 理想的上下文切换
两个同优先级的任务按照时间片调度,在每个systick中断中,轮流切换。
2. IRQ中断请求时出现systick中断
中断的时候回到线程状态,导致中断处理被打断,此时还处于中断的过程当中,中断时效性无法保证。
3. PendSV解决中断下返回线程状态的问题
SVC和PendSV都设置最低的中断优先级,SVC系统调用会挂起一个PendSV,systick中断中也会挂起一个PendSV,任务的上下文切换实际在PendSV中执行,保证上下文切换不会影响到IRQ中断请求。