实时操作系统与多线程.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实时操作系统与多线程

20 7.6 消息队列作为线程间通信的示例系统 行为1休眠 2个时钟节拍 行为2 将计数信息发送到 队列中并等待 5个时钟节拍 行为3等待4个 时钟节拍 活动4 发送计数消息到 队列中并等待 3个时钟节拍 优先级为 5 时 Speedy_Thread 的行为 行为5 从消息队列中 接收消息并等待 12个时钟节拍 行为6等待8个 时钟节拍 行为7从消息 队列中接收消息 并等待 11个时钟节拍 行为8等待9个 时钟节拍 优先级为 15 时 Speedy_Thread 的行为 在本例中,将使用一个消息队列作为两个线程间的通信方式。 10 八 中 断 什么是中断 ? Interrupt Interrupt Request 22 8.1 什么是中断 中断是微处理器处理外部突发事件的一个重要技术。 它能使处理器在运行过程中对外部事件发出的中断请求(IRQ)及时地进行处理,处理完成后又立即返回断点,继续进行原来的工作。 引起中断的原因或者说发出中断请求的来源叫做中断源。 异常: 异常是指扰乱县城处理正常流程的一步事件或错误条件。 中断流程 中断产生源 ? 中断向量表 ? 中断入口 ( 一般简单处理后调用相应的函数) ? 后续处理?返回 异常: 由执行指令后造成的直接影响产生。 由执行指令后造成的负面影响产生。 由与执行指令无关的外部中断产生。 35 以ThreadX为例,IRQ中断处理开始于0x18地址,在此地址上通常是如下一条指令: B __tx_thread_context_save __tx_irq_processing_return 8.2 IRQ中断处理 LDR pc, =__tx_irq_handler IRQ中断处理函数 这条指令设置PC值为ThreadX的IRQ处理函数__tx_irq_handler的地址。 /*跳转到上下文保存函数保存系统上下文*/ BL application_irq_handler BL application_irq_handler /*在这调用应用程序的ISR*/ /*跳转到上下文恢复函数恢复系统上下文*/ Thank You . 10 四 互 斥 量 4.1 互斥量介绍 什么是互斥量? 11 很多情况下,需要保障线程独自访问共享资源或者临界区。可能几个线程都想访问这些资源,所以必须同步他们的行为,以实现独占式的访问。 互斥量是专门被设计用来提供互斥的访问,从而避免线程间冲突和不希望的交互的方法。 互斥量是一种公共资源,在指定的时间内,它只能被一个线程占有,而且占有它的线程可以发福申请这个互斥量。 该线程也必须释放这个互斥量同样次数,该互斥量才能再次变为可用。 介 绍 4.2 保护临界区 12 代 码 区 线 程 用互斥量保护一个临界区 互 斥 量 保护临界区 临界区是一段代码,在执行时不能被其它线程打断,用互斥量可以实现这个目标。 图中代码区为一个临界区。 34 4.3 提供对共享资源的互斥访问 互斥量 1 线 程 互斥量 2 共享 1 共享 2 共享资源 共享资源 互斥量也可以提供对共享资源的互斥访问。 一个线程在访问受保护资源前必须得到互斥量。 如果线程相对多个资源进行独占访问,那必须为每个资源提供一个互斥量。 访问后释放 4 4.4 互斥量控制块(MCB) 域 描 述 tx_mutex_id 控制块ID tx_mutex_name 指向名字的指针 tx_mutex_ownership_count 所有权计数器 *tx_mutex_owner 指向拥有互斥量线程的指针 tx_mutex_inherit 优先级继承标志 tx_mutex_original_priority 拥有互斥量的原始优先级 tx_mutex_original_threshold 拥有互斥量的线程的原始抢占门限 *tx_mutex_suspension_list 指向挂起队列的指针 tx_mutex_suspended_count 挂起线程个数 *tx_mutex_created_next 指向下一个互斥量的指针 *tx_mutex_icreated_previous 指向前一个互斥量的指针 互 斥 量 控 制 块 互斥量控制块(MCB)是用来保存运行时互斥量状态的数据结构。 36 4.5 互斥量的相关服务函数 服务 描 述 tx_mutex_create 创建一个互斥量 tx_mutex_delete 删除一个互斥量 tx_mutex_get 申请得到互斥量 tx_mutex_info_get 获取一个互斥量的信息 tx_mutex_prioritize 把最高优先级的线程搬到互斥量挂起队列的最前面 tx_mutex_put 拥有互斥量的原始优先级

文档评论(0)

yurixiang1314 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档