文章预览
前几天,有小伙伴问了这样一个问题: RTOS有很多任务,如果没有执行任务了,都在延时等待(如vTaskDelay),或等待事件触发(如xQueueReceive),CPU在干嘛? 从裸机转向RTOS的小伙伴, 不知道你有没有过这样的疑问? 裸机 vs 系统 裸机情况下,就是一个while死循环: int main(void) { /* 初始化 */ while(1) { /* 循环处理多项事情 */ } } 换上RTOS就是为了提高CPU利用率,使其执行多个任务(多个while): void Task1(void) { /* 初始化 */ while(1) { /* 处理事情1 */ } } void Task2(void) { /* 初始化 */ while(1) { /* 处理事情2 */ } } void Task3(void) void Task4(void) ...... 通过对比裸机和操作系统的区别,再结合开篇的问题,你能联想到什么? 裸机情况下,CPU永远都在while(1)大循环中。那么,在操作系统下,CPU除了执行任务中的while,其他时间 都执行到哪儿去了? 答
………………………………