PSOS的应用程序通常分割为一组任务和中断服务程序(ISR)。为实现任务到任务以及ISR到任务的通信、同步和互斥, pSOS提供三种机制:消息队列、事件和信号量。 消息队列          消息队列由q_create调用创建,输入参数有用户指定的名字和几个特征, 包括任务等待队的排队规则是FIFO还是优先级、消息队列长度是否受限以及消息 缓冲区是否私有等。消息队列具有两类用户,即发送者和接收者,它们可以是任务或ISR。          发送消息的调用有三种:q_send,q_urgent和q_broadcast。当消息到达队列时没有等待任务,则拷贝到消息缓冲区,然后将其插入消息队列。q_send将消息插入消息队列之尾,q_urgent则将其插入队列之首。q_broadcast将消息广播给所有正在等候的任务,这是用单个系统调用唤醒多个任务的有效 手段。          从消息队列中接收消息的唯一调用是q_receive,若当时没有消息,则任务可直接等待、超时等待或无条件返回。如任务直接等待,则按FIFO或优先级顺序排入等待队列。          消息是固定长度的含有4个长字的结构。消息的内容可以 装载数据、数据指针、数据尺寸、发送任务的Tid,响应队列的Qid(消息队标识)或上述诸项的某些组合,它也可纯粹用来同步而不带任何消息。 当消息到达队列而无等待 任务,消息需拷贝到消息缓冲区并排入消息队。消息缓冲区为五个长字,增加的那个长字由pSOS+用作链指针域。 事件          pSOS提供一组由事件同步的机制,每个任务均有32个事件标志,构成一个按位操作的32位字。其中的高16位保留给系统使用,低16位事件标志完全由用户定义。         任务之间和任务与ISR之间由事件来同步的系统调用有:                 ev_receive 获取或等候事件                 ev_send 将事件发送到指定任务         ev_send用来把一个或几个事件发送给另一任务,而任务可通过ev_receive去获取一个或几个属于自已的事件,而且可选择等待、带时超的等待或不等待。事件的一个重要特点是任务可以等待一个事件、几个事件中的一个或者几个事件中的全部。         任务和ISR均可将一个或几个事件送往另一任务,若目标任务并未等待事件或 它所等事件与送来的事件不符,则ev_send将这些事件位打开,即使它们挂起;若目标任务正在等待送来事件中的一些或全部,则等待任务解锁并进入就绪,而其余不匹配的事件仍被挂起。 事件与消息的不同之处有:             (1) 事件可用于任务同步,但不能直接携带信息;             (2) 事件是点对点的,即必须指明具体接收任务,而消息是送往消息队列的,不需要了解具体接收任务,因此可以多点对多点。             (3) ev_receive一次可等待多个事件,而q_receive一次只能从消息队中接收一条消息。             (4) 消息可自动缓冲和排队,而事件既不计数也不排队。若一个事件已经挂起而第二个同类事件送往同一任务,则第二事件将丢失 信号量          pSOS提供一组熟悉的信号量操作,有关的系统调用有:                    sm_create 创建信号量                    sm_ident 获取信号量ID                    sm_delete 删除信号量          sm_p 获取或等待信号量          sm_v 返回信号量          信号量由sm_create动态创建,其输入参数有用户指定的名字、初始计数和几个特征,包括等待任务的排队规则是FIFO还是优先级;返回信号量标识(SMid)。初始计数应该反映该资源可占用的有效标签数。          PSOS提供两个传统的P和V操作。sm_p请求使用信号量,若信号量计数非零,则其值减1,同时操作成功;否则,调用任务可选择等待、带超时等待或直接返 回,如果选择等待,则按FIFO或优先级顺序排队。          sm_v返回信号量,若无任务等候,则信号量计数增一。若有任务等待,则等待队列的第一个任务脱离等待队列并变为就绪。

PSOS通信,同步,互斥相关推荐

  1. 多进程与多线程通信同步机制

    多进程通信方式 管道pipe:管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用.进程的亲缘关系通常是指父子进程关系. 命名管道FIFO:有名管道也是半双工的通信方式,但 ...

  2. windows多线程同步互斥--总结

    2019独角兽企业重金招聘Python工程师标准>>> 秒杀多线程面试题系列 参考JustDoIT -- 大部分内容 <Windows核心编程>线程同步对象速查表 对象 ...

  3. python并发处理机制_Python并发编程—同步互斥

    同步互斥 线程间通信方法 1.通信方法:线程间使用全局变量进行通信 2.共享资源争夺 共享资源:多个进程或者线程都可以操作的资源称为共享资源.对共享资源的操作代码段称为临界区. 影响 : 对共享资源的 ...

  4. 线程同步互斥机制--互斥锁

    目录 前言 一.互斥锁是什么? 二.互斥锁的使用 三.代码实现过程 1.初始化互斥锁 2.互斥锁上锁 3.互斥锁解锁 4.互斥锁释放 5.代码示例 四.死锁 前言 线程通信只需要操作共享的进程数据段即 ...

  5. python线程死锁的原因,浅谈Python线程的同步互斥与死锁

    线程间通信方法 1. 通信方法 线程间使用全局变量进行通信 2. 共享资源争夺 共享资源:多个进程或者线程都可以操作的资源称为共享资源.对共享资源的操作代码段称为临界区. 影响 : 对共享资源的无序操 ...

  6. Python之线程的同步互斥与死锁

    线程间通信方法     1. 通信方法 线程间使用全局变量进行通信     2. 共享资源争夺 共享资源:多个进程或者线程都可以操作的资源称为共享资源.对共享资源的操作代码段称为临界区. 影响 : 对 ...

  7. python同步锁和互斥锁的区别_浅谈Python线程的同步互斥与死锁

    这篇文章主要介绍了浅谈Python线程的同步互斥与死锁,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 线程间通信方法 1. 通信 ...

  8. Linux学习06——线程控制与同步互斥

    概述 学习目标: 理解线程概念和并发特征,分辨线程与进程的区别与联系 掌握多线程应用编程技术,掌握线程间数据传递基本方法 掌握共享变量识别方法,理解多线程访问共享变量可能带来的问题 理解临界资源.临界 ...

  9. MFC多线程同步互斥

    MFC多线程同步互斥[转载] http://blog.sina.com.cn/s/blog_62d15fb601017dhn.html https://www.cnblogs.com/zhanghu5 ...

  10. python 同步 互斥 信号量 锁 简介

    目录 进程间的信号 信号量(信号灯) 进程的同步互斥 Event事件 Lock 锁 进程间的信号 信号是唯一的异步通信方法 一个进程向另一个进程发送一个信号来传递某种信息,接受者根据传递的信息来做相应 ...

最新文章

  1. 实现800*600,1024*768两套分辨率方案
  2. 中国研制出首款搭载寒武纪AI芯片的人工智能服务器
  3. 全程360°4K!CNN将VR直播美国超级日全食
  4. 什么是Java内存模型中的happens-before
  5. 分享:根据svg节点对象类型和路径值转换坐标值
  6. 物流广告收入实现高速增长 国际投行看好京东转型潜力
  7. 实现财务自由-《富爸爸穷爸爸》读书语句摘抄
  8. Linux CH340驱动安装
  9. pic单片机c语言 程序,单片机教程:PIC单片机C语言程序设计(一)
  10. 服务器断电后可以自动开机吗,想要服务器断电后自动开机,怎么设置?
  11. centos(11)-ps进程管理
  12. JPA Spring Data JPA详解
  13. 如何将图片验证码转换为文字,图片识别。
  14. 分享 82个实用的前端开发工具
  15. 【如何打败“MySQL“的左膀右臂?知己知彼,百战百胜】——熟读DDL和DML两兄弟“内心“
  16. GCMail邮件服务器对“超级工厂”病毒攻击采取了哪些防御措施
  17. 如何计算产生SPWM所需要的占空比
  18. GLaDOS加速网络套餐edu教育网邮箱免费使用
  19. 2018计算机考研参考答案,2018年计算机考研真题及参考答案
  20. 牛客网刷题 入门篇 基础语法

热门文章

  1. Java的final修饰符
  2. cesium 路径漫游
  3. 00003 不思议迷宫.0009.4:攻防计算
  4. 零知识证明-入门学习笔记(五)
  5. APP设计师拿到APP产品原型开始,七步搞定APP设计(转)
  6. 留学面试 计算机专业话题,香港计算机相关专业面试如何准备?
  7. php外翻截骨术,膝外翻截骨术
  8. 探索互联世界的灯光艺术:FastLED库详细介绍及应用实例
  9. Mininet学习教程——创建Topo
  10. 表演复读生的王炸班型——薪火表演·独角兽班开课介绍