2、内核核心

举报
内核笔记 发表于 2021/06/08 22:53:45 2021/06/08
【摘要】 #内核核心实现: 临界区保护 调度锁保护 位图数据结构 多优先级任务 双向链表数据结构 任务延时队列 同优先级时间片运行 #1、临界区保护。 采用关闭中断的方式保护任务与任务之间、任务与中断之间的共享资源 由于有临界区的保护,所以即便是这中间中断产生,也不会立即响应中断。全局变量的的值会被正确修改。等待退出临界区时,才会响应中断,在中断中再修改全...

#内核核心实现:

  1. 临界区保护
  2. 调度锁保护
  3. 位图数据结构
  4. 多优先级任务
  5. 双向链表数据结构
  6. 任务延时队列
  7. 同优先级时间片运行

#1、临界区保护。

采用关闭中断的方式保护任务与任务之间、任务与中断之间的共享资源
由于有临界区的保护,所以即便是这中间中断产生,也不会立即响应中断。全局变量的的值会被正确修改。等待退出临界区时,才会响应中断,在中断中再修改全局变量最终不会导致冲突。

 // 进入临界区 uint32_t status = tTaskEnterCritical(); // 退出临界区 tTaskExitCritical(status);

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

进入临界区:

 /**********************************************************************************************************
** Function name:   tTaskEnterCritical
** Descriptions :   进入临界区
** parameters   :   无
** Returned value   :   进入之前的临界区状态值
	***********************************************************************************************************/
uint32_t tTaskEnterCritical (void) 
{
uint32_t primask = __get_PRIMASK();
__disable_irq();// CPSID I
return primask;
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

文章来源: xuesong.blog.csdn.net,作者:内核笔记,版权归原作者所有,如需转载,请联系作者。

原文链接:xuesong.blog.csdn.net/article/details/79256767

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。