[企业管理]ReWorks培训-核心功能分析.pptVIP

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

* * * 当生产者任务将生产的消息放到缓冲区后,要及时通知消费者任务 消费消息,使得两个任务同步,实现同步的机制主要有: 信号量:生产者通过获取和释放二进制信号量通知消费者任务消费消息。在多个任务需要同步情况下,可以通过计数信号量实现。 事件:生产者任务将消息放入缓冲区后,发送特定事件,消费者任务接收到该事件后开始运行。 消息队列:生产者任务将生产的消息放到指定消息队列中,消费者任务接收消息,实现任务同步。 同时,生产者任务和消费者任务都会访问存放消息的缓冲区,为了保 护缓冲区内容,只能让一个任务独占该资源,可以通过以下机制实现: 互斥信号量:特殊的二进制信号量,它支持所有权、递归访问、任务删除安全和一个或多个协议,以避免互斥固有的问题。 解决方法 3.2 任务通信 * 任务通信 信号量是任务同步的最主要手段,在一定程度上亦可提供互斥功能。 ReWorks下信号量被优化,是能够提供最快的任务间通信服务的机制。 信号量分类 二进制信号量:最快和常用的信号量,提供阻塞方式,用于实现同步或互斥; 计数信号量:类似于二进制信号量,记录信号量被释放的次数。适合于一个资源的多个实例需要保护的情况; 互斥信号量:互斥量是保护临界区资源、实现任务间互斥通信的主要手段。 保护临界区资源的主要措施 锁中断 锁任务,禁止任务调度 互斥信号量 信号量 3.2 * 任务通信 消息队列是应用动态创建的具有可变长度的缓冲区。消息的长度和存储在其中的内容都是用户定义的,可以是实际的数据、指针或空。通过它,任务和ISR发送和接收消息,实现带数据的通信和同步。 消息队列是系统管理的机构。队列允许任务传递可变长的消息。可使用队列进行几个同种资源的互斥访问。队列的长度相当于资源的数目,它决定了有多少个任务能够同时使用该资源。 消息队列 ReWorks的消息队列 3.2 * 任务通信 reworks内核提供一个特殊的寄存器作为每个任务控制块的一部分, 即事件(event)寄存器。它是一个属于任务的对象,并由一组跟踪指 定 事件值的二进制值事件标志组成。事件寄存器的长度为32bit,寄存器 中每一位作为二进制标志(事件标志),并可以被设置或 删除。 事件没有等待队列,每个事件只针对特定任务; 事件接口: (1)发送事件 u32 event_send(u32 id, u32 event_in); (2)接收事件 u32 event_recv( u32 event_in,u32 option_set,u32 ticks,u32 *event_out); 事件 3.2 * 任务通信 编程实例 事件(续) 事件(续) void task1() { …… /*发送事件给指定任务*/ event_send(task_id,OS_EVENT1); …… } void task2()/*接收事件任务*/ { …… /*接收指定事件*/ event_recv(OS_EVENT1,OS_ANY_EVENT,NO_TIMEOUT,events); /*如果接收到指定事件时,任 务进入就绪状态,否则,继续 等待*/ …… } 3.2 * 任务通信 信号是所谓的软件中断,在系统里经由一些软件的执行而产生。例如,在shell中执行ctrl-c操作可以终止shell里某个操作的执行。 信号 3.2 * * 1、当任务处于阻塞状态时收到信号; 2、任务离开阻塞队列,进入就绪队列,准备运行; 3、当任务成为就绪队列中的最高优先级任务时,执行信号处理程序; 4、信号处理程序执行完后,任务返回阻塞状态,保持原始超时信息不变。 信号处理流程 阻塞队列 就绪队列 ① ② 运行事件处理程序 ③ ④ 任务通信 3.2 * 任务通信 3.2 * 信号不适合于实现普通的任务间通信 信号处理程序的优先级太高,会阻塞其他任务的执行 打断了任务的正常执行顺序。最好创建两个任务,而不是在一个任务中通过信号控制 可能导致任务的重入问题:例如,运行信号服务程序的任务和运行正常代码的相同任务 可以用于告诉一个任务将其自身关闭 信号使用注意事项 * 培训大纲 时钟/定时器管理: 阐述ReWorks的系统时钟、时间、定时器等基本功能。 中断/异常管理: 描述ReWorks对于外部事件的中断响应方式,以及对于CPU异常的处理机制。 多任务管理 : 讲述ReWorks中对于多任务的调度机制,以及任务间共享资源以及同步的手段。 内存管理: 叙述实时系统中对于内存的管理方法,包括对于硬件MMU的支持。 1 2 3 4 5 总结: 通过几个上机分组实验对培训内容进行归纳总结。 * ReWorks内存地址分布结构(x86) 4.1 内存管理 * MMU内存管理 MMU功能 M

文档评论(0)

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

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

1亿VIP精品文档

相关文档