用户工具

站点工具


icore

DAM904D 双通道高速DAC模块

【以下是临时测试内容】

介绍

在介绍互斥信号量前,我们先简单地描述一下什么是优先级反转。使用实时内核心,优先级反转问题是实时系统中出现得最多的问题。假设任务H优先级高于任务M,任务M优先级高于任务L。任务H和任务M处于挂起状态,等待某一事件发生,任务L正在运行。此时,任务L要使用共享资源。使用共享资源之前,首先必须得到该资源的信号量。任务L得到了该信号量,并开始使用该共享资源。由于任务H的优先级高,它等待的事件到来之后剥夺了任务L的CPU使用权,任务L被挂起,任务H开始运行。运行过程中任务H也要使用那个任务L正在使用着的资源,由于该资源的信号量还被任务L占用着,任务H只能进入挂起状态,等待任务L释放该信号量。任务L得以继续运行。由于任务M的优先级高于任务L,当任务M等待的事件发生后,任务M剥夺了任务L的CPU使用权并开始运行。处理它该处理的事件,直到处理完之后将CPU控制权还给任务L。任务L接着运行,直到释放那个共享资源的信号量。直到此时,由于实时内核知道有个高优先级的任务(任务H)在等待这个信号量,内核做任务切换,使任务H得到该信号量并接着运行。

  在这种情况下,任务H优先级实际上降到了任务L的优先级水平。因为任务H要等,一直等到任务L释放占有的那个共享资源。由于任务M剥夺了任务L的CPU使用权,使任务H的状况更加恶化,任务M使任务H增加了额外的延迟时间。任务H和任务M的优先级发生了反转。

  任务优先级反转是不允许出现的,因为它可能会造成不可预期的严重后果,因此uC/OS-II提供了一种特殊的二值信号量——互斥信号量,它能够顺利地解决这种现象。

资源特性

在介绍互斥信号量前,我们先简单地描述一下什么是优先级反转。使用实时内核心,优先级反转问题是实时系统中出现得最多的问题。假设任务H优先级高于任务M,任务M优先级高于任务L。任务H和任务M处于挂起状态,等待某一事件发生,任务L正在运行。此时,任务L要使用共享资源。使用共享资源之前,首先必须得到该资源的信号量。任务L得到了该信号量,并开始使用该共享资源。由于任务H的优先级高,它等待的事件到来之后剥夺了任务L的CPU使用权,任务L被挂起,任务H开始运行。运行过程中任务H也要使用那个任务L正在使用着的资源,由于该资源的信号量还被任务L占用着,任务H只能进入挂起状态,等待任务L释放该信号量。任务L得以继续运行。由于任务M的优先级高于任务L,当任务M等待的事件发生后,任务M剥夺了任务L的CPU使用权并开始运行。处理它该处理的事件,直到处理完之后将CPU控制权还给任务L。任务L接着运行,直到释放那个共享资源的信号量。直到此时,由于实时内核知道有个高优先级的任务(任务H)在等待这个信号量,内核做任务切换,使任务H得到该信号量并接着运行。

  在这种情况下,任务H优先级实际上降到了任务L的优先级水平。因为任务H要等,一直等到任务L释放占有的那个共享资源。由于任务M剥夺了任务L的CPU使用权,使任务H的状况更加恶化,任务M使任务H增加了额外的延迟时间。任务H和任务M的优先级发生了反转。

  任务优先级反转是不允许出现的,因为它可能会造成不可预期的严重后果,因此uC/OS-II提供了一种特殊的二值信号量——互斥信号量,它能够顺利地解决这种现象。

接口布局和尺寸

  == 接口布局 ==
  == 机械尺寸 ==

快速入门

  1. 准备工作
  2. 安装开发软件
  3. 使用调试工具
  4. 更新日志
icore.txt · 最后更改: 2019/04/04 10:10 由 xiaomagee