在OSE运行的APP进程均有一个PCB结构体,结构体中包含了指向该进程signal list的指针,是一个链表,实际上是指向链表的头指针与尾指针,头指针结构中包含指向下一个signal的next指针。其他进程向该进程发送的消息,将用此链表维护。

PCB:

/* Signal buffers head of list.*/
    struct sigbuf *sigbuf_head;

/* Signal buffers tail of list.*/
    struct sigbuf *sigbuf_tail;

sigbuf_head:

/* Next signal in the list.*/
    struct sigbuf *next;

进程一旦启动,就进入while循环(Loop forever),msg_receive会调用OSE的receive系统函数接收消息。如果循环又从头开始执行,这时会通过msg_receive进入系统调用receive函数,receive函数执行有两种情况:

1,如果此时该进程的signal list不空,函数将取出链表头指针指向的signal,然后再调整下signal list,将链表的头指针指向signal list的下一个signal,最后返回取出的signal。

2,如果发现该进程的signal list是空的,函数将在判断signal list为空的分支代码处puts this process to sleep via system call "odo_wait". 在该进程sleep过程中,如果有A进程向该进程发送消息,OSE的send系统函数将会把消息挂到当前进程的signal list中,并且如果A进程优先级低于当前进程,会触发OSE从A进程切换到当前进程执行(OSE进程抢占式调度方式),然后当前进程继续从上次sleep代码处指向,在receive函数中对signal list遍历的for循环的下一次执行中,将会得到A进程所发的signal,并返回。

while(true)
{
      msg = msg_receive(WAIT_INFINITE);
      handler(msg);
      release(msg);
}

OSE RTOS中APP进程接收消息机制相关推荐

  1. freeswitch和sofia-sip中关于sip的消息机制

    Sofia-sip内部使用消息队列的方式对sip协议进行处理,sofia-sip和application之间是通过reactor模式进行通信,即通过回调实现,本文主要关注sofia-sip内部消息队列 ...

  2. Android中app进程ABI确定过程

    更多干货,请关注微信公众号: tmac_lover 所谓的ABI全称是application binary interface,是一个机器语言级别的接口,描述的是二进制代码之间的兼容性,也就是说一起工 ...

  3. Unity中简单粗暴的消息机制(可限制消息调用次数)

    上代码 /********************************************************文件: EasyMsg.cs作者: 阿飞日期: 2022年02月15日_09: ...

  4. Android中使用Handler(消息机制)造成内存泄露的分析和解决

    问题描述: Handler 内部类持有 外部类Activity的引用,如果Activity退出而Handler还有延迟处理的消息没有处理完,会导致Activity不能回收,反复如此会导致内存泄露. 解 ...

  5. 从源码解析-Android中Zygote进程是如何fork一个APP进程的

    zygote进程fork子进程 前言 强烈推荐 进程创建流程 APP启动第三方应用 startActivity startService sendBroadcast ContentResolver.q ...

  6. APP推送消息测试点分析

    APP推送消息测试点分析 1.虽然以前学测试的时候接触一点消息推送测试点,但是自己理解和掌握的测试点还不够深,由于工作需求,这两天深入了解和学了一下APP推送消息是什么,怎么测的问题 设计好的推送消息 ...

  7. android p获取通话记录_Android 底层的进程间同步机制

    作者:Android面试官 进程间通信的经典实现 进程间通信(Inter-process communication,IPC)指运行在不同进程中的若干线程间的数据交换,可发生在一台机器上,也可通过网络 ...

  8. mfc编程消息机制中消息汇总

    做VC开发必须熟悉消息机制,笔试面试重点,自己在这方面很欠缺,搜集学习一下 WM_CREATE CreateWindow 初始化工作 GetMessage 遇到WM_QUIT,程序结束 Dispatc ...

  9. RTOS中的消息队列的原理以及应用

    消息队列的原理 RTOS中的消息队列是一种用于任务间通信的机制,它可以实现任务之间的异步通信,从而实现任务间的解耦.消息队列是一个先进先出的数据结构,任务可以向队列中发送消息,也可以从队列中接收消息. ...

最新文章

  1. C++ 字符串字母大小写转换
  2. xend: No such file or directory. Is xend running? 问题
  3. ajxa异步请求数据
  4. 方立勋_30天掌握JavaWeb_JSTL标签库
  5. 全国计算机等级考试题库二级C操作题100套(第86套)
  6. sqlserver oracle插件,SQLServer链接服务器至Oracle
  7. 客户端Blazor中的应用程序设置
  8. 《Scala机器学习》一一
  9. scala几种循环判断语句_Scala循环控制语句– while,while和for循环
  10. VC++6.0选择打开文件命令时停止工作解决方法
  11. 如何判断 DataRow 中是否存在某列????
  12. R语言预测shibor走势:prophet
  13. 四种软件开发模式(瀑布、迭代、螺旋、敏捷),对比分析
  14. 方法重载和重写的区别
  15. c语言pow函数原型_c语言pow的用法
  16. ios 设置导航栏背景色
  17. 扇贝单词里有计算机英语吗,扇贝单词英语版电脑版
  18. html怎么做向下的图标,用CSS和Bootstrap图标制作上下跳动的指示箭头动画效果
  19. 字节跳动后端面经(17)
  20. webrtc 搭建直播平台

热门文章

  1. 没关系,前端还死不了
  2. 【技术】PWA实践 - 应用激活与安装
  3. [Daimayuan] 巨大的牛棚(C++,矩阵前缀和)
  4. MS10-073微软Windows内核Win32k.sys键盘布局本地提权漏洞 fix poc
  5. 使用二进制位来控制权限,表设计
  6. STM32系列后缀的意思
  7. 塑料保鲜膜效果模拟:ABC文件用BlendShape导出到mayaUnity
  8. 数据迁移工具/平台大全
  9. 老板,你跨界了吗?     ——今目标企业工作平台为您跨界工作提供有效支撑...
  10. Vue + Element UI 实现权限管理系统 前端篇(九):接口格式定义